Skip to content

Commit 5582402

Browse files
committed
Auto merge of #12032 - jonas-schievink:code-action-commands, r=jonas-schievink
feat: display signature help when applying "Add `::<>`" assist Closes #12031
2 parents e3ec877 + c6ffffc commit 5582402

File tree

18 files changed

+58
-16
lines changed

18 files changed

+58
-16
lines changed

crates/ide/src/ssr.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ pub(crate) fn ssr_assists(
4545
group: Some(GroupLabel("Apply SSR".into())),
4646
target: comment_range,
4747
source_change,
48+
trigger_signature_help: false,
4849
};
4950

5051
ssr_assists.push(assist);
@@ -140,6 +141,7 @@ mod tests {
140141
is_snippet: false,
141142
},
142143
),
144+
trigger_signature_help: false,
143145
}
144146
"#]]
145147
.assert_debug_eq(&apply_in_file_assist);
@@ -186,6 +188,7 @@ mod tests {
186188
is_snippet: false,
187189
},
188190
),
191+
trigger_signature_help: false,
189192
}
190193
"#]]
191194
.assert_debug_eq(&apply_in_workspace_assist);
@@ -225,6 +228,7 @@ mod tests {
225228
),
226229
target: 10..21,
227230
source_change: None,
231+
trigger_signature_help: false,
228232
}
229233
"#]]
230234
.assert_debug_eq(&apply_in_file_assist);
@@ -244,6 +248,7 @@ mod tests {
244248
),
245249
target: 10..21,
246250
source_change: None,
251+
trigger_signature_help: false,
247252
}
248253
"#]]
249254
.assert_debug_eq(&apply_in_workspace_assist);

crates/ide_assists/src/assist_context.rs

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,17 +193,19 @@ impl Assists {
193193
return None;
194194
}
195195

196+
let mut trigger_signature_help = false;
196197
let source_change = if self.resolve.should_resolve(&id) {
197198
let mut builder = AssistBuilder::new(self.file);
198199
f(&mut builder);
200+
trigger_signature_help = builder.trigger_signature_help;
199201
Some(builder.finish())
200202
} else {
201203
None
202204
};
203205

204206
let label = Label::new(label);
205207
let group = group.cloned();
206-
self.buf.push(Assist { id, label, group, target, source_change });
208+
self.buf.push(Assist { id, label, group, target, source_change, trigger_signature_help });
207209
Some(())
208210
}
209211

@@ -219,6 +221,7 @@ pub(crate) struct AssistBuilder {
219221
edit: TextEditBuilder,
220222
file_id: FileId,
221223
source_change: SourceChange,
224+
trigger_signature_help: bool,
222225

223226
/// Maps the original, immutable `SyntaxNode` to a `clone_for_update` twin.
224227
mutated_tree: Option<TreeMutator>,
@@ -252,6 +255,7 @@ impl AssistBuilder {
252255
edit: TextEdit::builder(),
253256
file_id,
254257
source_change: SourceChange::default(),
258+
trigger_signature_help: false,
255259
mutated_tree: None,
256260
}
257261
}
@@ -332,6 +336,9 @@ impl AssistBuilder {
332336
let file_system_edit = FileSystemEdit::MoveFile { src, dst };
333337
self.source_change.push_file_system_edit(file_system_edit);
334338
}
339+
pub(crate) fn trigger_signature_help(&mut self) {
340+
self.trigger_signature_help = true;
341+
}
335342

