diff options
Diffstat (limited to 'docs/user')
-rw-r--r-- | docs/user/generated_diagnostic.adoc | 105 | ||||
-rw-r--r-- | docs/user/manual.adoc | 22 |
2 files changed, 117 insertions, 10 deletions
diff --git a/docs/user/generated_diagnostic.adoc b/docs/user/generated_diagnostic.adoc new file mode 100644 index 000000000..34c4f98a3 --- /dev/null +++ b/docs/user/generated_diagnostic.adoc | |||
@@ -0,0 +1,105 @@ | |||
1 | //Generated file, do not edit by hand, see `xtask/src/codegen` | ||
2 | === break-outside-of-loop | ||
3 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/diagnostics.rs#L219[diagnostics.rs] | ||
4 | |||
5 | This diagnostic is triggered if `break` keyword is used outside of a loop. | ||
6 | |||
7 | |||
8 | === inactive-code | ||
9 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_def/src/diagnostics.rs#L98[diagnostics.rs] | ||
10 | |||
11 | This diagnostic is shown for code with inactive `#[cfg]` attributes. | ||
12 | |||
13 | |||
14 | === incorrect-ident-case | ||
15 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/diagnostics.rs#L319[diagnostics.rs] | ||
16 | |||
17 | This diagnostic is triggered if item name doesn't follow https://doc.rust-lang.org/1.0.0/style/style/naming/README.html[Rust naming convention]. | ||
18 | |||
19 | |||
20 | === mismatched-arg-count | ||
21 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/diagnostics.rs#L267[diagnostics.rs] | ||
22 | |||
23 | This diagnostic is triggered if function is invoked with an incorrect amount of arguments. | ||
24 | |||
25 | |||
26 | === missing-match-arm | ||
27 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/diagnostics.rs#L162[diagnostics.rs] | ||
28 | |||
29 | This diagnostic is triggered if `match` block is missing one or more match arms. | ||
30 | |||
31 | |||
32 | === missing-ok-in-tail-expr | ||
33 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/diagnostics.rs#L187[diagnostics.rs] | ||
34 | |||
35 | This diagnostic is triggered if block that should return `Result` returns a value not wrapped in `Ok`. | ||
36 | |||
37 | Example: | ||
38 | |||
39 | ```rust | ||
40 | fn foo() -> Result<u8, ()> { | ||
41 | 10 | ||
42 | } | ||
43 | ``` | ||
44 | |||
45 | |||
46 | === missing-pat-fields | ||
47 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/diagnostics.rs#L113[diagnostics.rs] | ||
48 | |||
49 | This diagnostic is triggered if pattern lacks some fields that exist in the corresponding structure. | ||
50 | |||
51 | Example: | ||
52 | |||
53 | ```rust | ||
54 | struct A { a: u8, b: u8 } | ||
55 | |||
56 | let a = A { a: 10, b: 20 }; | ||
57 | |||
58 | if let A { a } = a { | ||
59 | // ... | ||
60 | } | ||
61 | ``` | ||
62 | |||
63 | |||
64 | === missing-structure-fields | ||
65 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/diagnostics.rs#L66[diagnostics.rs] | ||
66 | |||
67 | This diagnostic is triggered if record lacks some fields that exist in the corresponding structure. | ||
68 | |||
69 | Example: | ||
70 | |||
71 | ```rust | ||
72 | struct A { a: u8, b: u8 } | ||
73 | |||
74 | let a = A { a: 10 }; | ||
75 | ``` | ||
76 | |||
77 | |||
78 | === missing-unsafe | ||
79 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/diagnostics.rs#L243[diagnostics.rs] | ||
80 | |||
81 | This diagnostic is triggered if operation marked as `unsafe` is used outside of `unsafe` function or block. | ||
82 | |||
83 | |||
84 | === no-such-field | ||
85 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_ty/src/diagnostics.rs#L39[diagnostics.rs] | ||
86 | |||
87 | This diagnostic is triggered if created structure does not have field provided in record. | ||
88 | |||
89 | |||
90 | === unresolved-extern-crate | ||
91 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_def/src/diagnostics.rs#L43[diagnostics.rs] | ||
92 | |||
93 | This diagnostic is triggered if rust-analyzer is unable to discover referred extern crate. | ||
94 | |||
95 | |||
96 | === unresolved-import | ||
97 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_def/src/diagnostics.rs#L67[diagnostics.rs] | ||
98 | |||
99 | This diagnostic is triggered if rust-analyzer is unable to discover imported module. | ||
100 | |||
101 | |||
102 | === unresolved-module | ||
103 | **Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/hir_def/src/diagnostics.rs#L18[diagnostics.rs] | ||
104 | |||
105 | This diagnostic is triggered if rust-analyzer is unable to discover referred module. | ||
diff --git a/docs/user/manual.adoc b/docs/user/manual.adoc index 46e7bd091..b9d907a4a 100644 --- a/docs/user/manual.adoc +++ b/docs/user/manual.adoc | |||
@@ -116,6 +116,7 @@ Here are some useful self-diagnostic commands: | |||
116 | * **Rust Analyzer: Show RA Version** shows the version of `rust-analyzer` binary. | 116 | * **Rust Analyzer: Show RA Version** shows the version of `rust-analyzer` binary. |
117 | * **Rust Analyzer: Status** prints some statistics about the server, and dependency information for the current file. | 117 | * **Rust Analyzer: Status** prints some statistics about the server, and dependency information for the current file. |
118 | * To enable server-side logging, run with `env RA_LOG=info` and see `Output > Rust Analyzer Language Server` in VS Code's panel. | 118 | * To enable server-side logging, run with `env RA_LOG=info` and see `Output > Rust Analyzer Language Server` in VS Code's panel. |
119 | * To log project loading (sysroot & `cargo metadata`), set `RA_LOG=project_model=debug`. | ||
119 | * To log all LSP requests, add `"rust-analyzer.trace.server": "verbose"` to the settings and look for `Rust Analyzer Language Server Trace` in the panel. | 120 | * To log all LSP requests, add `"rust-analyzer.trace.server": "verbose"` to the settings and look for `Rust Analyzer Language Server Trace` in the panel. |
120 | * To enable client-side logging, add `"rust-analyzer.trace.extension": true` to the settings and open `Output > Rust Analyzer Client` in the panel. | 121 | * To enable client-side logging, add `"rust-analyzer.trace.extension": true` to the settings and open `Output > Rust Analyzer Client` in the panel. |
121 | 122 | ||
@@ -260,16 +261,7 @@ If you get an error saying `No such file or directory: 'rust-analyzer'`, see the | |||
260 | 261 | ||
261 | === GNOME Builder | 262 | === GNOME Builder |
262 | 263 | ||
263 | Prerequisites: You have installed the <<rust-analyzer-language-server-binary,`rust-analyzer` binary>>. | 264 | GNOME Builder 3.37.1 and newer has native `rust-analyzer` support. If the LSP binary is not available, GNOME Builder can install it when opening a Rust file. |
264 | |||
265 | Gnome Builder currently has support for RLS, and there's no way to configure the language server executable. A future version might support `rust-analyzer` out of the box. | ||
266 | |||
267 | 1. Rename, symlink or copy the `rust-analyzer` binary to `rls` and place it somewhere Builder can find (in `PATH`, or under `~/.cargo/bin`). | ||
268 | 2. Enable the Rust Builder plugin. | ||
269 | |||
270 | ==== GNOME Builder (Nightly) | ||
271 | |||
272 | https://nightly.gnome.org/repo/appstream/org.gnome.Builder.flatpakref[GNOME Builder (Nightly)] has now native support for `rust-analyzer` out of the box. If the `rust-analyzer` binary is not available, GNOME Builder can install it when opening a Rust source file. | ||
273 | 265 | ||
274 | == Non-Cargo Based Projects | 266 | == Non-Cargo Based Projects |
275 | 267 | ||
@@ -295,6 +287,9 @@ interface JsonProject { | |||
295 | } | 287 | } |
296 | 288 | ||
297 | interface Crate { | 289 | interface Crate { |
290 | /// Optional crate name used for display purposes, without affecting semantics. | ||
291 | /// See the `deps` key for semantically-significant crate names. | ||
292 | display_name?: string; | ||
298 | /// Path to the root module of the crate. | 293 | /// Path to the root module of the crate. |
299 | root_module: string; | 294 | root_module: string; |
300 | /// Edition of the crate. | 295 | /// Edition of the crate. |
@@ -371,6 +366,13 @@ Cursor position or selection is signified by `┃` character. | |||
371 | 366 | ||
372 | include::./generated_assists.adoc[] | 367 | include::./generated_assists.adoc[] |
373 | 368 | ||
369 | == Diagnostics | ||
370 | |||
371 | While most errors and warnings provided by rust-analyzer come from the `cargo check` integration, there's a growing number of diagnostics implemented using rust-analyzer's own analysis. | ||
372 | These diagnostics don't respect `#[allow]` or `#[deny]` attributes yet, but can be turned off using the `rust-analyzer.diagnostics.enable`, `rust-analyzer.diagnostics.enableExperimental` or `rust-analyzer.diagnostics.disabled` settings. | ||
373 | |||
374 | include::./generated_diagnostic.adoc[] | ||
375 | |||
374 | == Editor Features | 376 | == Editor Features |
375 | === VS Code | 377 | === VS Code |
376 | 378 | ||