diff --git a/crates/ra_ide_api/src/completion/completion_context.rs b/crates/ra_ide_api/src/completion/completion_context.rs
index fd4cfc94495..7bc2def1441 100644
--- a/crates/ra_ide_api/src/completion/completion_context.rs
+++ b/crates/ra_ide_api/src/completion/completion_context.rs
@@ -69,7 +69,11 @@ impl<'a> CompletionContext<'a> {
     // This is purely advisory and can be used, for example, to highlight this range in the editor.
     // Clients are expected to ignore this field.
     pub(crate) fn source_range(&self) -> TextRange {
-        self.leaf.range()
+        match self.leaf.kind() {
+            // workaroud when completion is triggered by trigger characters.
+            DOT | COLONCOLON => TextRange::from_to(self.offset, self.offset),
+            _ => self.leaf.range()
+        }
     }
 
     fn fill(&mut self, original_file: &'a SourceFile, offset: TextUnit) {