Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'docs/book/src/configuration_generated.md')
-rw-r--r--docs/book/src/configuration_generated.md147
1 files changed, 95 insertions, 52 deletions
diff --git a/docs/book/src/configuration_generated.md b/docs/book/src/configuration_generated.md
index 58b6363345..8460c2c7d0 100644
--- a/docs/book/src/configuration_generated.md
+++ b/docs/book/src/configuration_generated.md
@@ -323,10 +323,18 @@ each of them, with the working directory being the workspace root
(i.e., the folder containing the `Cargo.toml`). This can be overwritten
by changing `#rust-analyzer.check.invocationStrategy#`.
-If `$saved_file` is part of the command, rust-analyzer will pass
-the absolute path of the saved file to the provided command. This is
-intended to be used with non-Cargo build systems.
-Note that `$saved_file` is experimental and may be removed in the future.
+It supports two interpolation syntaxes, both mainly intended to be used with
+[non-Cargo build systems](./non_cargo_based_projects.md):
+
+- If `{saved_file}` is part of the command, rust-analyzer will pass
+ the absolute path of the saved file to the provided command.
+ (A previous version, `$saved_file`, also works.)
+- If `{label}` is part of the command, rust-analyzer will pass the
+ Cargo package ID, which can be used with `cargo check -p`, or a build label from
+ `rust-project.json`. If `{label}` is included, rust-analyzer behaves much like
+ [`"rust-analyzer.check.workspace": false`](#check.workspace).
+
+
An example command would be:
@@ -1310,6 +1318,16 @@ These proc-macros will be ignored when trying to expand them.
This config takes a map of crate names with the exported proc-macro names to ignore as values.
+## rust-analyzer.procMacro.processes {#procMacro.processes}
+
+Default: `1`
+
+Number of proc-macro server processes to spawn.
+
+Controls how many independent `proc-macro-srv` processes rust-analyzer
+runs in parallel to handle macro expansion.
+
+
## rust-analyzer.procMacro.server {#procMacro.server}
Default: `null`
@@ -1611,33 +1629,83 @@ though Cargo might be the eventual consumer.
Default: `null`
-Enables automatic discovery of projects using [`DiscoverWorkspaceConfig::command`].
+Configure a command that rust-analyzer can invoke to
+obtain configuration.
-[`DiscoverWorkspaceConfig`] also requires setting `progress_label` and `files_to_watch`.
-`progress_label` is used for the title in progress indicators, whereas `files_to_watch`
-is used to determine which build system-specific files should be watched in order to
-reload rust-analyzer.
+This is an alternative to manually generating
+`rust-project.json`: it enables rust-analyzer to generate
+rust-project.json on the fly, and regenerate it when
+switching or modifying projects.
+
+This is an object with three fields:
+
+* `command`: the shell command to invoke
+
+* `filesToWatch`: which build system-specific files should
+be watched to trigger regenerating the configuration
+
+* `progressLabel`: the name of the command, used in
+progress indicators in the IDE
+
+Here's an example of a valid configuration:
-Below is an example of a valid configuration:
```json
"rust-analyzer.workspace.discoverConfig": {
"command": [
"rust-project",
- "develop-json"
+ "develop-json",
+ "{arg}"
],
- "progressLabel": "rust-analyzer",
+ "progressLabel": "buck2/rust-project",
"filesToWatch": [
"BUCK"
]
}
```
-## On `DiscoverWorkspaceConfig::command`
+## Argument Substitutions
+
+If `command` includes the argument `{arg}`, that argument will be substituted
+with the JSON-serialized form of the following enum:
+
+```norun
+#[derive(PartialEq, Clone, Debug, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub enum DiscoverArgument {
+ Path(AbsPathBuf),
+ Buildfile(AbsPathBuf),
+}
+```
+
+rust-analyzer will use the path invocation to find and
+generate a `rust-project.json` and therefore a
+workspace. Example:
+
+
+```norun
+rust-project develop-json '{ "path": "myproject/src/main.rs" }'
+```
+
+rust-analyzer will use build file invocations to update an
+existing workspace. Example:
+
+Or with a build file and the configuration above:
+
+```norun
+rust-project develop-json '{ "buildfile": "myproject/BUCK" }'
+```
+
+As a reference for implementors, buck2's `rust-project`
+will likely be useful:
+<https://github.com/facebook/buck2/tree/main/integrations/rust-project>.
+
+## Discover Command Output
**Warning**: This format is provisional and subject to change.
-[`DiscoverWorkspaceConfig::command`] *must* return a JSON object corresponding to
-`DiscoverProjectData::Finished`:
+The discover command should output JSON objects, one per
+line (JSONL format). These objects should correspond to
+this Rust data type:
```norun
#[derive(Debug, Clone, Deserialize, Serialize)]
@@ -1650,7 +1718,14 @@ enum DiscoverProjectData {
}
```
-As JSON, `DiscoverProjectData::Finished` is:
+For example, a progress event:
+
+```json
+{"kind":"progress","message":"generating rust-project.json"}
+```
+
+A finished event can look like this (expanded and
+commented for readability):
```json
{
@@ -1658,7 +1733,7 @@ As JSON, `DiscoverProjectData::Finished` is:
"kind": "finished",
// the file used by a non-Cargo build system to define
// a package or target.
- "buildfile": "rust-analyzer/BUILD",
+ "buildfile": "rust-analyzer/BUCK",
// the contents of a rust-project.json, elided for brevity
"project": {
"sysroot": "foo",
@@ -1667,41 +1742,9 @@ As JSON, `DiscoverProjectData::Finished` is:
}
```
-It is encouraged, but not required, to use the other variants on `DiscoverProjectData`
-to provide a more polished end-user experience.
-
-`DiscoverWorkspaceConfig::command` may *optionally* include an `{arg}`, which will be
-substituted with the JSON-serialized form of the following enum:
-
-```norun
-#[derive(PartialEq, Clone, Debug, Serialize)]
-#[serde(rename_all = "camelCase")]
-pub enum DiscoverArgument {
- Path(AbsPathBuf),
- Buildfile(AbsPathBuf),
-}
-```
-
-The JSON representation of `DiscoverArgument::Path` is:
-
-```json
-{
- "path": "src/main.rs"
-}
-```
-
-Similarly, the JSON representation of `DiscoverArgument::Buildfile` is:
-
-```json
-{
- "buildfile": "BUILD"
-}
-```
-
-`DiscoverArgument::Path` is used to find and generate a `rust-project.json`, and
-therefore, a workspace, whereas `DiscoverArgument::buildfile` is used to to update an
-existing workspace. As a reference for implementors, buck2's `rust-project` will likely
-be useful: <https://github.com/facebook/buck2/tree/main/integrations/rust-project>.
+Only the finished event is required, but the other
+variants are encouraged to give users more feedback about
+progress or errors.
## rust-analyzer.workspace.symbol.search.excludeImports {#workspace.symbol.search.excludeImports}