aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_project_model
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge #4329bors[bot]2020-05-084-17/+19
|\ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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.) https://github.com/rust-analyzer/rust-analyzer/blob/a4778ddb7a00f552a8e653bbf56ae9fd69cfe1d3/editors/code/src/cargo.ts#L79 I'm sure this PR could be improved a bunch, so I'm happy to take feedback/suggestions on how to solve this problem better, or just bikeshedding variable/function/crate names etc. cc @Veetaha Fixes #3118. Co-authored-by: Craig Disselkoen <[email protected]> Co-authored-by: veetaha <[email protected]>
| * | cargo fmtCraig Disselkoen2020-05-061-1/+5
| | |
| * | return a PathBuf instead of StringCraig Disselkoen2020-05-061-2/+3
| | |
| * | pull function out into new crate ra_env; use in ra_flycheck as wellCraig Disselkoen2020-05-065-71/+8
| | |
| * | more generic, find rustc as wellCraig Disselkoen2020-05-064-54/+71
| | |
| * | ra_project_model: look for Cargo in more placesCraig Disselkoen2020-05-062-9/+52
| | | | | | | | | | | | See #3118
* | | Move feature desugaring to the right abstraction layerAleksey Kladov2020-05-081-2/+12
| | |
* | | Merge #4296bors[bot]2020-05-072-2/+14
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 4296: Support cargo:rustc-cfg in build.rs r=matklad a=robojumper Fixes #4238. Co-authored-by: robojumper <[email protected]>
| * | Assume cargo_metadata uses String for cfgs soonrobojumper2020-05-052-10/+9
| | |
| * | Support build.rs cargo:rustc-cfgrobojumper2020-05-042-2/+15
| | |
* | | Merge #4166bors[bot]2020-05-052-5/+14
|\ \ \ | |/ / |/| | | | | | | | | | | | | | | | | 4166: Defining a default target to support cross-compilation targets r=matklad a=FuriouZz Related to #4163 Co-authored-by: Christophe MASSOLIN <[email protected]>
| * | Remove code duplicatesChristophe MASSOLIN2020-05-051-12/+6
| | |
| * | Pass cargo.target to rustcChristophe MASSOLIN2020-05-051-5/+13
| | |
| * | Rename `defaultTarget` to targetChristophe MASSOLIN2020-05-051-3/+3
| | |
| * | [config] remove RustcConfigChristophe MASSOLIN2020-04-271-5/+0
| | |
| * | [config] rename cargo.defaultTargetChristophe MASSOLIN2020-04-271-4/+4
| | |
| * | Started rust-analyzer.cargo.defaultTarget implementationChristophe MASSOLIN2020-04-261-0/+12
| |/
* / Bump depsLaurențiu Nicola2020-05-011-1/+1
|/
* Merge #4125bors[bot]2020-04-251-4/+8
|\ | | | | | | | | | | | | | | 4125: Avoid lossy OsString conversions r=matklad a=lnicola This is a bit invasive, and perhaps for not much benefit since non-UTF-8 environment variables don't work anyway. Co-authored-by: Laurențiu Nicola <[email protected]>
| * Avoid lossy OsString conversionsLaurențiu Nicola2020-04-251-4/+8
| |
* | Don't print cargo version to stdout, breaking everythingAleksey Kladov2020-04-241-1/+1
| |
* | More helpful error message if toolchain is not in PATHAleksey Kladov2020-04-241-0/+5
|/
* Some clippy fixesJeremy Kolb2020-04-191-2/+1
|
* Unmix error handling when discovering workspacesAleksey Kladov2020-04-161-55/+23
| | | | | Hitting an io::Error is a legit problem. Finding more than one Cargo.toml is not.
* Decouple project loading from project discovery a bitAleksey Kladov2020-04-161-100/+121
|
* Migrate to privacy as per review commetsveetaha2020-04-021-2/+8
|
* Less mutabilityveetaha2020-04-021-19/+23
|
* Migrate to iters some moreveetaha2020-04-021-18/+11
|
* Migrate to iteratorsveetaha2020-04-021-15/+3
|
* Simpify workspace handlingveetaha2020-04-021-29/+17
|
* Unique package by name and version.o0Ignition0o2020-04-021-4/+5
| | | | | This commit is a fixup of a bug I introduced by using a PackageId to refer to a crate when its name conflicts with a dependency. It turns out the package id currently is `name version path` while cargo expects `name:version` as argument.
* Reduce scope of deserializationAleksey Kladov2020-04-012-15/+11
|
* Move all config to configAleksey Kladov2020-04-011-0/+1
|
* Reduce depsAleksey Kladov2020-03-312-37/+39
|
* Rename cargo_watch -> flycheckAleksey Kladov2020-03-312-2/+2
|
* Use matches in is_dylibEdwin Cheng2020-03-311-11/+3
|
* Implement ra_proc_macro client logicEdwin Cheng2020-03-311-1/+21
|
* Add crate versions when running cargo -p commands.o0Ignition0o2020-03-311-0/+14
| | | | | | | Until now cargo commands with the -p flag would pass the package name only. It doesn't play super well with the toml Renaming dependencies feature. This commit specifies the package name and version when a cargo command is run with the -p flag, to avoid ambiguities.
* Add ProcMacroClientEdwin Cheng2020-03-254-9/+65
|
* ra_cargo_watch: return Result<> from run_cargo(), and don't read stderr for nowveetaha2020-03-211-14/+13
| | | | | | | | | | | | | | As stated by matklad, reading the stderr should be done alngside with stdout via select() (or I guess poll()), there is no such implementation in stdlib, since it is quite low level and platform-dependent and it also requires quite a bit of unrelated code we don't use it for now. As referenced by bjorn3, there is an implementation of the needed read2() function in rustc compiletest. The better solution will be to extract this function to a separate crate in future: https://github.com/rust-analyzer/rust-analyzer/pull/3632#discussion_r395605298
* Use target-name for crate-nameEdwin Cheng2020-03-211-3/+3
|
* Simplify Arena to use a generic indexAleksey Kladov2020-03-192-14/+8
|
* Simplify SysrootAleksey Kladov2020-03-192-22/+20
|
* More direct CargoWorkspaceAleksey Kladov2020-03-192-84/+61
|
* Use dyn-ref instead of impl to impact compile times the leastEmil Lauridsen2020-03-171-1/+1
|
* Slight readablity improvementEmil Lauridsen2020-03-171-1/+1
|
* Remove outDirOverridesEmil Lauridsen2020-03-171-8/+0
|
* Support specifying OUT_DIR in json projectEmil Lauridsen2020-03-172-3/+22
|
* Change existing OUT_DIR override config to make use of new infrastructureEmil Lauridsen2020-03-172-22/+14
|
* Support loading OUT_DIR from cargo check at launchEmil Lauridsen2020-03-173-9/+102
|