336343
fn finish(mut self) -> SourceChange {
337344
self.commit();

crates/ide_assists/src/handlers/add_turbo_fish.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -89,15 +89,18 @@ pub(crate) fn add_turbo_fish(acc: &mut Assists, ctx: &AssistContext) -> Option<(
8989
AssistId("add_turbo_fish", AssistKind::RefactorRewrite),
9090
"Add `::<>`",
9191
ident.text_range(),
92-
|builder| match ctx.config.snippet_cap {
93-
Some(cap) => {
94-
let snip = format!("::<{}>", get_snippet_fish_head(number_of_arguments));
95-
builder.insert_snippet(cap, ident.text_range().end(), snip)
96-
}
97-
None => {
98-
let fish_head = std::iter::repeat("_").take(number_of_arguments).format(", ");
99-
let snip = format!("::<{}>", fish_head);
100-
builder.insert(ident.text_range().end(), snip);
92+
|builder| {
93+
builder.trigger_signature_help();
94+
match ctx.config.snippet_cap {
95+
Some(cap) => {
96+
let snip = format!("::<{}>", get_snippet_fish_head(number_of_arguments));
97+
builder.insert_snippet(cap, ident.text_range().end(), snip)
98+
}
99+
None => {
100+
let fish_head = std::iter::repeat("_").take(number_of_arguments).format(", ");
101+
let snip = format!("::<{}>", fish_head);
102+
builder.insert(ident.text_range().end(), snip);
103+
}
101104
}
102105
},
103106
)

crates/ide_assists/src/tests.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -341,6 +341,7 @@ pub fn test_some_range(a: int) -> bool {
341341
group: None,
342342
target: 59..60,
343343
source_change: None,
344+
trigger_signature_help: false,
344345
}
345346
"#]]
346347
.assert_debug_eq(&extract_into_variable_assist);
@@ -356,6 +357,7 @@ pub fn test_some_range(a: int) -> bool {
356357
group: None,
357358
target: 59..60,
358359
source_change: None,
360+
trigger_signature_help: false,
359361
}
360362
"#]]
361363
.assert_debug_eq(&extract_into_function_assist);
@@ -385,6 +387,7 @@ pub fn test_some_range(a: int) -> bool {
385387
group: None,
386388
target: 59..60,
387389
source_change: None,
390+
trigger_signature_help: false,
388391
}
389392
"#]]
390393
.assert_debug_eq(&extract_into_variable_assist);
@@ -400,6 +403,7 @@ pub fn test_some_range(a: int) -> bool {
400403
group: None,
401404
target: 59..60,
402405
source_change: None,
406+
trigger_signature_help: false,
403407
}
404408
"#]]
405409
.assert_debug_eq(&extract_into_function_assist);
@@ -450,6 +454,7 @@ pub fn test_some_range(a: int) -> bool {
450454
is_snippet: true,
451455
},
452456
),
457+
trigger_signature_help: false,
453458
}
454459
"#]]
455460
.assert_debug_eq(&extract_into_variable_assist);
@@ -465,6 +470,7 @@ pub fn test_some_range(a: int) -> bool {
465470
group: None,
466471
target: 59..60,
467472
source_change: None,
473+
trigger_signature_help: false,
468474
}
469475
"#]]
470476
.assert_debug_eq(&extract_into_function_assist);
@@ -507,6 +513,7 @@ pub fn test_some_range(a: int) -> bool {
507513
is_snippet: true,
508514
},
509515
),
516+
trigger_signature_help: false,
510517
}
511518
"#]]
512519
.assert_debug_eq(&extract_into_variable_assist);
@@ -543,6 +550,7 @@ pub fn test_some_range(a: int) -> bool {
543550
is_snippet: true,
544551
},
545552
),
553+
trigger_signature_help: false,
546554
}
547555
"#]]
548556
.assert_debug_eq(&extract_into_function_assist);

crates/ide_db/src/assists.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ pub struct Assist {
2929
/// cumbersome, especially if you want to embed an assist into another data
3030
/// structure, such as a diagnostic.
3131
pub source_change: Option<SourceChange>,
32+
pub trigger_signature_help: bool,
3233
}
3334

3435
#[derive(Debug, Clone, Copy, PartialEq, Eq)]

crates/ide_diagnostics/src/handlers/unresolved_module.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@ mod baz {}
117117
is_snippet: false,
118118
},
119119
),
120+
trigger_signature_help: false,
120121
},
121122
Assist {
122123
id: AssistId(
@@ -143,6 +144,7 @@ mod baz {}
143144
is_snippet: false,
144145
},
145146
),
147+
trigger_signature_help: false,
146148
},
147149
],
148150
),

crates/ide_diagnostics/src/lib.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,5 +238,6 @@ fn unresolved_fix(id: &'static str, label: &str, target: TextRange) -> Assist {
238238
group: None,
239239
target,
240240
source_change: None,
241+
trigger_signature_help: false,
241242
}
242243
}

crates/rust-analyzer/src/diagnostics/test_data/clippy_pass_by_ref.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -318,6 +318,7 @@
318318
"quickfix",
319319
),
320320
),
321+
command: None,
321322
edit: Some(
322323
SnippetWorkspaceEdit {
323324
changes: Some(

crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@
165165
"quickfix",
166166
),
167167
),
168+
command: None,
168169
edit: Some(
169170
SnippetWorkspaceEdit {
170171
changes: Some(

crates/rust-analyzer/src/diagnostics/test_data/rustc_unused_variable_as_hint.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@
165165
"quickfix",
166166
),
167167
),
168+
command: None,
168169
edit: Some(
169170
SnippetWorkspaceEdit {
170171
changes: Some(

0 commit comments

Comments
 (0)