From f19a82beac18b688faa5cdb1a355485d2e429b60 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 8 Sep 2018 19:16:11 +0300 Subject: [PATCH 1/2] simplify --- crates/libsyntax2/src/parser_api.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/libsyntax2/src/parser_api.rs b/crates/libsyntax2/src/parser_api.rs index 7d97159dd0..772d753afa 100644 --- a/crates/libsyntax2/src/parser_api.rs +++ b/crates/libsyntax2/src/parser_api.rs @@ -118,7 +118,7 @@ impl<'t> Parser<'t> { pub(crate) fn err_recover(&mut self, message: &str, recovery: TokenSet) { if self.at(SyntaxKind::L_CURLY) || self.at(SyntaxKind::R_CURLY) - || recovery.contains(self.current()) { + || self.at_ts(recovery) { self.error(message); } else { let m = self.start(); From bae5938682978cff84826cee300d6cfad1b9dbd0 Mon Sep 17 00:00:00 2001 From: Aleksey Kladov Date: Sat, 8 Sep 2018 19:23:52 +0300 Subject: [PATCH 2/2] note about symbol search --- README.md | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 8f676a86b0..deb4a918cf 100644 --- a/README.md +++ b/README.md @@ -37,24 +37,28 @@ doesn't hurt too much :-) * syntax highlighting (LSP does not have API for it, so impl is hacky and sometimes fall-backs to the horrible built-in highlighting) - + * commands (`ctrl+shift+p` or keybindings) - **Show Rust Syntax Tree** (use it to verify that plugin works) - **Rust Extend Selection** (works with multiple cursors) - **Rust Matching Brace** (knows the difference between `<` and `<`) - **Rust Parent Module** - **Rust Join Lines** (deals with trailing commas) - + * **Go to symbol in file** -* **Go to symbol in workspace** (no support for Cargo deps yet) +* **Go to symbol in workspace** + - `#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, excluding `stdlib` + - Sorry for a weired UI, neither LSP, not VSCode have any sane API for filtering! :) * code actions: - Flip `,` in comma separated lists - Add `#[derive]` to struct/enum - Add `impl` block to struct/enum - Run tests at caret - + * **Go to definition** ("correct" for `mod foo;` decls, index-based for functions). @@ -71,7 +75,7 @@ doesn't hurt too much :-) space tree traversal (this is cool) and `visit` for type-driven visiting the nodes (this is double plus cool, if you understand how `Visitor` works, you understand libsyntax2). - + ### `crates/libeditor` @@ -84,7 +88,7 @@ single-file and is basically a bunch of pure functions. A stateful library for analyzing many Rust files as they change. `WorldState` is a mutable entity (clojure's atom) which holds current state, incorporates changes and handles out `World`s --- immutable -consistent snapshots of `WorldState`, which actually power analysis. +consistent snapshots of `WorldState`, which actually power analysis. ### `crates/server`