4329: Look for `cargo`, `rustc`, and `rustup` in standard installation path r=matklad a=cdisselkoen
Discussed in #3118. This is approximately a 90% fix for the issue described there.
This PR creates a new crate `ra_env` with a function `get_path_for_executable()`; see docs there. `get_path_for_executable()` improves and generalizes the function `cargo_binary()` which was previously duplicated in the `ra_project_model` and `ra_flycheck` crates. (Both of those crates now depend on the new `ra_env` crate.) The new function checks (e.g.) `$CARGO` and `$PATH`, but also falls back on `~/.cargo/bin` manually before erroring out. This should allow most users to not have to worry about setting the `$CARGO` or `$PATH` variables for VSCode, which can be difficult e.g. on macOS as discussed in #3118.
I've attempted to replace all calls to `cargo`, `rustc`, and `rustup` in rust-analyzer with appropriate invocations of `get_path_for_executable()`; I don't think I've missed any in Rust code, but there is at least one invocation in TypeScript code which I haven't fixed. (I'm not sure whether it's affected by the same problem or not.)
|
||
|---|---|---|
| .. | ||
| src | ||
| .eslintrc.js | ||
| .gitignore | ||
| .vscodeignore | ||
| icon.png | ||
| package-lock.json | ||
| package.json | ||
| ra_syntax_tree.tmGrammar.json | ||
| README.md | ||
| rollup.config.js | ||
| tsconfig.json | ||
rust-analyzer
Provides support for rust-analyzer: novel LSP server for the Rust programming language.
See https://rust-analyzer.github.io/ for more information.