Skip to content

Commit 3ff170d

Browse files
committed
Trigger parameter info automatically
See microsoft/vscode#64023
1 parent 4e7f6c2 commit 3ff170d

File tree

3 files changed

+26
-0
lines changed

3 files changed

+26
-0
lines changed

crates/ra_ide/src/completion/completion_item.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ pub struct CompletionItem {
4747

4848
/// Whether this item is marked as deprecated
4949
deprecated: bool,
50+
51+
/// If completing a function call, ask the editor to show parameter popup
52+
/// after completion.
53+
trigger_call_info: bool,
5054
}
5155

5256
// We use custom debug for CompletionItem to make `insta`'s diffs more readable.
@@ -139,6 +143,7 @@ impl CompletionItem {
139143
kind: None,
140144
text_edit: None,
141145
deprecated: None,
146+
trigger_call_info: None,
142147
}
143148
}
144149
/// What user sees in pop-up in the UI.
@@ -177,6 +182,10 @@ impl CompletionItem {
177182
pub fn deprecated(&self) -> bool {
178183
self.deprecated
179184
}
185+
186+
pub fn trigger_call_info(&self) -> bool {
187+
self.trigger_call_info
188+
}
180189
}
181190

182191
/// A helper to make `CompletionItem`s.
@@ -193,6 +202,7 @@ pub(crate) struct Builder {
193202
kind: Option<CompletionItemKind>,
194203
text_edit: Option<TextEdit>,
195204
deprecated: Option<bool>,
205+
trigger_call_info: Option<bool>,
196206
}
197207

198208
impl Builder {
@@ -221,6 +231,7 @@ impl Builder {
221231
kind: self.kind,
222232
completion_kind: self.completion_kind,
223233
deprecated: self.deprecated.unwrap_or(false),
234+
trigger_call_info: self.trigger_call_info.unwrap_or(false),
224235
}
225236
}
226237
pub(crate) fn lookup_by(mut self, lookup: impl Into<String>) -> Builder {
@@ -271,6 +282,10 @@ impl Builder {
271282
self.deprecated = Some(deprecated);
272283
self
273284
}
285+
pub(crate) fn trigger_call_info(mut self) -> Builder {
286+
self.trigger_call_info = Some(true);
287+
self
288+
}
274289
}
275290

276291
impl<'a> Into<CompletionItem> for Builder {

crates/ra_ide/src/completion/presentation.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -221,6 +221,7 @@ impl Completions {
221221
let (snippet, label) = if params.is_empty() || has_self_param && params.len() == 1 {
222222
(format!("{}()$0", name), format!("{}()", name))
223223
} else {
224+
builder = builder.trigger_call_info();
224225
let snippet = if ctx
225226
.db
226227
.feature_flags

crates/rust-analyzer/src/conv.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,16 @@ impl ConvWith<(&LineIndex, LineEndings)> for CompletionItem {
150150
additional_text_edits: Some(additional_text_edits),
151151
documentation: self.documentation().map(|it| it.conv()),
152152
deprecated: Some(self.deprecated()),
153+
command: if self.trigger_call_info() {
154+
let cmd = lsp_types::Command {
155+
title: "triggerParameterHints".into(),
156+
command: "editor.action.triggerParameterHints".into(),
157+
arguments: None,
158+
};
159+
Some(cmd)
160+
} else {
161+
None
162+
},
153163
..Default::default()
154164
};
155165

0 commit comments

Comments
 (0)