diff options
Diffstat (limited to 'crates/ra_ide_api/src/completion/completion_context.rs')
-rw-r--r-- | crates/ra_ide_api/src/completion/completion_context.rs | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/crates/ra_ide_api/src/completion/completion_context.rs b/crates/ra_ide_api/src/completion/completion_context.rs index e537e0082..b09c66c18 100644 --- a/crates/ra_ide_api/src/completion/completion_context.rs +++ b/crates/ra_ide_api/src/completion/completion_context.rs | |||
@@ -12,7 +12,7 @@ use crate::{db, FilePosition}; | |||
12 | /// `CompletionContext` is created early during completion to figure out, where | 12 | /// `CompletionContext` is created early during completion to figure out, where |
13 | /// exactly is the cursor, syntax-wise. | 13 | /// exactly is the cursor, syntax-wise. |
14 | #[derive(Debug)] | 14 | #[derive(Debug)] |
15 | pub(super) struct CompletionContext<'a> { | 15 | pub(crate) struct CompletionContext<'a> { |
16 | pub(super) db: &'a db::RootDatabase, | 16 | pub(super) db: &'a db::RootDatabase, |
17 | pub(super) offset: TextUnit, | 17 | pub(super) offset: TextUnit, |
18 | pub(super) leaf: &'a SyntaxNode, | 18 | pub(super) leaf: &'a SyntaxNode, |
@@ -65,6 +65,17 @@ impl<'a> CompletionContext<'a> { | |||
65 | Some(ctx) | 65 | Some(ctx) |
66 | } | 66 | } |
67 | 67 | ||
68 | // The range of the identifier that is being completed. | ||
69 | // This is purely advisory and can be used, for example, to highlight this range in the editor. | ||
70 | // Clients are expected to ignore this field. | ||
71 | pub(crate) fn source_range(&self) -> TextRange { | ||
72 | match self.leaf.kind() { | ||
73 | // workaroud when completion is triggered by trigger characters. | ||
74 | DOT | COLONCOLON => TextRange::from_to(self.offset, self.offset), | ||
75 | _ => self.leaf.range(), | ||
76 | } | ||
77 | } | ||
78 | |||
68 | fn fill(&mut self, original_file: &'a SourceFile, offset: TextUnit) { | 79 | fn fill(&mut self, original_file: &'a SourceFile, offset: TextUnit) { |
69 | // Insert a fake ident to get a valid parse tree. We will use this file | 80 | // Insert a fake ident to get a valid parse tree. We will use this file |
70 | // to determine context, though the original_file will be used for | 81 | // to determine context, though the original_file will be used for |