aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/dev/README.md12
-rw-r--r--docs/dev/architecture.md16
-rw-r--r--docs/user/README.md26
-rw-r--r--docs/user/features.md7
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
15We also publish rustdoc docs to pages: 15We also publish rustdoc docs to pages:
16 16
17https://rust-analyzer.github.io/rust-analyzer/ra_ide_api/index.html 17https://rust-analyzer.github.io/rust-analyzer/api-docs/ra_ide_api/
18 18
19Various organizational and process issues are discussed in this document. 19Various 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
65typescript) and Emacs (in elisp). The `docs` top-level directory contains both 65typescript) and Emacs (in elisp). The `docs` top-level directory contains both
66developer and user documentation. 66developer and user documentation.
67 67
68We have some automation infra in Rust in the `crates/tool` package. It contains 68We have some automation infra in Rust in the `xtask` package. It contains
69stuff like formatting checking, code generation and powers `cargo install-ra`. 69stuff like formatting checking, code generation and powers `cargo xtask install`.
70The latter syntax is achieved with the help of cargo aliases (see `.cargo` 70The latter syntax is achieved with the help of cargo aliases (see `.cargo`
71directory). 71directory).
72 72
@@ -84,7 +84,7 @@ However, launching a VS Code instance with locally build language server is
84possible. There's even a VS Code task for this, so just <kbd>F5</kbd> should 84possible. There's even a VS Code task for this, so just <kbd>F5</kbd> should
85work (thanks, [@andrew-w-ross](https://github.com/andrew-w-ross)!). 85work (thanks, [@andrew-w-ross](https://github.com/andrew-w-ross)!).
86 86
87I often just install development version with `cargo install-ra --server --jemalloc` and 87I often just install development version with `cargo xtask install --server --jemalloc` and
88restart the host VS Code. 88restart the host VS Code.
89 89
90See [./debugging.md](./debugging.md) for how to attach to rust-analyzer with 90See [./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
116on CI**. When making changes to the extension please ensure the tests are not 116on CI**. When making changes to the extension please ensure the tests are not
117broken locally before opening a Pull Request. 117broken locally before opening a Pull Request.
118 118
119To install **only** the VS Code extension, use `cargo install-ra --client-code`. 119To 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.
45Some of the components of this repository are generated through automatic 45Some of the components of this repository are generated through automatic
46processes. These are outlined below: 46processes. 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 @@
1The main interface to rust-analyzer is the 1The 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
3install lsp server, use `cargo install-ra --server`, which is a shorthand for `cargo 3install lsp server, use `cargo xtask install --server`, which is a shorthand for `cargo
4install --package ra_lsp_server`. The binary is named `ra_lsp_server`, you 4install --package ra_lsp_server`. The binary is named `ra_lsp_server`, you
5should be able to use it with any LSP-compatible editor. We use custom 5should be able to use it with any LSP-compatible editor. We use custom
6extensions to LSP, so special client-side support is required to take full 6extensions 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
39The automatic installation is expected to *just work* for common cases, if it 39The 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
58invoke via <kbd>Ctrl+Shift+P</kbd> or bind to a shortcut. See [./features.md](./features.md) 58invoke via <kbd>Ctrl+Shift+P</kbd> or bind to a shortcut. See [./features.md](./features.md)
59for details. 59for details.
60 60
61For updates, pull the latest changes from the master branch, run `cargo install-ra` again, and **restart** VS Code instance. 61For updates, pull the latest changes from the master branch, run `cargo xtask install` again, and **restart** VS Code instance.
62See [microsoft/vscode#72308](https://github.com/microsoft/vscode/issues/72308) for why a full restart is needed. 62See [microsoft/vscode#72308](https://github.com/microsoft/vscode/issues/72308) for why a full restart is needed.
63 63
64### VS Code Remote
65
66You 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
68manually install the `.vsix` package:
69
701. 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).
732. In Visual Studio Code open a connection to the remote host.
743. Open the Extensions View (`View > Extensions`, keyboard shortcut: `Ctrl+Shift+X`).
754. From the top-right kebab menu (`ยทยทยท`) select `Install from VSIX...`
765. Inside the `rust-analyzer` directory find the `editors/code` subdirectory and choose
77 the `ra-lsp-0.0.1.vsix` file.
786. Restart Visual Studio Code and re-establish the connection to the remote host.
79
80In case of errors please make sure that `~/.cargo/bin` is in your `PATH` on the remote
81host.
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>() {}
459fn foo<T, F>() where T: u32, F: FnOnce(T) -> T {} 459fn 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:
466fn f() { 466fn f() {
467 let s = <|>"abcd"; 467 let s = <|>"ab\ncd";
468} 468}
469 469
470// after: 470// after:
471fn f() { 471fn f() {
472 let s = <|>r"abcd"; 472 let s = <|>r#"ab
473cd"#;
473} 474}
474``` 475```
475 476