175 lines
4.5 KiB
Plaintext
175 lines
4.5 KiB
Plaintext
=== 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.
|
|
|
|
|===
|
|
| Editor | Action Name
|
|
|
|
| VS Code | **Go to Type Definition*
|
|
|===
|
|
|
|
|
|
=== Join Lines
|
|
**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/join_lines.rs[join_lines.rs]
|
|
|
|
|
|
Join selected lines into one, smartly fixing up whitespace, trailing commas, and braces.
|
|
|
|
|===
|
|
| Editor | Action Name
|
|
|
|
| VS Code | **Rust Analyzer: Join lines**
|
|
|===
|
|
|
|
|
|
=== Matching Brace
|
|
**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/matching_brace.rs[matching_brace.rs]
|
|
|
|
|
|
If the cursor is on any brace (`<>(){}[]`) which is a part of a brace-pair,
|
|
moves cursor to the matching brace. It uses the actual parser to determine
|
|
braces, so it won't confuse generics with comparisons.
|
|
|
|
|===
|
|
| Editor | Action Name
|
|
|
|
| VS Code | **Rust Analyzer: Find matching brace**
|
|
|===
|
|
|
|
|
|
=== 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
|
|
|
|
|
|
=== Parent Module
|
|
**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/parent_module.rs[parent_module.rs]
|
|
|
|
|
|
Navigates to the parent module of the current module.
|
|
|
|
|===
|
|
| Editor | Action Name
|
|
|
|
| VS Code | **Rust Analyzer: Locate parent module**
|
|
|===
|
|
|
|
|
|
=== Run
|
|
**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/runnables.rs[runnables.rs]
|
|
|
|
|
|
Shows a popup suggesting to run a test/benchmark/binary **at the current cursor
|
|
location**. Super useful for repeatedly running just a single test. Do bind this
|
|
to a shortcut!
|
|
|
|
|===
|
|
| Editor | Action Name
|
|
|
|
| VS Code | **Rust Analyzer: Run**
|
|
|===
|
|
|
|
|
|
=== Show Syntax Tree
|
|
**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/syntax_tree.rs[syntax_tree.rs]
|
|
|
|
|
|
Shows the parse tree of the current file. It exists mostly for debugging
|
|
rust-analyzer itself.
|
|
|
|
|===
|
|
| Editor | Action Name
|
|
|
|
| VS Code | **Rust Analyzer: Show Syntax Tree**
|
|
|===
|
|
|
|
|
|
=== 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]
|
|
|===
|