rust-analyzer/editors/code/src
bors c15335c8b0 Auto merge of #14307 - davidbarsky:davidbarsky/add-cargo-style-project-discovery-for-buck-and-bazel-sickos, r=Veykril
Add Cargo-style project discovery for Buck and Bazel Users

This feature requires the user to add a command that generates a `rust-project.json` from a set of files. Project discovery can be invoked in two ways:

1. At extension activation time, which includes the generated `rust-project.json` as part of the linkedProjects argument in `InitializeParams`.
2. Through a new command titled "rust-analyzer: Add current file to workspace", which makes use of a new, rust-analyzer-specific LSP request that adds the workspace without erasing any existing workspaces. Note that there is no mechanism to _remove_ workspaces other than "quit the rust-analyzer server".

Few notes:
-  I think that the command-running functionality _could_ merit being placed into its own extension (and expose it via extension contribution points) to provide build-system idiomatic progress reporting and status handling, but I haven't (yet) made an extension that does this nor does Buck expose this sort of functionality.
-  This approach would _just work_ for Bazel. I'll try and get the tool that's responsible for Buck integration open-sourced soon.
- On the testing side of things, I've used this in around my employer's Buck-powered monorepo and it's a nice experience. That being said, I can't think of an open-source repository where this can be tested in public, so you might need to trust me on this one.

I'd love to get feedback on:
- Naming of LSP extensions/new commands. I'm not too pleased with how "rust-analyzer: Add current file to workspace" is named, in that it's creating a _new_ workspace. I think that this command being added should be gated on `rust-analyzer.discoverProjectCommand` on being set, so I can add this in sequent commits.
- My Typescript. It's not particularly good.
- Suggestions on handling folders with _both_ Cargo and non-Cargo build systems and if I make activation a bit better.

(I previously tried to add this functionality entirely within rust-analyzer-the-LSP server itself, but matklad was right—an extension side approach is much, much easier.)
2023-03-14 17:48:49 +00:00
..
ast_inspector.ts Make more things private 2022-10-17 15:05:20 +02:00
bootstrap.ts Substitute VSCode variables more generally 2023-01-24 13:46:56 +01:00
client.ts fix: don't override linkedProjects if no workspace was discovered. 2023-03-14 13:36:21 -04:00
commands.ts Add a workspace config-based approach to reloading discovered projects. 2023-03-13 13:30:19 -04:00
config.ts Address review comments 2023-03-14 12:49:35 -04:00
ctx.ts Auto merge of #14307 - davidbarsky:davidbarsky/add-cargo-style-project-discovery-for-buck-and-bazel-sickos, r=Veykril 2023-03-14 17:48:49 +00:00
debug.ts Substitute VSCode variables more generally 2023-01-24 13:46:56 +01:00
diagnostics.ts Parse + decorate rendered ANSI cargo output 2023-01-09 11:46:29 -05:00
lsp_ext.ts Remove rust-analyzer/addProject in favor of notifying r-a that configuration has changed 2023-03-13 13:30:19 -04:00
main.ts fmt 2023-03-13 13:30:19 -04:00
persistent_state.ts prettier run 2022-05-17 18:15:06 +01:00
run.ts Always set up VSCode commands 2022-10-29 00:44:37 +02:00
rust_project.ts fmt 2023-03-13 13:30:19 -04:00
snippets.ts automate braceless return substitution for long lines 2022-05-17 18:31:51 +01:00
tasks.ts Revert "fix: in VSCode, correctly resolve relative paths to errors" 2022-10-14 09:28:44 +02:00
toolchain.ts Respect $CARGO_HOME when looking up toolchains. 2023-02-26 15:37:04 +09:00
util.ts fmt 2023-03-13 13:30:19 -04:00