diff options
Diffstat (limited to 'docs')
-rw-r--r-- | docs/dev/README.md | 12 | ||||
-rw-r--r-- | docs/dev/architecture.md | 16 | ||||
-rw-r--r-- | docs/user/README.md | 26 | ||||
-rw-r--r-- | docs/user/features.md | 7 |
4 files changed, 38 insertions, 23 deletions
diff --git a/docs/dev/README.md b/docs/dev/README.md index 0db3e731e..e5a7ea5f6 100644 --- a/docs/dev/README.md +++ b/docs/dev/README.md | |||
@@ -14,7 +14,7 @@ To learn more about how rust-analyzer works, see | |||
14 | 14 | ||
15 | We also publish rustdoc docs to pages: | 15 | We also publish rustdoc docs to pages: |
16 | 16 | ||
17 | https://rust-analyzer.github.io/rust-analyzer/ra_ide_api/index.html | 17 | https://rust-analyzer.github.io/rust-analyzer/api-docs/ra_ide_api/ |
18 | 18 | ||
19 | Various organizational and process issues are discussed in this document. | 19 | Various organizational and process issues are discussed in this document. |
20 | 20 | ||
@@ -65,8 +65,8 @@ integrating with editors. Currently, it contains plugins for VS Code (in | |||
65 | typescript) and Emacs (in elisp). The `docs` top-level directory contains both | 65 | typescript) and Emacs (in elisp). The `docs` top-level directory contains both |
66 | developer and user documentation. | 66 | developer and user documentation. |
67 | 67 | ||
68 | We have some automation infra in Rust in the `crates/tool` package. It contains | 68 | We have some automation infra in Rust in the `xtask` package. It contains |
69 | stuff like formatting checking, code generation and powers `cargo install-ra`. | 69 | stuff like formatting checking, code generation and powers `cargo xtask install`. |
70 | The latter syntax is achieved with the help of cargo aliases (see `.cargo` | 70 | The latter syntax is achieved with the help of cargo aliases (see `.cargo` |
71 | directory). | 71 | directory). |
72 | 72 | ||
@@ -84,7 +84,7 @@ However, launching a VS Code instance with locally build language server is | |||
84 | possible. There's even a VS Code task for this, so just <kbd>F5</kbd> should | 84 | possible. There's even a VS Code task for this, so just <kbd>F5</kbd> should |
85 | work (thanks, [@andrew-w-ross](https://github.com/andrew-w-ross)!). | 85 | work (thanks, [@andrew-w-ross](https://github.com/andrew-w-ross)!). |
86 | 86 | ||
87 | I often just install development version with `cargo install-ra --server --jemalloc` and | 87 | I often just install development version with `cargo xtask install --server --jemalloc` and |
88 | restart the host VS Code. | 88 | restart the host VS Code. |
89 | 89 | ||
90 | See [./debugging.md](./debugging.md) for how to attach to rust-analyzer with | 90 | See [./debugging.md](./debugging.md) for how to attach to rust-analyzer with |
@@ -116,7 +116,7 @@ Due to the requirements of running the tests inside VS Code they are **not run | |||
116 | on CI**. When making changes to the extension please ensure the tests are not | 116 | on CI**. When making changes to the extension please ensure the tests are not |
117 | broken locally before opening a Pull Request. | 117 | broken locally before opening a Pull Request. |
118 | 118 | ||
119 | To install **only** the VS Code extension, use `cargo install-ra --client-code`. | 119 | To install **only** the VS Code extension, use `cargo xtask install --client-code`. |
120 | 120 | ||
121 | # Logging | 121 | # Logging |
122 | 122 | ||
@@ -153,7 +153,7 @@ There's also two VS Code commands which might be of interest: | |||
153 | $ cargo install --path crates/ra_lsp_server --force --features jemalloc | 153 | $ cargo install --path crates/ra_lsp_server --force --features jemalloc |
154 | ``` | 154 | ``` |
155 | 155 | ||
156 | There's an alias for this: `cargo install-ra --server --jemalloc`. | 156 | There's an alias for this: `cargo xtask install --server --jemalloc`. |
157 | 157 | ||
158 | * `Rust Analyzer: Syntax Tree` shows syntax tree of the current file/selection. | 158 | * `Rust Analyzer: Syntax Tree` shows syntax tree of the current file/selection. |
159 | 159 | ||
diff --git a/docs/dev/architecture.md b/docs/dev/architecture.md index 1ffabc6ef..5ec5352e7 100644 --- a/docs/dev/architecture.md +++ b/docs/dev/architecture.md | |||
@@ -45,21 +45,15 @@ can be quickly updated for small modifications. | |||
45 | Some of the components of this repository are generated through automatic | 45 | Some of the components of this repository are generated through automatic |
46 | processes. These are outlined below: | 46 | processes. These are outlined below: |
47 | 47 | ||
48 | - `gen-syntax`: The kinds of tokens that are reused in several places, so a generator | 48 | - `cargo xtask codegen`: The kinds of tokens that are reused in several places, so a generator |
49 | is used. We use tera templates to generate the files listed below, based on | 49 | is used. We use `quote!` macro to generate the files listed below, based on |
50 | the grammar described in [grammar.ron]: | 50 | the grammar described in [grammar.ron]: |
51 | - [ast/generated.rs][ast generated] in `ra_syntax` based on | 51 | - [ast/generated.rs][ast generated] |
52 | [ast/generated.tera.rs][ast source] | 52 | - [syntax_kind/generated.rs][syntax_kind generated] |
53 | - [syntax_kind/generated.rs][syntax_kind generated] in `ra_syntax` based on | ||
54 | [syntax_kind/generated.tera.rs][syntax_kind source] | ||
55 | 53 | ||
56 | [tera]: https://tera.netlify.com/ | ||
57 | [grammar.ron]: ../../crates/ra_syntax/src/grammar.ron | 54 | [grammar.ron]: ../../crates/ra_syntax/src/grammar.ron |
58 | [ast generated]: ../../crates/ra_syntax/src/ast/generated.rs | 55 | [ast generated]: ../../crates/ra_syntax/src/ast/generated.rs |
59 | [ast source]: ../../crates/ra_syntax/src/ast/generated.rs.tera | ||
60 | [syntax_kind generated]: ../../crates/ra_parser/src/syntax_kind/generated.rs | 56 | [syntax_kind generated]: ../../crates/ra_parser/src/syntax_kind/generated.rs |
61 | [syntax_kind source]: ../../crates/ra_parser/src/syntax_kind/generated.rs.tera | ||
62 | |||
63 | 57 | ||
64 | ## Code Walk-Through | 58 | ## Code Walk-Through |
65 | 59 | ||
@@ -77,7 +71,7 @@ Rust syntax tree structure and parser. See | |||
77 | This is the thing that turns a flat list of events into a tree (see `EventProcessor`) | 71 | This is the thing that turns a flat list of events into a tree (see `EventProcessor`) |
78 | - `ast` provides a type safe API on top of the raw `rowan` tree. | 72 | - `ast` provides a type safe API on top of the raw `rowan` tree. |
79 | - `grammar.ron` RON description of the grammar, which is used to | 73 | - `grammar.ron` RON description of the grammar, which is used to |
80 | generate `syntax_kinds` and `ast` modules, using `cargo gen-syntax` command. | 74 | generate `syntax_kinds` and `ast` modules, using `cargo xtask codegen` command. |
81 | - `algo`: generic tree algorithms, including `walk` for O(1) stack | 75 | - `algo`: generic tree algorithms, including `walk` for O(1) stack |
82 | space tree traversal (this is cool). | 76 | space tree traversal (this is cool). |
83 | 77 | ||
diff --git a/docs/user/README.md b/docs/user/README.md index 036b51d58..f1628d6a4 100644 --- a/docs/user/README.md +++ b/docs/user/README.md | |||
@@ -1,6 +1,6 @@ | |||
1 | The main interface to rust-analyzer is the | 1 | The main interface to rust-analyzer is the |
2 | [LSP](https://microsoft.github.io/language-server-protocol/) implementation. To | 2 | [LSP](https://microsoft.github.io/language-server-protocol/) implementation. To |
3 | install lsp server, use `cargo install-ra --server`, which is a shorthand for `cargo | 3 | install lsp server, use `cargo xtask install --server`, which is a shorthand for `cargo |
4 | install --package ra_lsp_server`. The binary is named `ra_lsp_server`, you | 4 | install --package ra_lsp_server`. The binary is named `ra_lsp_server`, you |
5 | should be able to use it with any LSP-compatible editor. We use custom | 5 | should be able to use it with any LSP-compatible editor. We use custom |
6 | extensions to LSP, so special client-side support is required to take full | 6 | extensions to LSP, so special client-side support is required to take full |
@@ -33,7 +33,7 @@ following commands: | |||
33 | ``` | 33 | ``` |
34 | $ git clone https://github.com/rust-analyzer/rust-analyzer.git --depth 1 | 34 | $ git clone https://github.com/rust-analyzer/rust-analyzer.git --depth 1 |
35 | $ cd rust-analyzer | 35 | $ cd rust-analyzer |
36 | $ cargo install-ra | 36 | $ cargo xtask install |
37 | ``` | 37 | ``` |
38 | 38 | ||
39 | The automatic installation is expected to *just work* for common cases, if it | 39 | The automatic installation is expected to *just work* for common cases, if it |
@@ -58,9 +58,28 @@ Beyond basic LSP features, there are some extension commands which you can | |||
58 | invoke via <kbd>Ctrl+Shift+P</kbd> or bind to a shortcut. See [./features.md](./features.md) | 58 | invoke via <kbd>Ctrl+Shift+P</kbd> or bind to a shortcut. See [./features.md](./features.md) |
59 | for details. | 59 | for details. |
60 | 60 | ||
61 | For updates, pull the latest changes from the master branch, run `cargo install-ra` again, and **restart** VS Code instance. | 61 | For updates, pull the latest changes from the master branch, run `cargo xtask install` again, and **restart** VS Code instance. |
62 | See [microsoft/vscode#72308](https://github.com/microsoft/vscode/issues/72308) for why a full restart is needed. | 62 | See [microsoft/vscode#72308](https://github.com/microsoft/vscode/issues/72308) for why a full restart is needed. |
63 | 63 | ||
64 | ### VS Code Remote | ||
65 | |||
66 | You can also use `rust-analyzer` with the Visual Studio Code Remote extensions | ||
67 | (Remote SSH, Remote WSL, Remote Containers). In this case, however, you have to | ||
68 | manually install the `.vsix` package: | ||
69 | |||
70 | 1. Build the extension on the remote host using the instructions above (ignore the | ||
71 | error if `code` cannot be found in your PATH: VSCode doesn't need to be installed | ||
72 | on the remote host). | ||
73 | 2. In Visual Studio Code open a connection to the remote host. | ||
74 | 3. Open the Extensions View (`View > Extensions`, keyboard shortcut: `Ctrl+Shift+X`). | ||
75 | 4. From the top-right kebab menu (`ยทยทยท`) select `Install from VSIX...` | ||
76 | 5. Inside the `rust-analyzer` directory find the `editors/code` subdirectory and choose | ||
77 | the `ra-lsp-0.0.1.vsix` file. | ||
78 | 6. Restart Visual Studio Code and re-establish the connection to the remote host. | ||
79 | |||
80 | In case of errors please make sure that `~/.cargo/bin` is in your `PATH` on the remote | ||
81 | host. | ||
82 | |||
64 | ### Settings | 83 | ### Settings |
65 | 84 | ||
66 | * `rust-analyzer.highlightingOn`: enables experimental syntax highlighting | 85 | * `rust-analyzer.highlightingOn`: enables experimental syntax highlighting |
@@ -79,6 +98,7 @@ See [microsoft/vscode#72308](https://github.com/microsoft/vscode/issues/72308) f | |||
79 | * `rust-analyzer.cargo-watch.command`: `cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` ) | 98 | * `rust-analyzer.cargo-watch.command`: `cargo-watch` command. (e.g: `clippy` will run as `cargo watch -x clippy` ) |
80 | * `rust-analyzer.cargo-watch.arguments`: cargo-watch check arguments. | 99 | * `rust-analyzer.cargo-watch.arguments`: cargo-watch check arguments. |
81 | (e.g: `--features="shumway,pdf"` will run as `cargo watch -x "check --features="shumway,pdf""` ) | 100 | (e.g: `--features="shumway,pdf"` will run as `cargo watch -x "check --features="shumway,pdf""` ) |
101 | * `rust-analyzer.cargo-watch.ignore`: list of patterns for cargo-watch to ignore (will be passed as `--ignore`) | ||
82 | * `rust-analyzer.trace.server`: enables internal logging | 102 | * `rust-analyzer.trace.server`: enables internal logging |
83 | * `rust-analyzer.trace.cargo-watch`: enables cargo-watch logging | 103 | * `rust-analyzer.trace.cargo-watch`: enables cargo-watch logging |
84 | * `RUST_SRC_PATH`: environment variable that overwrites the sysroot | 104 | * `RUST_SRC_PATH`: environment variable that overwrites the sysroot |
diff --git a/docs/user/features.md b/docs/user/features.md index 757a02838..8b7a8d7fc 100644 --- a/docs/user/features.md +++ b/docs/user/features.md | |||
@@ -459,17 +459,18 @@ fn foo<T: u32, F: FnOnce(T) -> T>() {} | |||
459 | fn foo<T, F>() where T: u32, F: FnOnce(T) -> T {} | 459 | fn foo<T, F>() where T: u32, F: FnOnce(T) -> T {} |
460 | ``` | 460 | ``` |
461 | 461 | ||
462 | - Make raw string | 462 | - Make raw string unescaped |
463 | 463 | ||
464 | ```rust | 464 | ```rust |
465 | // before: | 465 | // before: |
466 | fn f() { | 466 | fn f() { |
467 | let s = <|>"abcd"; | 467 | let s = <|>"ab\ncd"; |
468 | } | 468 | } |
469 | 469 | ||
470 | // after: | 470 | // after: |
471 | fn f() { | 471 | fn f() { |
472 | let s = <|>r"abcd"; | 472 | let s = <|>r#"ab |
473 | cd"#; | ||
473 | } | 474 | } |
474 | ``` | 475 | ``` |
475 | 476 | ||