Specify actions

This commit is contained in:
Aleksey Kladov 2020-05-31 09:45:41 +02:00
parent c116171879
commit f593393ebb
7 changed files with 64 additions and 17 deletions

View File

@ -17,7 +17,7 @@ use crate::{
FilePosition, NavigationTarget, RangeInfo,
};
// Feature: Go To Definition
// Feature: Go to Definition
//
// Navigates to the definition of an identifier.
//

View File

@ -6,7 +6,7 @@ use ra_syntax::{algo::find_node_at_offset, ast, AstNode};
use crate::{display::ToNav, FilePosition, NavigationTarget, RangeInfo};
// Feature: Go To Implementation
// Feature: Go to Implementation
//
// Navigates to the impl block of structs, enums or traits. Also implemented as a code lens.
//

View File

@ -5,9 +5,15 @@ use ra_syntax::{ast, match_ast, AstNode, SyntaxKind::*, SyntaxToken, TokenAtOffs
use crate::{display::ToNav, FilePosition, NavigationTarget, RangeInfo};
// Feature: Go To Type Definition
// Feature: Go to Type Definition
//
// Navigates to the type of an identifier.
//
// |===
// | Editor | Action Name
//
// | VS Code | **Go to Type Definition*
// |===
pub(crate) fn goto_type_definition(
db: &RootDatabase,
position: FilePosition,

View File

@ -44,6 +44,17 @@ pub enum RunnableKind {
Bin,
}
// Feature: Run
//
// 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**
// |===
pub(crate) fn runnables(db: &RootDatabase, file_id: FileId) -> Vec<Runnable> {
let sema = Semantics::new(db);
let source_file = sema.parse(file_id);

View File

@ -4,12 +4,6 @@ you can use <kbd>Ctrl+Shift+P</kbd> to search for the corresponding action.
### Commands <kbd>ctrl+shift+p</kbd>
#### Run
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!
#### Parent Module
Navigates to the parent module of the current module.

View File

@ -29,7 +29,7 @@ Provides a tree of the symbols defined in the file. Can be used to
|===
=== Go To Definition
=== Go to Definition
**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/goto_definition.rs[goto_definition.rs]
@ -42,7 +42,7 @@ Navigates to the definition of an identifier.
|===
=== Go To Implementation
=== Go to Implementation
**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/goto_implementation.rs[goto_implementation.rs]
@ -55,12 +55,18 @@ Navigates to the impl block of structs, enums or traits. Also implemented as a c
|===
=== Go To Type Definition
=== 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*
|===
=== On Typing Assists
**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide/src/typing.rs[typing.rs]
@ -73,6 +79,21 @@ Some features trigger on typing certain characters:
- typing `.` in a chain method call auto-indents
=== 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**
|===
=== Workspace Symbol
**Source:** https://github.com/rust-analyzer/rust-analyzer/blob/master/crates/ra_ide_db/src/symbol_index.rs[symbol_index.rs]

View File

@ -38,11 +38,7 @@ impl Feature {
for block in comment_blocks {
let id = block.id;
assert!(
id.split_ascii_whitespace().all(|it| it.starts_with(char::is_uppercase)),
"bad feature: {}",
id
);
assert!(is_valid_feature_name(&id), "invalid feature name: {:?}", id);
let doc = block.contents.join("\n");
acc.push(Feature { id, path: path.clone(), doc })
}
@ -52,6 +48,25 @@ impl Feature {
}
}
fn is_valid_feature_name(feature: &str) -> bool {
'word: for word in feature.split_whitespace() {
for &short in ["to"].iter() {
if word == short {
continue 'word;
}
}
for &short in ["To"].iter() {
if word == short {
return false;
}
}
if !word.starts_with(char::is_uppercase) {
return false;
}
}
true
}
impl fmt::Display for Feature {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
writeln!(f, "=== {}", self.id)?;