diff options
Diffstat (limited to 'crates/ra_analysis/src/completion/completion_item.rs')
-rw-r--r-- | crates/ra_analysis/src/completion/completion_item.rs | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/crates/ra_analysis/src/completion/completion_item.rs b/crates/ra_analysis/src/completion/completion_item.rs index a3d947e5b..cd4d529f9 100644 --- a/crates/ra_analysis/src/completion/completion_item.rs +++ b/crates/ra_analysis/src/completion/completion_item.rs | |||
@@ -140,21 +140,27 @@ impl Builder { | |||
140 | PerNs { | 140 | PerNs { |
141 | values: Some(hir::Def::Function(function)), | 141 | values: Some(hir::Def::Function(function)), |
142 | .. | 142 | .. |
143 | } => { | 143 | } => return self.from_function(ctx, function), |
144 | if let Some(sig_info) = function.signature_info(ctx.db) { | ||
145 | if sig_info.params.is_empty() { | ||
146 | self.snippet = Some(format!("{}()$0", self.label)); | ||
147 | } else { | ||
148 | self.snippet = Some(format!("{}($0)", self.label)); | ||
149 | } | ||
150 | } | ||
151 | CompletionItemKind::Function | ||
152 | } | ||
153 | _ => return self, | 144 | _ => return self, |
154 | }; | 145 | }; |
155 | self.kind = Some(kind); | 146 | self.kind = Some(kind); |
156 | self | 147 | self |
157 | } | 148 | } |
149 | |||
150 | fn from_function(mut self, ctx: &CompletionContext, function: hir::Function) -> Builder { | ||
151 | // If not an import, add parenthesis automatically. | ||
152 | if ctx.use_item_syntax.is_none() { | ||
153 | if let Some(sig_info) = function.signature_info(ctx.db) { | ||
154 | if sig_info.params.is_empty() { | ||
155 | self.snippet = Some(format!("{}()$0", self.label)); | ||
156 | } else { | ||
157 | self.snippet = Some(format!("{}($0)", self.label)); | ||
158 | } | ||
159 | } | ||
160 | } | ||
161 | self.kind = Some(CompletionItemKind::Function); | ||
162 | self | ||
163 | } | ||
158 | } | 164 | } |
159 | 165 | ||
160 | impl Into<CompletionItem> for Builder { | 166 | impl Into<CompletionItem> for Builder { |