aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_analysis/src/lib.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_analysis/src/lib.rs')
-rw-r--r--crates/ra_analysis/src/lib.rs20
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;
24use std::{fmt, sync::Arc}; 24use std::{fmt, sync::Arc};
25 25
26use rustc_hash::FxHashMap; 26use rustc_hash::FxHashMap;
27use ra_syntax::{SourceFileNode, TextRange, TextUnit}; 27use ra_syntax::{SourceFileNode, TextRange, TextUnit, SmolStr, SyntaxKind};
28use ra_text_edit::TextEdit; 28use ra_text_edit::TextEdit;
29use rayon::prelude::*; 29use rayon::prelude::*;
30use relative_path::RelativePathBuf; 30use relative_path::RelativePathBuf;
@@ -251,6 +251,12 @@ pub struct NavigationTarget {
251} 251}
252 252
253impl NavigationTarget { 253impl 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>> {