From c8f27a4a886413a15a2a6af4a87b39b901c873a8 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sun, 31 May 2020 01:54:54 +0200 Subject: Generate features docs from source --- docs/user/features.md | 52 --------------------- docs/user/generated_features.adoc | 98 +++++++++++++++++++++++++++++++++++++++ docs/user/readme.adoc | 5 +- 3 files changed, 101 insertions(+), 54 deletions(-) create mode 100644 docs/user/generated_features.adoc (limited to 'docs') diff --git a/docs/user/features.md b/docs/user/features.md index 12ecdec13..4d9402252 100644 --- a/docs/user/features.md +++ b/docs/user/features.md @@ -2,58 +2,6 @@ This document is an index of features that the rust-analyzer language server provides. Shortcuts are for the default VS Code layout. If there's no shortcut, you can use Ctrl+Shift+P to search for the corresponding action. -### Workspace Symbol ctrl+t - -Uses fuzzy-search to find types, modules and functions by name across your -project and dependencies. This is **the** most useful feature, which improves code -navigation tremendously. It mostly works on top of the built-in LSP -functionality, however `#` and `*` symbols can be used to narrow down the -search. Specifically, - -- `Foo` searches for `Foo` type in the current workspace -- `foo#` searches for `foo` function in the current workspace -- `Foo*` searches for `Foo` type among dependencies, including `stdlib` -- `foo#*` searches for `foo` function among dependencies - -That is, `#` switches from "types" to all symbols, `*` switches from the current -workspace to dependencies. - -### Document Symbol ctrl+shift+o - -Provides a tree of the symbols defined in the file. Can be used to - -* fuzzy search symbol in a file (super useful) -* draw breadcrumbs to describe the context around the cursor -* draw outline of the file - -### On Typing Assists - -Some features trigger on typing certain characters: - -- typing `let =` tries to smartly add `;` if `=` is followed by an existing expression -- Enter inside comments automatically inserts `///` -- typing `.` in a chain method call auto-indents - -### Extend Selection - -Extends the current selection to the encompassing syntactic construct -(expression, statement, item, module, etc). It works with multiple cursors. This -is a relatively new feature of LSP: -https://github.com/Microsoft/language-server-protocol/issues/613, check your -editor's LSP library to see if this feature is supported. - -### Go to Definition - -Navigates to the definition of an identifier. - -### Go to Implementation - -Navigates to the impl block of structs, enums or traits. Also implemented as a code lens. - -### Go to Type Defintion - -Navigates to the type of an identifier. - ### Commands ctrl+shift+p #### Run diff --git a/docs/user/generated_features.adoc b/docs/user/generated_features.adoc new file mode 100644 index 000000000..e1eb5d88a --- /dev/null +++ b/docs/user/generated_features.adoc @@ -0,0 +1,98 @@ +=== Extend Selection +**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/extend_selection.rs[extend_selection.rs] + + +Extends the current selection to the encompassing syntactic construct +(expression, statement, item, module, etc). It works with multiple cursors. + +|=== +| Editor | Shortcut + +| VS Code | kbd:[Ctrl+Shift+→] +|=== + + +=== File Structure +**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/display/structure.rs[structure.rs] + + +Provides a tree of the symbols defined in the file. Can be used to + +* fuzzy search symbol in a file (super useful) +* draw breadcrumbs to describe the context around the cursor +* draw outline of the file + +|=== +| Editor | Shortcut + +| VS Code | kbd:[Ctrl+Shift+O] +|=== + + +=== Go To Definition +**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/goto_definition.rs[goto_definition.rs] + + +Navigates to the definition of an identifier. + +|=== +| Editor | Shortcut + +| VS Code | kbd:[F12] +|=== + + +=== Go To Implementation +**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/goto_implementation.rs[goto_implementation.rs] + + +Navigates to the impl block of structs, enums or traits. Also implemented as a code lens. + +|=== +| Editor | Shortcut + +| VS Code | kbd:[Ctrl+F12] +|=== + + +=== Go To Type Definition +**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/goto_type_definition.rs[goto_type_definition.rs] + + +Navigates to the type of an identifier. + + +=== On Typing Assists +**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/typing.rs[typing.rs] + + +Some features trigger on typing certain characters: + +- typing `let =` tries to smartly add `;` if `=` is followed by an existing expression +- Enter inside comments automatically inserts `///` +- typing `.` in a chain method call auto-indents + + +=== Workspace Symbol +**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide_db/src/symbol_index.rs[symbol_index.rs] + + +Uses fuzzy-search to find types, modules and functions by name across your +project and dependencies. This is **the** most useful feature, which improves code +navigation tremendously. It mostly works on top of the built-in LSP +functionality, however `#` and `*` symbols can be used to narrow down the +search. Specifically, + +- `Foo` searches for `Foo` type in the current workspace +- `foo#` searches for `foo` function in the current workspace +- `Foo*` searches for `Foo` type among dependencies, including `stdlib` +- `foo#*` searches for `foo` function among dependencies + +That is, `#` switches from "types" to all symbols, `*` switches from the current +workspace to dependencies. + +|=== +| Editor | Shortcut + +| VS Code | kbd:[Ctrl+T] +|=== diff --git a/docs/user/readme.adoc b/docs/user/readme.adoc index 64bd0feb1..7b159bfc6 100644 --- a/docs/user/readme.adoc +++ b/docs/user/readme.adoc @@ -8,6 +8,7 @@ :important-caption: :heavy_exclamation_mark: :caution-caption: :fire: :warning-caption: :warning: +:experimental: // Master copy of this document lives in the https://github.com/rust-analyzer/rust-analyzer repository @@ -268,6 +269,6 @@ Gnome Builder currently has support for RLS, and there's no way to configure the 1. Rename, symlink or copy the `rust-analyzer` binary to `rls` and place it somewhere Builder can find (in `PATH`, or under `~/.cargo/bin`). 2. Enable the Rust Builder plugin. -== Usage +== Features -See https://github.com/rust-analyzer/rust-analyzer/blob/master/docs/user/features.md[features.md]. +include::./generated_features.adoc[] -- cgit v1.2.3