diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/dev/README.md | 2 | ||||
-rw-r--r-- | docs/dev/architecture.md | 11 | ||||
-rw-r--r-- | docs/dev/guide.md | 10 | ||||
-rw-r--r-- | docs/dev/lsp-extensions.md | 20 | ||||
-rw-r--r-- | docs/dev/style.md | 10 | ||||
-rw-r--r-- | docs/user/generated_config.adoc | 324 | ||||
-rw-r--r-- | docs/user/manual.adoc | 4 |
7 files changed, 298 insertions, 83 deletions
diff --git a/docs/dev/README.md b/docs/dev/README.md index d6fae5295..b91013f13 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md | |||
@@ -58,8 +58,6 @@ Use `env RUN_SLOW_TESTS=1 cargo test` to run the full suite. | |||
58 | 58 | ||
59 | We use bors-ng to enforce the [not rocket science](https://graydon2.dreamwidth.org/1597.html) rule. | 59 | We use bors-ng to enforce the [not rocket science](https://graydon2.dreamwidth.org/1597.html) rule. |
60 | 60 | ||
61 | You can run `cargo xtask install-pre-commit-hook` to install git-hook to run rustfmt on commit. | ||
62 | |||
63 | # Launching rust-analyzer | 61 | # Launching rust-analyzer |
64 | 62 | ||
65 | Debugging the language server can be tricky. | 63 | Debugging the language server can be tricky. |
diff --git a/docs/dev/architecture.md b/docs/dev/architecture.md index ead12616e..fb991133a 100644 --- a/docs/dev/architecture.md +++ b/docs/dev/architecture.md | |||
@@ -46,7 +46,7 @@ This is *the* entry point, but it front-loads a lot of complexity, so its fine t | |||
46 | 46 | ||
47 | `crates/rust-analyzer/src/handlers.rs` implements all LSP requests and is a great place to start if you are already familiar with LSP. | 47 | `crates/rust-analyzer/src/handlers.rs` implements all LSP requests and is a great place to start if you are already familiar with LSP. |
48 | 48 | ||
49 | `Analysis` and `AnalysisHost` types define the main API. | 49 | `Analysis` and `AnalysisHost` types define the main API for consumers of IDE services. |
50 | 50 | ||
51 | ## Code Map | 51 | ## Code Map |
52 | 52 | ||
@@ -97,13 +97,13 @@ See [RFC](https://github.com/rust-lang/rfcs/pull/2256) and [./syntax.md](./synta | |||
97 | 97 | ||
98 | - [rowan](https://github.com/rust-analyzer/rowan) library is used for constructing syntax trees. | 98 | - [rowan](https://github.com/rust-analyzer/rowan) library is used for constructing syntax trees. |
99 | - `ast` provides a type safe API on top of the raw `rowan` tree. | 99 | - `ast` provides a type safe API on top of the raw `rowan` tree. |
100 | - `ungrammar` description of the grammar, which is used to generate `syntax_kinds` and `ast` modules, using `cargo xtask codegen` command. | 100 | - `ungrammar` description of the grammar, which is used to generate `syntax_kinds` and `ast` modules, using `cargo test -p xtask` command. |
101 | 101 | ||
102 | Tests for ra_syntax are mostly data-driven. | 102 | Tests for ra_syntax are mostly data-driven. |
103 | `test_data/parser` contains subdirectories with a bunch of `.rs` (test vectors) and `.txt` files with corresponding syntax trees. | 103 | `test_data/parser` contains subdirectories with a bunch of `.rs` (test vectors) and `.txt` files with corresponding syntax trees. |
104 | During testing, we check `.rs` against `.txt`. | 104 | During testing, we check `.rs` against `.txt`. |
105 | If the `.txt` file is missing, it is created (this is how you update tests). | 105 | If the `.txt` file is missing, it is created (this is how you update tests). |
106 | Additionally, running `cargo xtask codegen` will walk the grammar module and collect all `// test test_name` comments into files inside `test_data/parser/inline` directory. | 106 | Additionally, running the xtask test suite with `cargo test -p xtask` will walk the grammar module and collect all `// test test_name` comments into files inside `test_data/parser/inline` directory. |
107 | 107 | ||
108 | To update test data, run with `UPDATE_EXPECT` variable: | 108 | To update test data, run with `UPDATE_EXPECT` variable: |
109 | 109 | ||
@@ -111,7 +111,7 @@ To update test data, run with `UPDATE_EXPECT` variable: | |||
111 | env UPDATE_EXPECT=1 cargo qt | 111 | env UPDATE_EXPECT=1 cargo qt |
112 | ``` | 112 | ``` |
113 | 113 | ||
114 | After adding a new inline test you need to run `cargo xtest codegen` and also update the test data as described above. | 114 | After adding a new inline test you need to run `cargo test -p xtask` and also update the test data as described above. |
115 | 115 | ||
116 | Note [`api_walkthrough`](https://github.com/rust-analyzer/rust-analyzer/blob/2fb6af89eb794f775de60b82afe56b6f986c2a40/crates/ra_syntax/src/lib.rs#L190-L348) | 116 | Note [`api_walkthrough`](https://github.com/rust-analyzer/rust-analyzer/blob/2fb6af89eb794f775de60b82afe56b6f986c2a40/crates/ra_syntax/src/lib.rs#L190-L348) |
117 | in particular: it shows off various methods of working with syntax tree. | 117 | in particular: it shows off various methods of working with syntax tree. |
@@ -308,9 +308,8 @@ This sections talks about the things which are everywhere and nowhere in particu | |||
308 | ### Code generation | 308 | ### Code generation |
309 | 309 | ||
310 | Some of the components of this repository are generated through automatic processes. | 310 | Some of the components of this repository are generated through automatic processes. |
311 | `cargo xtask codegen` runs all generation tasks. | 311 | Generated code is updated automatically on `cargo test`. |
312 | Generated code is generally committed to the git repository. | 312 | Generated code is generally committed to the git repository. |
313 | There are tests to check that the generated code is fresh. | ||
314 | 313 | ||
315 | In particular, we generate: | 314 | In particular, we generate: |
316 | 315 | ||
diff --git a/docs/dev/guide.md b/docs/dev/guide.md index b5a5d7c93..c1a55c56c 100644 --- a/docs/dev/guide.md +++ b/docs/dev/guide.md | |||
@@ -65,11 +65,11 @@ Next, let's talk about what the inputs to the `Analysis` are, precisely. | |||
65 | 65 | ||
66 | Rust Analyzer never does any I/O itself, all inputs get passed explicitly via | 66 | Rust Analyzer never does any I/O itself, all inputs get passed explicitly via |
67 | the `AnalysisHost::apply_change` method, which accepts a single argument, a | 67 | the `AnalysisHost::apply_change` method, which accepts a single argument, a |
68 | `AnalysisChange`. [`AnalysisChange`] is a builder for a single change | 68 | `Change`. [`Change`] is a builder for a single change |
69 | "transaction", so it suffices to study its methods to understand all of the | 69 | "transaction", so it suffices to study its methods to understand all of the |
70 | input data. | 70 | input data. |
71 | 71 | ||
72 | [`AnalysisChange`]: https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/lib.rs#L119-L167 | 72 | [`Change`]: https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/base_db/src/change.rs#L14-L89 |
73 | 73 | ||
74 | The `(add|change|remove)_file` methods control the set of the input files, where | 74 | The `(add|change|remove)_file` methods control the set of the input files, where |
75 | each file has an integer id (`FileId`, picked by the client), text (`String`) | 75 | each file has an integer id (`FileId`, picked by the client), text (`String`) |
@@ -158,7 +158,7 @@ it should be possible to dynamically reconfigure it later without restart. | |||
158 | [main_loop.rs#L62-L70](https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ra_lsp_server/src/main_loop.rs#L62-L70) | 158 | [main_loop.rs#L62-L70](https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ra_lsp_server/src/main_loop.rs#L62-L70) |
159 | 159 | ||
160 | The [`ProjectModel`] we get after this step is very Cargo and sysroot specific, | 160 | The [`ProjectModel`] we get after this step is very Cargo and sysroot specific, |
161 | it needs to be lowered to get the input in the form of `AnalysisChange`. This | 161 | it needs to be lowered to get the input in the form of `Change`. This |
162 | happens in [`ServerWorldState::new`] method. Specifically | 162 | happens in [`ServerWorldState::new`] method. Specifically |
163 | 163 | ||
164 | * Create a `SourceRoot` for each Cargo package and sysroot. | 164 | * Create a `SourceRoot` for each Cargo package and sysroot. |
@@ -175,7 +175,7 @@ of the main loop, just like any other change. Here's where we handle: | |||
175 | * [File system changes](https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ra_lsp_server/src/main_loop.rs#L194) | 175 | * [File system changes](https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ra_lsp_server/src/main_loop.rs#L194) |
176 | * [Changes from the editor](https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ra_lsp_server/src/main_loop.rs#L377) | 176 | * [Changes from the editor](https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ra_lsp_server/src/main_loop.rs#L377) |
177 | 177 | ||
178 | After a single loop's turn, we group the changes into one `AnalysisChange` and | 178 | After a single loop's turn, we group the changes into one `Change` and |
179 | [apply] it. This always happens on the main thread and blocks the loop. | 179 | [apply] it. This always happens on the main thread and blocks the loop. |
180 | 180 | ||
181 | [apply]: https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ra_lsp_server/src/server_world.rs#L216 | 181 | [apply]: https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ra_lsp_server/src/server_world.rs#L216 |
@@ -256,7 +256,7 @@ database. | |||
256 | [`RootDatabase`]: https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/db.rs#L88-L134 | 256 | [`RootDatabase`]: https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/ide_api/src/db.rs#L88-L134 |
257 | 257 | ||
258 | Salsa input queries are defined in [`FilesDatabase`] (which is a part of | 258 | Salsa input queries are defined in [`FilesDatabase`] (which is a part of |
259 | `RootDatabase`). They closely mirror the familiar `AnalysisChange` structure: | 259 | `RootDatabase`). They closely mirror the familiar `Change` structure: |
260 | indeed, what `apply_change` does is it sets the values of input queries. | 260 | indeed, what `apply_change` does is it sets the values of input queries. |
261 | 261 | ||
262 | [`FilesDatabase`]: https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/base_db/src/input.rs#L150-L174 | 262 | [`FilesDatabase`]: https://github.com/rust-analyzer/rust-analyzer/blob/guide-2019-01/crates/base_db/src/input.rs#L150-L174 |
diff --git a/docs/dev/lsp-extensions.md b/docs/dev/lsp-extensions.md index 6c34c4021..694fafcd5 100644 --- a/docs/dev/lsp-extensions.md +++ b/docs/dev/lsp-extensions.md | |||
@@ -39,7 +39,7 @@ If a language client does not know about `rust-analyzer`'s configuration options | |||
39 | 39 | ||
40 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/724 | 40 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/724 |
41 | 41 | ||
42 | **Client Capability:** `{ "snippetTextEdit": boolean }` | 42 | **Experimental Client Capability:** `{ "snippetTextEdit": boolean }` |
43 | 43 | ||
44 | If this capability is set, `WorkspaceEdit`s returned from `codeAction` requests might contain `SnippetTextEdit`s instead of usual `TextEdit`s: | 44 | If this capability is set, `WorkspaceEdit`s returned from `codeAction` requests might contain `SnippetTextEdit`s instead of usual `TextEdit`s: |
45 | 45 | ||
@@ -72,7 +72,7 @@ At the moment, rust-analyzer guarantees that only a single edit will have `Inser | |||
72 | 72 | ||
73 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/994 | 73 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/994 |
74 | 74 | ||
75 | **Client Capability:** `{ "codeActionGroup": boolean }` | 75 | **Experimental Client Capability:** `{ "codeActionGroup": boolean }` |
76 | 76 | ||
77 | If this capability is set, `CodeAction` returned from the server contain an additional field, `group`: | 77 | If this capability is set, `CodeAction` returned from the server contain an additional field, `group`: |
78 | 78 | ||
@@ -119,7 +119,7 @@ Invoking code action at this position will yield two code actions for importing | |||
119 | 119 | ||
120 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/1002 | 120 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/1002 |
121 | 121 | ||
122 | **Server Capability:** `{ "parentModule": boolean }` | 122 | **Experimental Server Capability:** `{ "parentModule": boolean }` |
123 | 123 | ||
124 | This request is sent from client to server to handle "Goto Parent Module" editor action. | 124 | This request is sent from client to server to handle "Goto Parent Module" editor action. |
125 | 125 | ||
@@ -153,7 +153,7 @@ mod foo; | |||
153 | 153 | ||
154 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/992 | 154 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/992 |
155 | 155 | ||
156 | **Server Capability:** `{ "joinLines": boolean }` | 156 | **Experimental Server Capability:** `{ "joinLines": boolean }` |
157 | 157 | ||
158 | This request is sent from client to server to handle "Join Lines" editor action. | 158 | This request is sent from client to server to handle "Join Lines" editor action. |
159 | 159 | ||
@@ -200,7 +200,7 @@ fn main() { | |||
200 | 200 | ||
201 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/1001 | 201 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/1001 |
202 | 202 | ||
203 | **Server Capability:** `{ "onEnter": boolean }` | 203 | **Experimental Server Capability:** `{ "onEnter": boolean }` |
204 | 204 | ||
205 | This request is sent from client to server to handle <kbd>Enter</kbd> keypress. | 205 | This request is sent from client to server to handle <kbd>Enter</kbd> keypress. |
206 | 206 | ||
@@ -251,7 +251,7 @@ As proper cursor positioning is raison-d'etat for `onEnter`, it uses `SnippetTex | |||
251 | 251 | ||
252 | ## Structural Search Replace (SSR) | 252 | ## Structural Search Replace (SSR) |
253 | 253 | ||
254 | **Server Capability:** `{ "ssr": boolean }` | 254 | **Experimental Server Capability:** `{ "ssr": boolean }` |
255 | 255 | ||
256 | This request is sent from client to server to handle structural search replace -- automated syntax tree based transformation of the source. | 256 | This request is sent from client to server to handle structural search replace -- automated syntax tree based transformation of the source. |
257 | 257 | ||
@@ -293,7 +293,7 @@ SSR with query `foo($a, $b) ==>> ($a).foo($b)` will transform, eg `foo(y + 5, z) | |||
293 | 293 | ||
294 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/999 | 294 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/999 |
295 | 295 | ||
296 | **Server Capability:** `{ "matchingBrace": boolean }` | 296 | **Experimental Server Capability:** `{ "matchingBrace": boolean }` |
297 | 297 | ||
298 | This request is sent from client to server to handle "Matching Brace" editor action. | 298 | This request is sent from client to server to handle "Matching Brace" editor action. |
299 | 299 | ||
@@ -338,7 +338,7 @@ Moreover, it would be cool if editors didn't need to implement even basic langua | |||
338 | 338 | ||
339 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/944 | 339 | **Issue:** https://github.com/microsoft/language-server-protocol/issues/944 |
340 | 340 | ||
341 | **Server Capability:** `{ "runnables": { "kinds": string[] } }` | 341 | **Experimental Server Capability:** `{ "runnables": { "kinds": string[] } }` |
342 | 342 | ||
343 | This request is sent from client to server to get the list of things that can be run (tests, binaries, `cargo check -p`). | 343 | This request is sent from client to server to get the list of things that can be run (tests, binaries, `cargo check -p`). |
344 | 344 | ||
@@ -421,7 +421,7 @@ Reloads project information (that is, re-executes `cargo metadata`). | |||
421 | 421 | ||
422 | ## Status Notification | 422 | ## Status Notification |
423 | 423 | ||
424 | **Client Capability:** `{ "statusNotification": boolean }` | 424 | **Experimental Client Capability:** `{ "statusNotification": boolean }` |
425 | 425 | ||
426 | **Method:** `rust-analyzer/status` | 426 | **Method:** `rust-analyzer/status` |
427 | 427 | ||
@@ -519,7 +519,7 @@ interface InlayHint { | |||
519 | 519 | ||
520 | ## Hover Actions | 520 | ## Hover Actions |
521 | 521 | ||
522 | **Client Capability:** `{ "hoverActions": boolean }` | 522 | **Experimental Client Capability:** `{ "hoverActions": boolean }` |
523 | 523 | ||
524 | If this capability is set, `Hover` request returned from the server might contain an additional field, `actions`: | 524 | If this capability is set, `Hover` request returned from the server might contain an additional field, `actions`: |
525 | 525 | ||
diff --git a/docs/dev/style.md b/docs/dev/style.md index dd71e3932..46bd8b9b2 100644 --- a/docs/dev/style.md +++ b/docs/dev/style.md | |||
@@ -145,7 +145,7 @@ Formatting ensures that you can use your editor's "number of selected characters | |||
145 | ## Marked Tests | 145 | ## Marked Tests |
146 | 146 | ||
147 | Use | 147 | Use |
148 | [`mark::hit! / mark::check!`](https://github.com/rust-analyzer/rust-analyzer/blob/71fe719dd5247ed8615641d9303d7ca1aa201c2f/crates/test_utils/src/mark.rs) | 148 | [`cov_mark::hit! / cov_mark::check!`](https://github.com/matklad/cov-mark) |
149 | when testing specific conditions. | 149 | when testing specific conditions. |
150 | Do not place several marks into a single test or condition. | 150 | Do not place several marks into a single test or condition. |
151 | Do not reuse marks between several tests. | 151 | Do not reuse marks between several tests. |
@@ -769,14 +769,20 @@ fn foo() -> Option<Bar> { | |||
769 | 769 | ||
770 | ## Comparisons | 770 | ## Comparisons |
771 | 771 | ||
772 | Use `<`/`<=`, avoid `>`/`>=`. | 772 | When doing multiple comparisons use `<`/`<=`, avoid `>`/`>=`. |
773 | 773 | ||
774 | ```rust | 774 | ```rust |
775 | // GOOD | 775 | // GOOD |
776 | assert!(lo <= x && x <= hi); | 776 | assert!(lo <= x && x <= hi); |
777 | assert!(r1 < l2 || r2 < l1); | ||
778 | assert!(x < y); | ||
779 | assert!(x > 0); | ||
777 | 780 | ||
778 | // BAD | 781 | // BAD |
779 | assert!(x >= lo && x <= hi>); | 782 | assert!(x >= lo && x <= hi>); |
783 | assert!(r1 < l2 || l1 > r2); | ||
784 | assert!(y > x); | ||
785 | assert!(0 > x); | ||
780 | ``` | 786 | ``` |
781 | 787 | ||
782 | **Rationale:** Less-then comparisons are more intuitive, they correspond spatially to [real line](https://en.wikipedia.org/wiki/Real_line). | 788 | **Rationale:** Less-then comparisons are more intuitive, they correspond spatially to [real line](https://en.wikipedia.org/wiki/Real_line). |
diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index f91e04c31..042ba2d54 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc | |||
@@ -1,112 +1,322 @@ | |||
1 | [[rust-analyzer.assist.importMergeBehavior]]rust-analyzer.assist.importMergeBehavior (default: `"full"`):: | 1 | [[rust-analyzer.assist.importMergeBehavior]]rust-analyzer.assist.importMergeBehavior (default: `"full"`):: |
2 | The strategy to use when inserting new imports or merging imports. | 2 | + |
3 | -- | ||
4 | The strategy to use when inserting new imports or merging imports. | ||
5 | -- | ||
3 | [[rust-analyzer.assist.importPrefix]]rust-analyzer.assist.importPrefix (default: `"plain"`):: | 6 | [[rust-analyzer.assist.importPrefix]]rust-analyzer.assist.importPrefix (default: `"plain"`):: |
4 | The path structure for newly inserted paths to use. | 7 | + |
8 | -- | ||
9 | The path structure for newly inserted paths to use. | ||
10 | -- | ||
11 | [[rust-analyzer.assist.importGroup]]rust-analyzer.assist.importGroup (default: `true`):: | ||
12 | + | ||
13 | -- | ||
14 | Group inserted imports by the [following order](https://rust-analyzer.github.io/manual.html#auto-import). Groups are separated by newlines. | ||
15 | -- | ||
5 | [[rust-analyzer.callInfo.full]]rust-analyzer.callInfo.full (default: `true`):: | 16 | [[rust-analyzer.callInfo.full]]rust-analyzer.callInfo.full (default: `true`):: |
6 | Show function name and docs in parameter hints. | 17 | + |
18 | -- | ||
19 | Show function name and docs in parameter hints. | ||
20 | -- | ||
7 | [[rust-analyzer.cargo.autoreload]]rust-analyzer.cargo.autoreload (default: `true`):: | 21 | [[rust-analyzer.cargo.autoreload]]rust-analyzer.cargo.autoreload (default: `true`):: |
8 | Automatically refresh project info via `cargo metadata` on `Cargo.toml` changes. | 22 | + |
23 | -- | ||
24 | Automatically refresh project info via `cargo metadata` on | ||
25 | `Cargo.toml` changes. | ||
26 | -- | ||
9 | [[rust-analyzer.cargo.allFeatures]]rust-analyzer.cargo.allFeatures (default: `false`):: | 27 | [[rust-analyzer.cargo.allFeatures]]rust-analyzer.cargo.allFeatures (default: `false`):: |
10 | Activate all available features (`--all-features`). | 28 | + |
29 | -- | ||
30 | Activate all available features (`--all-features`). | ||
31 | -- | ||
11 | [[rust-analyzer.cargo.features]]rust-analyzer.cargo.features (default: `[]`):: | 32 | [[rust-analyzer.cargo.features]]rust-analyzer.cargo.features (default: `[]`):: |
12 | List of features to activate. | 33 | + |
13 | [[rust-analyzer.cargo.loadOutDirsFromCheck]]rust-analyzer.cargo.loadOutDirsFromCheck (default: `false`):: | 34 | -- |
14 | Run `cargo check` on startup to get the correct value for package OUT_DIRs. | 35 | List of features to activate. |
36 | -- | ||
37 | [[rust-analyzer.cargo.runBuildScripts]]rust-analyzer.cargo.runBuildScripts (default: `true`):: | ||
38 | + | ||
39 | -- | ||
40 | Run build scripts (`build.rs`) for more precise code analysis. | ||
41 | -- | ||
15 | [[rust-analyzer.cargo.noDefaultFeatures]]rust-analyzer.cargo.noDefaultFeatures (default: `false`):: | 42 | [[rust-analyzer.cargo.noDefaultFeatures]]rust-analyzer.cargo.noDefaultFeatures (default: `false`):: |
16 | Do not activate the `default` feature. | 43 | + |
44 | -- | ||
45 | Do not activate the `default` feature. | ||
46 | -- | ||
17 | [[rust-analyzer.cargo.target]]rust-analyzer.cargo.target (default: `null`):: | 47 | [[rust-analyzer.cargo.target]]rust-analyzer.cargo.target (default: `null`):: |
18 | Compilation target (target triple). | 48 | + |
49 | -- | ||
50 | Compilation target (target triple). | ||
51 | -- | ||
19 | [[rust-analyzer.cargo.noSysroot]]rust-analyzer.cargo.noSysroot (default: `false`):: | 52 | [[rust-analyzer.cargo.noSysroot]]rust-analyzer.cargo.noSysroot (default: `false`):: |
20 | Internal config for debugging, disables loading of sysroot crates. | 53 | + |
54 | -- | ||
55 | Internal config for debugging, disables loading of sysroot crates. | ||
56 | -- | ||
21 | [[rust-analyzer.checkOnSave.enable]]rust-analyzer.checkOnSave.enable (default: `true`):: | 57 | [[rust-analyzer.checkOnSave.enable]]rust-analyzer.checkOnSave.enable (default: `true`):: |
22 | Run specified `cargo check` command for diagnostics on save. | 58 | + |
59 | -- | ||
60 | Run specified `cargo check` command for diagnostics on save. | ||
61 | -- | ||
23 | [[rust-analyzer.checkOnSave.allFeatures]]rust-analyzer.checkOnSave.allFeatures (default: `null`):: | 62 | [[rust-analyzer.checkOnSave.allFeatures]]rust-analyzer.checkOnSave.allFeatures (default: `null`):: |
24 | Check with all features (`--all-features`). Defaults to `#rust-analyzer.cargo.allFeatures#`. | 63 | + |
64 | -- | ||
65 | Check with all features (`--all-features`). | ||
66 | Defaults to `#rust-analyzer.cargo.allFeatures#`. | ||
67 | -- | ||
25 | [[rust-analyzer.checkOnSave.allTargets]]rust-analyzer.checkOnSave.allTargets (default: `true`):: | 68 | [[rust-analyzer.checkOnSave.allTargets]]rust-analyzer.checkOnSave.allTargets (default: `true`):: |
26 | Check all targets and tests (`--all-targets`). | 69 | + |
70 | -- | ||
71 | Check all targets and tests (`--all-targets`). | ||
72 | -- | ||
27 | [[rust-analyzer.checkOnSave.command]]rust-analyzer.checkOnSave.command (default: `"check"`):: | 73 | [[rust-analyzer.checkOnSave.command]]rust-analyzer.checkOnSave.command (default: `"check"`):: |
28 | Cargo command to use for `cargo check`. | 74 | + |
75 | -- | ||
76 | Cargo command to use for `cargo check`. | ||
77 | -- | ||
29 | [[rust-analyzer.checkOnSave.noDefaultFeatures]]rust-analyzer.checkOnSave.noDefaultFeatures (default: `null`):: | 78 | [[rust-analyzer.checkOnSave.noDefaultFeatures]]rust-analyzer.checkOnSave.noDefaultFeatures (default: `null`):: |
30 | Do not activate the `default` feature. | 79 | + |
80 | -- | ||
81 | Do not activate the `default` feature. | ||
82 | -- | ||
31 | [[rust-analyzer.checkOnSave.target]]rust-analyzer.checkOnSave.target (default: `null`):: | 83 | [[rust-analyzer.checkOnSave.target]]rust-analyzer.checkOnSave.target (default: `null`):: |
32 | Check for a specific target. Defaults to `#rust-analyzer.cargo.target#`. | 84 | + |
85 | -- | ||
86 | Check for a specific target. Defaults to | ||
87 | `#rust-analyzer.cargo.target#`. | ||
88 | -- | ||
33 | [[rust-analyzer.checkOnSave.extraArgs]]rust-analyzer.checkOnSave.extraArgs (default: `[]`):: | 89 | [[rust-analyzer.checkOnSave.extraArgs]]rust-analyzer.checkOnSave.extraArgs (default: `[]`):: |
34 | Extra arguments for `cargo check`. | 90 | + |
91 | -- | ||
92 | Extra arguments for `cargo check`. | ||
93 | -- | ||
35 | [[rust-analyzer.checkOnSave.features]]rust-analyzer.checkOnSave.features (default: `null`):: | 94 | [[rust-analyzer.checkOnSave.features]]rust-analyzer.checkOnSave.features (default: `null`):: |
36 | List of features to activate. Defaults to `#rust-analyzer.cargo.features#`. | 95 | + |
96 | -- | ||
97 | List of features to activate. Defaults to | ||
98 | `#rust-analyzer.cargo.features#`. | ||
99 | -- | ||
37 | [[rust-analyzer.checkOnSave.overrideCommand]]rust-analyzer.checkOnSave.overrideCommand (default: `null`):: | 100 | [[rust-analyzer.checkOnSave.overrideCommand]]rust-analyzer.checkOnSave.overrideCommand (default: `null`):: |
38 | Advanced option, fully override the command rust-analyzer uses for checking. The command should include `--message-format=json` or similar option. | 101 | + |
102 | -- | ||
103 | Advanced option, fully override the command rust-analyzer uses for | ||
104 | checking. The command should include `--message-format=json` or | ||
105 | similar option. | ||
106 | -- | ||
39 | [[rust-analyzer.completion.addCallArgumentSnippets]]rust-analyzer.completion.addCallArgumentSnippets (default: `true`):: | 107 | [[rust-analyzer.completion.addCallArgumentSnippets]]rust-analyzer.completion.addCallArgumentSnippets (default: `true`):: |
40 | Whether to add argument snippets when completing functions. | 108 | + |
109 | -- | ||
110 | Whether to add argument snippets when completing functions. | ||
111 | -- | ||
41 | [[rust-analyzer.completion.addCallParenthesis]]rust-analyzer.completion.addCallParenthesis (default: `true`):: | 112 | [[rust-analyzer.completion.addCallParenthesis]]rust-analyzer.completion.addCallParenthesis (default: `true`):: |
42 | Whether to add parenthesis when completing functions. | 113 | + |
114 | -- | ||
115 | Whether to add parenthesis when completing functions. | ||
116 | -- | ||
43 | [[rust-analyzer.completion.postfix.enable]]rust-analyzer.completion.postfix.enable (default: `true`):: | 117 | [[rust-analyzer.completion.postfix.enable]]rust-analyzer.completion.postfix.enable (default: `true`):: |
44 | Whether to show postfix snippets like `dbg`, `if`, `not`, etc. | 118 | + |
119 | -- | ||
120 | Whether to show postfix snippets like `dbg`, `if`, `not`, etc. | ||
121 | -- | ||
45 | [[rust-analyzer.completion.autoimport.enable]]rust-analyzer.completion.autoimport.enable (default: `true`):: | 122 | [[rust-analyzer.completion.autoimport.enable]]rust-analyzer.completion.autoimport.enable (default: `true`):: |
46 | Toggles the additional completions that automatically add imports when completed. Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled. | 123 | + |
124 | -- | ||
125 | Toggles the additional completions that automatically add imports when completed. | ||
126 | Note that your client must specify the `additionalTextEdits` LSP client capability to truly have this feature enabled. | ||
127 | -- | ||
47 | [[rust-analyzer.diagnostics.enable]]rust-analyzer.diagnostics.enable (default: `true`):: | 128 | [[rust-analyzer.diagnostics.enable]]rust-analyzer.diagnostics.enable (default: `true`):: |
48 | Whether to show native rust-analyzer diagnostics. | 129 | + |
130 | -- | ||
131 | Whether to show native rust-analyzer diagnostics. | ||
132 | -- | ||
49 | [[rust-analyzer.diagnostics.enableExperimental]]rust-analyzer.diagnostics.enableExperimental (default: `true`):: | 133 | [[rust-analyzer.diagnostics.enableExperimental]]rust-analyzer.diagnostics.enableExperimental (default: `true`):: |
50 | Whether to show experimental rust-analyzer diagnostics that might have more false positives than usual. | 134 | + |
135 | -- | ||
136 | Whether to show experimental rust-analyzer diagnostics that might | ||
137 | have more false positives than usual. | ||
138 | -- | ||
51 | [[rust-analyzer.diagnostics.disabled]]rust-analyzer.diagnostics.disabled (default: `[]`):: | 139 | [[rust-analyzer.diagnostics.disabled]]rust-analyzer.diagnostics.disabled (default: `[]`):: |
52 | List of rust-analyzer diagnostics to disable. | 140 | + |
141 | -- | ||
142 | List of rust-analyzer diagnostics to disable. | ||
143 | -- | ||
53 | [[rust-analyzer.diagnostics.warningsAsHint]]rust-analyzer.diagnostics.warningsAsHint (default: `[]`):: | 144 | [[rust-analyzer.diagnostics.warningsAsHint]]rust-analyzer.diagnostics.warningsAsHint (default: `[]`):: |
54 | List of warnings that should be displayed with info severity.\n\nThe warnings will be indicated by a blue squiggly underline in code and a blue icon in the `Problems Panel`. | 145 | + |
146 | -- | ||
147 | List of warnings that should be displayed with info severity. | ||
148 | |||
149 | The warnings will be indicated by a blue squiggly underline in code | ||
150 | and a blue icon in the `Problems Panel`. | ||
151 | -- | ||
55 | [[rust-analyzer.diagnostics.warningsAsInfo]]rust-analyzer.diagnostics.warningsAsInfo (default: `[]`):: | 152 | [[rust-analyzer.diagnostics.warningsAsInfo]]rust-analyzer.diagnostics.warningsAsInfo (default: `[]`):: |
56 | List of warnings that should be displayed with hint severity.\n\nThe warnings will be indicated by faded text or three dots in code and will not show up in the `Problems Panel`. | 153 | + |
154 | -- | ||
155 | List of warnings that should be displayed with hint severity. | ||
156 | |||
157 | The warnings will be indicated by faded text or three dots in code | ||
158 | and will not show up in the `Problems Panel`. | ||
159 | -- | ||
57 | [[rust-analyzer.files.watcher]]rust-analyzer.files.watcher (default: `"client"`):: | 160 | [[rust-analyzer.files.watcher]]rust-analyzer.files.watcher (default: `"client"`):: |
58 | Controls file watching implementation. | 161 | + |
162 | -- | ||
163 | Controls file watching implementation. | ||
164 | -- | ||
59 | [[rust-analyzer.files.excludeDirs]]rust-analyzer.files.excludeDirs (default: `[]`):: | 165 | [[rust-analyzer.files.excludeDirs]]rust-analyzer.files.excludeDirs (default: `[]`):: |
60 | These directories will be ignored by rust-analyzer. | 166 | + |
167 | -- | ||
168 | These directories will be ignored by rust-analyzer. | ||
169 | -- | ||
61 | [[rust-analyzer.hoverActions.debug]]rust-analyzer.hoverActions.debug (default: `true`):: | 170 | [[rust-analyzer.hoverActions.debug]]rust-analyzer.hoverActions.debug (default: `true`):: |
62 | Whether to show `Debug` action. Only applies when `#rust-analyzer.hoverActions.enable#` is set. | 171 | + |
172 | -- | ||
173 | Whether to show `Debug` action. Only applies when | ||
174 | `#rust-analyzer.hoverActions.enable#` is set. | ||
175 | -- | ||
63 | [[rust-analyzer.hoverActions.enable]]rust-analyzer.hoverActions.enable (default: `true`):: | 176 | [[rust-analyzer.hoverActions.enable]]rust-analyzer.hoverActions.enable (default: `true`):: |
64 | Whether to show HoverActions in Rust files. | 177 | + |
178 | -- | ||
179 | Whether to show HoverActions in Rust files. | ||
180 | -- | ||
65 | [[rust-analyzer.hoverActions.gotoTypeDef]]rust-analyzer.hoverActions.gotoTypeDef (default: `true`):: | 181 | [[rust-analyzer.hoverActions.gotoTypeDef]]rust-analyzer.hoverActions.gotoTypeDef (default: `true`):: |
66 | Whether to show `Go to Type Definition` action. Only applies when `#rust-analyzer.hoverActions.enable#` is set. | 182 | + |
183 | -- | ||
184 | Whether to show `Go to Type Definition` action. Only applies when | ||
185 | `#rust-analyzer.hoverActions.enable#` is set. | ||
186 | -- | ||
67 | [[rust-analyzer.hoverActions.implementations]]rust-analyzer.hoverActions.implementations (default: `true`):: | 187 | [[rust-analyzer.hoverActions.implementations]]rust-analyzer.hoverActions.implementations (default: `true`):: |
68 | Whether to show `Implementations` action. Only applies when `#rust-analyzer.hoverActions.enable#` is set. | 188 | + |
189 | -- | ||
190 | Whether to show `Implementations` action. Only applies when | ||
191 | `#rust-analyzer.hoverActions.enable#` is set. | ||
192 | -- | ||
69 | [[rust-analyzer.hoverActions.run]]rust-analyzer.hoverActions.run (default: `true`):: | 193 | [[rust-analyzer.hoverActions.run]]rust-analyzer.hoverActions.run (default: `true`):: |
70 | Whether to show `Run` action. Only applies when `#rust-analyzer.hoverActions.enable#` is set. | 194 | + |
195 | -- | ||
196 | Whether to show `Run` action. Only applies when | ||
197 | `#rust-analyzer.hoverActions.enable#` is set. | ||
198 | -- | ||
71 | [[rust-analyzer.hoverActions.linksInHover]]rust-analyzer.hoverActions.linksInHover (default: `true`):: | 199 | [[rust-analyzer.hoverActions.linksInHover]]rust-analyzer.hoverActions.linksInHover (default: `true`):: |
72 | Use markdown syntax for links in hover. | 200 | + |
201 | -- | ||
202 | Use markdown syntax for links in hover. | ||
203 | -- | ||
73 | [[rust-analyzer.inlayHints.chainingHints]]rust-analyzer.inlayHints.chainingHints (default: `true`):: | 204 | [[rust-analyzer.inlayHints.chainingHints]]rust-analyzer.inlayHints.chainingHints (default: `true`):: |
74 | Whether to show inlay type hints for method chains. | 205 | + |
206 | -- | ||
207 | Whether to show inlay type hints for method chains. | ||
208 | -- | ||
75 | [[rust-analyzer.inlayHints.maxLength]]rust-analyzer.inlayHints.maxLength (default: `null`):: | 209 | [[rust-analyzer.inlayHints.maxLength]]rust-analyzer.inlayHints.maxLength (default: `null`):: |
76 | Maximum length for inlay hints. Default is unlimited. | 210 | + |
211 | -- | ||
212 | Maximum length for inlay hints. Default is unlimited. | ||
213 | -- | ||
77 | [[rust-analyzer.inlayHints.parameterHints]]rust-analyzer.inlayHints.parameterHints (default: `true`):: | 214 | [[rust-analyzer.inlayHints.parameterHints]]rust-analyzer.inlayHints.parameterHints (default: `true`):: |
78 | Whether to show function parameter name inlay hints at the call site. | 215 | + |
216 | -- | ||
217 | Whether to show function parameter name inlay hints at the call | ||
218 | site. | ||
219 | -- | ||
79 | [[rust-analyzer.inlayHints.typeHints]]rust-analyzer.inlayHints.typeHints (default: `true`):: | 220 | [[rust-analyzer.inlayHints.typeHints]]rust-analyzer.inlayHints.typeHints (default: `true`):: |
80 | Whether to show inlay type hints for variables. | 221 | + |
222 | -- | ||
223 | Whether to show inlay type hints for variables. | ||
224 | -- | ||
81 | [[rust-analyzer.lens.debug]]rust-analyzer.lens.debug (default: `true`):: | 225 | [[rust-analyzer.lens.debug]]rust-analyzer.lens.debug (default: `true`):: |
82 | Whether to show `Debug` lens. Only applies when `#rust-analyzer.lens.enable#` is set. | 226 | + |
227 | -- | ||
228 | Whether to show `Debug` lens. Only applies when | ||
229 | `#rust-analyzer.lens.enable#` is set. | ||
230 | -- | ||
83 | [[rust-analyzer.lens.enable]]rust-analyzer.lens.enable (default: `true`):: | 231 | [[rust-analyzer.lens.enable]]rust-analyzer.lens.enable (default: `true`):: |
84 | Whether to show CodeLens in Rust files. | 232 | + |
233 | -- | ||
234 | Whether to show CodeLens in Rust files. | ||
235 | -- | ||
85 | [[rust-analyzer.lens.implementations]]rust-analyzer.lens.implementations (default: `true`):: | 236 | [[rust-analyzer.lens.implementations]]rust-analyzer.lens.implementations (default: `true`):: |
86 | Whether to show `Implementations` lens. Only applies when `#rust-analyzer.lens.enable#` is set. | 237 | + |
238 | -- | ||
239 | Whether to show `Implementations` lens. Only applies when | ||
240 | `#rust-analyzer.lens.enable#` is set. | ||
241 | -- | ||
87 | [[rust-analyzer.lens.run]]rust-analyzer.lens.run (default: `true`):: | 242 | [[rust-analyzer.lens.run]]rust-analyzer.lens.run (default: `true`):: |
88 | Whether to show `Run` lens. Only applies when `#rust-analyzer.lens.enable#` is set. | 243 | + |
244 | -- | ||
245 | Whether to show `Run` lens. Only applies when | ||
246 | `#rust-analyzer.lens.enable#` is set. | ||
247 | -- | ||
89 | [[rust-analyzer.lens.methodReferences]]rust-analyzer.lens.methodReferences (default: `false`):: | 248 | [[rust-analyzer.lens.methodReferences]]rust-analyzer.lens.methodReferences (default: `false`):: |
90 | Whether to show `Method References` lens. Only applies when `#rust-analyzer.lens.enable#` is set. | 249 | + |
250 | -- | ||
251 | Whether to show `Method References` lens. Only applies when | ||
252 | `#rust-analyzer.lens.enable#` is set. | ||
253 | -- | ||
91 | [[rust-analyzer.lens.references]]rust-analyzer.lens.references (default: `false`):: | 254 | [[rust-analyzer.lens.references]]rust-analyzer.lens.references (default: `false`):: |
92 | Whether to show `References` lens. Only applies when `#rust-analyzer.lens.enable#` is set. | 255 | + |
256 | -- | ||
257 | Whether to show `References` lens. Only applies when | ||
258 | `#rust-analyzer.lens.enable#` is set. | ||
259 | -- | ||
93 | [[rust-analyzer.linkedProjects]]rust-analyzer.linkedProjects (default: `[]`):: | 260 | [[rust-analyzer.linkedProjects]]rust-analyzer.linkedProjects (default: `[]`):: |
94 | Disable project auto-discovery in favor of explicitly specified set of projects.\n\nElements must be paths pointing to `Cargo.toml`, `rust-project.json`, or JSON objects in `rust-project.json` format. | 261 | + |
262 | -- | ||
263 | Disable project auto-discovery in favor of explicitly specified set | ||
264 | of projects. | ||
265 | |||
266 | Elements must be paths pointing to `Cargo.toml`, | ||
267 | `rust-project.json`, or JSON objects in `rust-project.json` format. | ||
268 | -- | ||
95 | [[rust-analyzer.lruCapacity]]rust-analyzer.lruCapacity (default: `null`):: | 269 | [[rust-analyzer.lruCapacity]]rust-analyzer.lruCapacity (default: `null`):: |
96 | Number of syntax trees rust-analyzer keeps in memory. Defaults to 128. | 270 | + |
271 | -- | ||
272 | Number of syntax trees rust-analyzer keeps in memory. Defaults to 128. | ||
273 | -- | ||
97 | [[rust-analyzer.notifications.cargoTomlNotFound]]rust-analyzer.notifications.cargoTomlNotFound (default: `true`):: | 274 | [[rust-analyzer.notifications.cargoTomlNotFound]]rust-analyzer.notifications.cargoTomlNotFound (default: `true`):: |
98 | Whether to show `can't find Cargo.toml` error message. | 275 | + |
276 | -- | ||
277 | Whether to show `can't find Cargo.toml` error message. | ||
278 | -- | ||
99 | [[rust-analyzer.procMacro.enable]]rust-analyzer.procMacro.enable (default: `false`):: | 279 | [[rust-analyzer.procMacro.enable]]rust-analyzer.procMacro.enable (default: `false`):: |
100 | Enable Proc macro support, `#rust-analyzer.cargo.loadOutDirsFromCheck#` must be enabled. | 280 | + |
281 | -- | ||
282 | Enable support for procedural macros, implies `#rust-analyzer.cargo.runBuildScripts#`. | ||
283 | -- | ||
101 | [[rust-analyzer.procMacro.server]]rust-analyzer.procMacro.server (default: `null`):: | 284 | [[rust-analyzer.procMacro.server]]rust-analyzer.procMacro.server (default: `null`):: |
102 | Internal config, path to proc-macro server executable (typically, this is rust-analyzer itself, but we override this in tests). | 285 | + |
286 | -- | ||
287 | Internal config, path to proc-macro server executable (typically, | ||
288 | this is rust-analyzer itself, but we override this in tests). | ||
289 | -- | ||
103 | [[rust-analyzer.runnables.overrideCargo]]rust-analyzer.runnables.overrideCargo (default: `null`):: | 290 | [[rust-analyzer.runnables.overrideCargo]]rust-analyzer.runnables.overrideCargo (default: `null`):: |
104 | Command to be executed instead of 'cargo' for runnables. | 291 | + |
292 | -- | ||
293 | Command to be executed instead of 'cargo' for runnables. | ||
294 | -- | ||
105 | [[rust-analyzer.runnables.cargoExtraArgs]]rust-analyzer.runnables.cargoExtraArgs (default: `[]`):: | 295 | [[rust-analyzer.runnables.cargoExtraArgs]]rust-analyzer.runnables.cargoExtraArgs (default: `[]`):: |
106 | Additional arguments to be passed to cargo for runnables such as tests or binaries.\nFor example, it may be `--release`. | 296 | + |
297 | -- | ||
298 | Additional arguments to be passed to cargo for runnables such as | ||
299 | tests or binaries. For example, it may be `--release`. | ||
300 | -- | ||
107 | [[rust-analyzer.rustcSource]]rust-analyzer.rustcSource (default: `null`):: | 301 | [[rust-analyzer.rustcSource]]rust-analyzer.rustcSource (default: `null`):: |
108 | Path to the rust compiler sources, for usage in rustc_private projects, or "discover" to try to automatically find it. | 302 | + |
303 | -- | ||
304 | Path to the Cargo.toml of the rust compiler workspace, for usage in rustc_private | ||
305 | projects, or "discover" to try to automatically find it. | ||
306 | |||
307 | Any project which uses rust-analyzer with the rustcPrivate | ||
308 | crates must set `[package.metadata.rust-analyzer] rustc_private=true` to use it. | ||
309 | |||
310 | This option is not reloaded automatically; you must restart rust-analyzer for it to take effect. | ||
311 | -- | ||
109 | [[rust-analyzer.rustfmt.extraArgs]]rust-analyzer.rustfmt.extraArgs (default: `[]`):: | 312 | [[rust-analyzer.rustfmt.extraArgs]]rust-analyzer.rustfmt.extraArgs (default: `[]`):: |
110 | Additional arguments to `rustfmt`. | 313 | + |
314 | -- | ||
315 | Additional arguments to `rustfmt`. | ||
316 | -- | ||
111 | [[rust-analyzer.rustfmt.overrideCommand]]rust-analyzer.rustfmt.overrideCommand (default: `null`):: | 317 | [[rust-analyzer.rustfmt.overrideCommand]]rust-analyzer.rustfmt.overrideCommand (default: `null`):: |
112 | Advanced option, fully override the command rust-analyzer uses for formatting. | 318 | + |
319 | -- | ||
320 | Advanced option, fully override the command rust-analyzer uses for | ||
321 | formatting. | ||
322 | -- | ||
diff --git a/docs/user/manual.adoc b/docs/user/manual.adoc index 9f28237ff..f4c37353c 100644 --- a/docs/user/manual.adoc +++ b/docs/user/manual.adoc | |||
@@ -19,7 +19,7 @@ The LSP allows various code editors, like VS Code, Emacs or Vim, to implement se | |||
19 | To improve this document, send a pull request: + | 19 | To improve this document, send a pull request: + |
20 | https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/manual.adoc[https://github.com/rust-analyzer/.../manual.adoc] | 20 | https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/manual.adoc[https://github.com/rust-analyzer/.../manual.adoc] |
21 | 21 | ||
22 | The manual is written in https://asciidoc.org[AsciiDoc] and includes some extra files which are generated from the source code. Run `cargo test` and `cargo xtask codegen` to create these and then `asciidoctor manual.adoc` to create an HTML copy. | 22 | The manual is written in https://asciidoc.org[AsciiDoc] and includes some extra files which are generated from the source code. Run `cargo test` and `cargo test -p xtask` to create these and then `asciidoctor manual.adoc` to create an HTML copy. |
23 | 23 | ||
24 | ==== | 24 | ==== |
25 | 25 | ||
@@ -226,6 +226,8 @@ The are several LSP client implementations for vim or neovim: | |||
226 | * inlay hints for variables and method chaining, _Neovim Only_ | 226 | * inlay hints for variables and method chaining, _Neovim Only_ |
227 | * semantic highlighting is not implemented yet | 227 | * semantic highlighting is not implemented yet |
228 | 228 | ||
229 | Note: for code actions, use `coc-codeaction-cursor` and `coc-codeaction-selected`; `coc-codeaction` and `coc-codeaction-line` are unlikely to be useful. | ||
230 | |||
229 | ==== LanguageClient-neovim | 231 | ==== LanguageClient-neovim |
230 | 232 | ||
231 | 1. Install LanguageClient-neovim by following the instructions | 233 | 1. Install LanguageClient-neovim by following the instructions |