diff options
author | Benjamin Coenen <[email protected]> | 2020-05-01 15:26:30 +0100 |
---|---|---|
committer | Benjamin Coenen <[email protected]> | 2020-05-01 15:26:30 +0100 |
commit | dc34162450797f5756ce2b44f1a3fe73d8e2dce4 (patch) | |
tree | 0883abc2d87f8b9704b49f5662da04b73ffedbf6 /docs | |
parent | bbe22640b8d52354c3de3e126c9fcda5b1b174fd (diff) | |
parent | a5f2b16366f027ad60c58266a66eb7fbdcbda9f9 (diff) |
Merge branch 'master' of github.com:rust-analyzer/rust-analyzer
Diffstat (limited to 'docs')
-rw-r--r-- | docs/dev/syntax.md | 2 | ||||
-rw-r--r-- | docs/user/features.md | 4 | ||||
-rw-r--r-- | docs/user/readme.adoc | 29 |
3 files changed, 26 insertions, 9 deletions
diff --git a/docs/dev/syntax.md b/docs/dev/syntax.md index 4dd1de659..33973ffec 100644 --- a/docs/dev/syntax.md +++ b/docs/dev/syntax.md | |||
@@ -35,7 +35,7 @@ The syntax tree consists of three layers: | |||
35 | * AST | 35 | * AST |
36 | 36 | ||
37 | Of these, only GreenNodes store the actual data, the other two layers are (non-trivial) views into green tree. | 37 | Of these, only GreenNodes store the actual data, the other two layers are (non-trivial) views into green tree. |
38 | Red-green terminology comes from Roslyn ([link](https://docs.microsoft.com/en-ie/archive/blogs/ericlippert/persistence-facades-and-roslyns-red-green-trees)) and gives the name to the `rowan` library. Green and syntax nodes are defined in rowan, ast is defined in rust-analyzer. | 38 | Red-green terminology comes from Roslyn ([link](https://ericlippert.com/2012/06/08/red-green-trees/)) and gives the name to the `rowan` library. Green and syntax nodes are defined in rowan, ast is defined in rust-analyzer. |
39 | 39 | ||
40 | Syntax trees are a semi-transient data structure. | 40 | Syntax trees are a semi-transient data structure. |
41 | In general, frontend does not keep syntax trees for all files in memory. | 41 | In general, frontend does not keep syntax trees for all files in memory. |
diff --git a/docs/user/features.md b/docs/user/features.md index 56d2969fd..b9a365fc1 100644 --- a/docs/user/features.md +++ b/docs/user/features.md | |||
@@ -140,8 +140,8 @@ space or `;` depending on the return type of the function. | |||
140 | When completing a function call, `()` are automatically inserted. If a function | 140 | When completing a function call, `()` are automatically inserted. If a function |
141 | takes arguments, the cursor is positioned inside the parenthesis. | 141 | takes arguments, the cursor is positioned inside the parenthesis. |
142 | 142 | ||
143 | There are postifx completions, which can be triggerd by typing something like | 143 | There are postfix completions, which can be triggered by typing something like |
144 | `foo().if`. The word after `.` determines postifx completion. Possible variants are: | 144 | `foo().if`. The word after `.` determines postfix completion. Possible variants are: |
145 | 145 | ||
146 | - `expr.if` -> `if expr {}` | 146 | - `expr.if` -> `if expr {}` |
147 | - `expr.match` -> `match expr {}` | 147 | - `expr.match` -> `match expr {}` |
diff --git a/docs/user/readme.adoc b/docs/user/readme.adoc index 76d065d35..4cb1e23e8 100644 --- a/docs/user/readme.adoc +++ b/docs/user/readme.adoc | |||
@@ -111,7 +111,7 @@ Here are some useful self-diagnostic commands: | |||
111 | === rust-analyzer Language Server Binary | 111 | === rust-analyzer Language Server Binary |
112 | 112 | ||
113 | Other editors generally require the `rust-analyzer` binary to be in `$PATH`. | 113 | Other editors generally require the `rust-analyzer` binary to be in `$PATH`. |
114 | You can download the pre-built binary from the https://github.com/rust-analyzer/rust-analyzer/releases[releases] page. Typically, you then need to rename the binary for your platform, e.g. `rust-analyzer-mac` if you're on Mac OS, to `rust-analzyer` and make it executable in addition to moving it into a directory in your `$PATH`. | 114 | You can download the pre-built binary from the https://github.com/rust-analyzer/rust-analyzer/releases[releases] page. 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`. |
115 | 115 | ||
116 | On Linux to install the `rust-analyzer` binary into `~/.local/bin`, this commands could be used | 116 | On Linux to install the `rust-analyzer` binary into `~/.local/bin`, this commands could be used |
117 | 117 | ||
@@ -169,13 +169,15 @@ The are several LSP client implementations for vim: | |||
169 | 169 | ||
170 | 1. Install coc.nvim by following the instructions at | 170 | 1. Install coc.nvim by following the instructions at |
171 | https://github.com/neoclide/coc.nvim[coc.nvim] | 171 | https://github.com/neoclide/coc.nvim[coc.nvim] |
172 | (nodejs required) | 172 | (Node.js required) |
173 | 2. Run `:CocInstall coc-rust-analyzer` to install | 173 | 2. Run `:CocInstall coc-rust-analyzer` to install |
174 | https://github.com/fannheyward/coc-rust-analyzer[coc-rust-analyzer], | 174 | https://github.com/fannheyward/coc-rust-analyzer[coc-rust-analyzer], |
175 | this extension implements _most_ of the features supported in the VSCode extension: | 175 | this extension implements _most_ of the features supported in the VSCode extension: |
176 | * automatically install and upgrade stable/nightly releases | ||
176 | * same configurations as VSCode extension, `rust-analyzer.serverPath`, `rust-analyzer.cargo.features` etc. | 177 | * same configurations as VSCode extension, `rust-analyzer.serverPath`, `rust-analyzer.cargo.features` etc. |
177 | * same commands too, `rust-analyzer.analyzerStatus`, `rust-analyzer.ssr` etc. | 178 | * same commands too, `rust-analyzer.analyzerStatus`, `rust-analyzer.ssr` etc. |
178 | * highlighting and inlay_hints are not implemented yet | 179 | * inlay hints for method chaining support, _Neovim Only_ |
180 | * semantic highlighting is not implemented yet | ||
179 | 181 | ||
180 | ==== LanguageClient-neovim | 182 | ==== LanguageClient-neovim |
181 | 183 | ||
@@ -195,7 +197,7 @@ let g:LanguageClient_serverCommands = { | |||
195 | ==== YouCompleteMe | 197 | ==== YouCompleteMe |
196 | 198 | ||
197 | 1. Install YouCompleteMe by following the instructions | 199 | 1. Install YouCompleteMe by following the instructions |
198 | https://ycm-core.github.io/YouCompleteMe/#rust-semantic-completion[here] | 200 | https://github.com/ycm-core/lsp-examples#rust-rust-analyzer[here] |
199 | 201 | ||
200 | 2. Configure by adding this to your vim/neovim config file (replacing the existing Rust-specific line if it exists): | 202 | 2. Configure by adding this to your vim/neovim config file (replacing the existing Rust-specific line if it exists): |
201 | + | 203 | + |
@@ -212,6 +214,21 @@ let g:ycm_language_server = | |||
212 | \ ] | 214 | \ ] |
213 | ---- | 215 | ---- |
214 | 216 | ||
217 | ==== ALE | ||
218 | |||
219 | To add the LSP server to https://github.com/dense-analysis/ale[ale]: | ||
220 | |||
221 | [source,vim] | ||
222 | ---- | ||
223 | call ale#linter#Define('rust', { | ||
224 | \ 'name': 'rust-analyzer', | ||
225 | \ 'lsp': 'stdio', | ||
226 | \ 'executable': 'rust-analyzer', | ||
227 | \ 'command': '%e', | ||
228 | \ 'project_root': '.', | ||
229 | \}) | ||
230 | ---- | ||
231 | |||
215 | ==== nvim-lsp | 232 | ==== nvim-lsp |
216 | 233 | ||
217 | NeoVim 0.5 (not yet released) has built-in language server support. | 234 | NeoVim 0.5 (not yet released) has built-in language server support. |
@@ -229,9 +246,9 @@ You also need the `LSP` package. To install it: | |||
229 | * Type `Install Package Control`, press enter | 246 | * Type `Install Package Control`, press enter |
230 | 2. In the command palette, run `Package control: Install package`, and in the list that pops up, type `LSP` and press enter. | 247 | 2. In the command palette, run `Package control: Install package`, and in the list that pops up, type `LSP` and press enter. |
231 | 248 | ||
232 | Finally, with your Rust project open, in the command palette, run `LSP: Enable Language Server In Project` or `LSP: Enable Language Server Globally`, then select `rust-analyzer` in the list that pops up to enable the rust-analyzer LSP. The latter means that rust-analzyer is enabled by default in Rust projects. | 249 | Finally, with your Rust project open, in the command palette, run `LSP: Enable Language Server In Project` or `LSP: Enable Language Server Globally`, then select `rust-analyzer` in the list that pops up to enable the rust-analyzer LSP. The latter means that rust-analyzer is enabled by default in Rust projects. |
233 | 250 | ||
234 | If it worked, you should see "rust-analzyer, Line X, Column Y" on the left side of the bottom bar, and after waiting a bit, functionality like tooltips on hovering over variables should become available. | 251 | If it worked, you should see "rust-analyzer, Line X, Column Y" on the left side of the bottom bar, and after waiting a bit, functionality like tooltips on hovering over variables should become available. |
235 | 252 | ||
236 | If you get an error saying `No such file or directory: 'rust-analyzer'`, see the <<rust-analyzer-language-server-binary,`rust-analyzer` binary>> section on installing the language server binary. | 253 | If you get an error saying `No such file or directory: 'rust-analyzer'`, see the <<rust-analyzer-language-server-binary,`rust-analyzer` binary>> section on installing the language server binary. |
237 | 254 | ||