mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-27 12:29:21 +00:00
Make multiple import edits work for completions
This commit is contained in:
parent
046c85ef0c
commit
454ecd167c
17 changed files with 141 additions and 87 deletions
|
@ -104,13 +104,15 @@ fn add_custom_completions(
|
|||
let import_scope =
|
||||
ImportScope::find_insert_use_container_with_macros(&ctx.token.parent()?, &ctx.sema)?;
|
||||
ctx.config.snippets.iter().filter(|snip| snip.scope == scope).for_each(|snip| {
|
||||
// FIXME: Support multiple imports
|
||||
let import = match snip.imports(ctx, &import_scope) {
|
||||
Ok(mut imports) => imports.pop(),
|
||||
let imports = match snip.imports(ctx, &import_scope) {
|
||||
Ok(imports) => imports,
|
||||
Err(_) => return,
|
||||
};
|
||||
let mut builder = snippet(ctx, cap, &snip.label, &snip.snippet);
|
||||
builder.add_import(import).detail(snip.description.as_deref().unwrap_or_default());
|
||||
for import in imports.into_iter() {
|
||||
builder.add_import(import);
|
||||
}
|
||||
builder.detail(snip.description.as_deref().unwrap_or_default());
|
||||
builder.add_to(acc);
|
||||
});
|
||||
None
|
||||
|
@ -132,7 +134,7 @@ mod tests {
|
|||
&["ControlFlow::Break(())".into()],
|
||||
&[],
|
||||
&["core::ops::ControlFlow".into()],
|
||||
None,
|
||||
crate::SnippetScope::Expr,
|
||||
)
|
||||
.unwrap()],
|
||||
..TEST_CONFIG
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue