diff options
Diffstat (limited to 'crates/ra_analysis/src/lib.rs')
-rw-r--r-- | crates/ra_analysis/src/lib.rs | 20 |
1 files changed, 16 insertions, 4 deletions
diff --git a/crates/ra_analysis/src/lib.rs b/crates/ra_analysis/src/lib.rs index 4d8bdb61b..75867ee86 100644 --- a/crates/ra_analysis/src/lib.rs +++ b/crates/ra_analysis/src/lib.rs | |||
@@ -24,7 +24,7 @@ mod macros; | |||
24 | use std::{fmt, sync::Arc}; | 24 | use std::{fmt, sync::Arc}; |
25 | 25 | ||
26 | use rustc_hash::FxHashMap; | 26 | use rustc_hash::FxHashMap; |
27 | use ra_syntax::{SourceFileNode, TextRange, TextUnit}; | 27 | use ra_syntax::{SourceFileNode, TextRange, TextUnit, SmolStr, SyntaxKind}; |
28 | use ra_text_edit::TextEdit; | 28 | use ra_text_edit::TextEdit; |
29 | use rayon::prelude::*; | 29 | use rayon::prelude::*; |
30 | use relative_path::RelativePathBuf; | 30 | use relative_path::RelativePathBuf; |
@@ -251,6 +251,12 @@ pub struct NavigationTarget { | |||
251 | } | 251 | } |
252 | 252 | ||
253 | impl NavigationTarget { | 253 | impl NavigationTarget { |
254 | pub fn name(&self) -> SmolStr { | ||
255 | self.symbol.name.clone() | ||
256 | } | ||
257 | pub fn kind(&self) -> SyntaxKind { | ||
258 | self.symbol.kind | ||
259 | } | ||
254 | pub fn file_id(&self) -> FileId { | 260 | pub fn file_id(&self) -> FileId { |
255 | self.file_id | 261 | self.file_id |
256 | } | 262 | } |
@@ -337,8 +343,14 @@ impl Analysis { | |||
337 | let file = self.imp.file_syntax(file_id); | 343 | let file = self.imp.file_syntax(file_id); |
338 | ra_editor::folding_ranges(&file) | 344 | ra_editor::folding_ranges(&file) |
339 | } | 345 | } |
340 | pub fn symbol_search(&self, query: Query) -> Cancelable<Vec<(FileId, FileSymbol)>> { | 346 | pub fn symbol_search(&self, query: Query) -> Cancelable<Vec<NavigationTarget>> { |
341 | self.imp.world_symbols(query) | 347 | let res = self |
348 | .imp | ||
349 | .world_symbols(query)? | ||
350 | .into_iter() | ||
351 | .map(|(file_id, symbol)| NavigationTarget { file_id, symbol }) | ||
352 | .collect(); | ||
353 | Ok(res) | ||
342 | } | 354 | } |
343 | pub fn approximately_resolve_symbol( | 355 | pub fn approximately_resolve_symbol( |
344 | &self, | 356 | &self, |
@@ -352,7 +364,7 @@ impl Analysis { | |||
352 | pub fn doc_text_for(&self, nav: NavigationTarget) -> Cancelable<Option<String>> { | 364 | pub fn doc_text_for(&self, nav: NavigationTarget) -> Cancelable<Option<String>> { |
353 | self.imp.doc_text_for(nav) | 365 | self.imp.doc_text_for(nav) |
354 | } | 366 | } |
355 | pub fn parent_module(&self, position: FilePosition) -> Cancelable<Vec<(FileId, FileSymbol)>> { | 367 | pub fn parent_module(&self, position: FilePosition) -> Cancelable<Vec<NavigationTarget>> { |
356 | self.imp.parent_module(position) | 368 | self.imp.parent_module(position) |
357 | } | 369 | } |
358 | pub fn module_path(&self, position: FilePosition) -> Cancelable<Option<String>> { | 370 | pub fn module_path(&self, position: FilePosition) -> Cancelable<Option<String>> { |