diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/dev/architecture.md | 8 | ||||
-rw-r--r-- | docs/dev/lsp-extensions.md | 18 | ||||
-rw-r--r-- | docs/user/generated_config.adoc | 25 | ||||
-rw-r--r-- | docs/user/manual.adoc | 10 |
4 files changed, 44 insertions, 17 deletions
diff --git a/docs/dev/architecture.md b/docs/dev/architecture.md index 39edf9e19..3de1b99a5 100644 --- a/docs/dev/architecture.md +++ b/docs/dev/architecture.md | |||
@@ -146,6 +146,8 @@ Reading the docs of the `base_db::input` module should be useful: everything els | |||
146 | 146 | ||
147 | **Architecture Invariant:** particularities of the build system are *not* the part of the ground state. | 147 | **Architecture Invariant:** particularities of the build system are *not* the part of the ground state. |
148 | In particular, `base_db` knows nothing about cargo. | 148 | In particular, `base_db` knows nothing about cargo. |
149 | For example, `cfg` flags are a part of `base_db`, but `feature`s are not. | ||
150 | A `foo` feature is a Cargo-level concept, which is lowered by Cargo to `--cfg feature=foo` argument on the command line. | ||
149 | The `CrateGraph` structure is used to represent the dependencies between the crates abstractly. | 151 | The `CrateGraph` structure is used to represent the dependencies between the crates abstractly. |
150 | 152 | ||
151 | **Architecture Invariant:** `base_db` doesn't know about file system and file paths. | 153 | **Architecture Invariant:** `base_db` doesn't know about file system and file paths. |
@@ -447,3 +449,9 @@ This is cheap enough to enable in production. | |||
447 | 449 | ||
448 | Similarly, we save live object counting (`RA_COUNT=1`). | 450 | Similarly, we save live object counting (`RA_COUNT=1`). |
449 | It is not cheap enough to enable in prod, and this is a bug which should be fixed. | 451 | It is not cheap enough to enable in prod, and this is a bug which should be fixed. |
452 | |||
453 | ### Configurability | ||
454 | |||
455 | rust-analyzer strives to be as configurable as possible while offering reasonable defaults where no configuration exists yet. | ||
456 | There will always be features that some people find more annoying than helpful, so giving the users the ability to tweak or disable these is a big part of offering a good user experience. | ||
457 | Mind the code--architecture gap: at the moment, we are using fewer feature flags than we really should. | ||
diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md index fbe2ce1c9..11a3dd04e 100644 --- a/docs/dev/lsp-extensions.md +++ b/docs/dev/lsp-extensions.md | |||
@@ -25,15 +25,21 @@ rust-analyzer supports clangd's extension for opting into UTF-8 as the coordinat | |||
25 | 25 | ||
26 | https://clangd.llvm.org/extensions.html#utf-8-offsets | 26 | https://clangd.llvm.org/extensions.html#utf-8-offsets |
27 | 27 | ||
28 | ## `initializationOptions` | 28 | ## Configuration in `initializationOptions` |
29 | |||
30 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/567 | ||
31 | |||
32 | The `initializationOptions` filed of the `InitializeParams` of the initialization request should contain `"rust-analyzer"` section of the configuration. | ||
33 | |||
34 | `rust-analyzer` normally sends a `"workspace/configuration"` request with `{ "items": ["rust-analyzer"] }` payload. | ||
35 | However, the server can't do this during initialization. | ||
36 | At the same time some essential configuration parameters are needed early on, before servicing requests. | ||
37 | For this reason, we ask that `initializationOptions` contains the configuration, as if the server did make a `"workspace/configuration"` request. | ||
29 | 38 | ||
30 | For `initializationOptions`, `rust-analyzer` expects `"rust-analyzer"` section of the configuration. | ||
31 | That is, `rust-analyzer` usually sends `"workspace/configuration"` request with `{ "items": ["rust-analyzer"] }` payload. | ||
32 | `initializationOptions` should contain the same data that would be in the first item of the result. | ||
33 | If a language client does not know about `rust-analyzer`'s configuration options it can get sensible defaults by doing any of the following: | 39 | If a language client does not know about `rust-analyzer`'s configuration options it can get sensible defaults by doing any of the following: |
34 | * Not sending `initializationOptions` | 40 | * Not sending `initializationOptions` |
35 | * Send `"initializationOptions": null` | 41 | * Sending `"initializationOptions": null` |
36 | * Send `"initializationOptions": {}` | 42 | * Sending `"initializationOptions": {}` |
37 | 43 | ||
38 | ## Snippet `TextEdit` | 44 | ## Snippet `TextEdit` |
39 | 45 | ||
diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index c02bab7cc..dbd9a3503 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc | |||
@@ -136,6 +136,12 @@ Whether to show postfix snippets like `dbg`, `if`, `not`, etc. | |||
136 | Toggles the additional completions that automatically add imports when completed. | 136 | Toggles the additional completions that automatically add imports when completed. |
137 | Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled. | 137 | Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled. |
138 | -- | 138 | -- |
139 | [[rust-analyzer.completion.autoself.enable]]rust-analyzer.completion.autoself.enable (default: `true`):: | ||
140 | + | ||
141 | -- | ||
142 | Toggles the additional completions that automatically show method calls and field accesses | ||
143 | with `self` prefixed to them when inside a method. | ||
144 | -- | ||
139 | [[rust-analyzer.diagnostics.enable]]rust-analyzer.diagnostics.enable (default: `true`):: | 145 | [[rust-analyzer.diagnostics.enable]]rust-analyzer.diagnostics.enable (default: `true`):: |
140 | + | 146 | + |
141 | -- | 147 | -- |
@@ -161,18 +167,18 @@ This should be the reverse mapping of what is passed to `rustc` as `--remap-path | |||
161 | [[rust-analyzer.diagnostics.warningsAsHint]]rust-analyzer.diagnostics.warningsAsHint (default: `[]`):: | 167 | [[rust-analyzer.diagnostics.warningsAsHint]]rust-analyzer.diagnostics.warningsAsHint (default: `[]`):: |
162 | + | 168 | + |
163 | -- | 169 | -- |
164 | List of warnings that should be displayed with info severity. | 170 | List of warnings that should be displayed with hint severity. |
165 | 171 | ||
166 | The warnings will be indicated by a blue squiggly underline in code | 172 | The warnings will be indicated by faded text or three dots in code |
167 | and a blue icon in the `Problems Panel`. | 173 | and will not show up in the `Problems Panel`. |
168 | -- | 174 | -- |
169 | [[rust-analyzer.diagnostics.warningsAsInfo]]rust-analyzer.diagnostics.warningsAsInfo (default: `[]`):: | 175 | [[rust-analyzer.diagnostics.warningsAsInfo]]rust-analyzer.diagnostics.warningsAsInfo (default: `[]`):: |
170 | + | 176 | + |
171 | -- | 177 | -- |
172 | List of warnings that should be displayed with hint severity. | 178 | List of warnings that should be displayed with info severity. |
173 | 179 | ||
174 | The warnings will be indicated by faded text or three dots in code | 180 | The warnings will be indicated by a blue squiggly underline in code |
175 | and will not show up in the `Problems Panel`. | 181 | and a blue icon in the `Problems Panel`. |
176 | -- | 182 | -- |
177 | [[rust-analyzer.files.watcher]]rust-analyzer.files.watcher (default: `"client"`):: | 183 | [[rust-analyzer.files.watcher]]rust-analyzer.files.watcher (default: `"client"`):: |
178 | + | 184 | + |
@@ -346,6 +352,13 @@ Additional arguments to `rustfmt`. | |||
346 | Advanced option, fully override the command rust-analyzer uses for | 352 | Advanced option, fully override the command rust-analyzer uses for |
347 | formatting. | 353 | formatting. |
348 | -- | 354 | -- |
355 | [[rust-analyzer.rustfmt.enableRangeFormatting]]rust-analyzer.rustfmt.enableRangeFormatting (default: `false`):: | ||
356 | + | ||
357 | -- | ||
358 | Enables the use of rustfmt's unstable range formatting command for the | ||
359 | `textDocument/rangeFormatting` request. The rustfmt option is unstable and only | ||
360 | available on a nightly build. | ||
361 | -- | ||
349 | [[rust-analyzer.workspace.symbol.search.scope]]rust-analyzer.workspace.symbol.search.scope (default: `"workspace"`):: | 362 | [[rust-analyzer.workspace.symbol.search.scope]]rust-analyzer.workspace.symbol.search.scope (default: `"workspace"`):: |
350 | + | 363 | + |
351 | -- | 364 | -- |
diff --git a/docs/user/manual.adoc b/docs/user/manual.adoc index ad367511b..1f95df56e 100644 --- a/docs/user/manual.adoc +++ b/docs/user/manual.adoc | |||
@@ -139,18 +139,18 @@ $ cargo xtask install --server | |||
139 | === rust-analyzer Language Server Binary | 139 | === rust-analyzer Language Server Binary |
140 | 140 | ||
141 | Other editors generally require the `rust-analyzer` binary to be in `$PATH`. | 141 | Other editors generally require the `rust-analyzer` binary to be in `$PATH`. |
142 | You can download the pre-built binary from the https://github.com/rust-analyzer/rust-analyzer/releases[releases] page. | 142 | You can download pre-built binaries from the https://github.com/rust-analyzer/rust-analyzer/releases[releases] page. |
143 | Typically, you then need to rename the binary for your platform, e.g. `rust-analyzer-mac` if you're on Mac OS, to `rust-analyzer` and make it executable in addition to moving it into a directory in your `$PATH`. | 143 | You will need to uncompress and rename the binary for your platform, e.g. from `rust-analyzer-aarch64-apple-darwin.gz` on Mac OS to `rust-analyzer`, make it executable, then move it into a directory in your `$PATH`. |
144 | 144 | ||
145 | On Linux to install the `rust-analyzer` binary into `~/.local/bin`, this commands could be used | 145 | On Linux to install the `rust-analyzer` binary into `~/.local/bin`, these commands should work: |
146 | 146 | ||
147 | [source,bash] | 147 | [source,bash] |
148 | ---- | 148 | ---- |
149 | $ curl -L https://github.com/rust-analyzer/rust-analyzer/releases/latest/download/rust-analyzer-linux -o ~/.local/bin/rust-analyzer | 149 | $ curl -L https://github.com/rust-analyzer/rust-analyzer/releases/latest/download/rust-analyzer-x86_64-unknown-linux-gnu.gz | gunzip -c - > ~/.local/bin/rust-analyzer |
150 | $ chmod +x ~/.local/bin/rust-analyzer | 150 | $ chmod +x ~/.local/bin/rust-analyzer |
151 | ---- | 151 | ---- |
152 | 152 | ||
153 | Ensure `~/.local/bin` is listed in the `$PATH` variable. | 153 | Make sure that `~/.local/bin` is listed in the `$PATH` variable and use the appropriate URL if you're not on a `x86-64` system. |
154 | 154 | ||
155 | Alternatively, you can install it from source using the command below. | 155 | Alternatively, you can install it from source using the command below. |
156 | You'll need the latest stable version of the Rust toolchain. | 156 | You'll need the latest stable version of the Rust toolchain. |