aboutsummaryrefslogtreecommitdiff
path: root/crates/ra_assists/src/auto_import.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/ra_assists/src/auto_import.rs')
-rw-r--r--crates/ra_assists/src/auto_import.rs16
1 files changed, 12 insertions, 4 deletions
diff --git a/crates/ra_assists/src/auto_import.rs b/crates/ra_assists/src/auto_import.rs
index 105c888d5..685dbed06 100644
--- a/crates/ra_assists/src/auto_import.rs
+++ b/crates/ra_assists/src/auto_import.rs
@@ -4,7 +4,10 @@ use ra_syntax::{
4 ast::{ self, NameOwner }, AstNode, SyntaxNode, Direction, TextRange, 4 ast::{ self, NameOwner }, AstNode, SyntaxNode, Direction, TextRange,
5 SyntaxKind::{ PATH, PATH_SEGMENT, COLONCOLON, COMMA } 5 SyntaxKind::{ PATH, PATH_SEGMENT, COLONCOLON, COMMA }
6}; 6};
7use crate::assist_ctx::{AssistCtx, Assist, AssistBuilder}; 7use crate::{
8 AssistId,
9 assist_ctx::{AssistCtx, Assist, AssistBuilder},
10};
8 11
9fn collect_path_segments(path: &ast::Path) -> Option<Vec<&ast::PathSegment>> { 12fn collect_path_segments(path: &ast::Path) -> Option<Vec<&ast::PathSegment>> {
10 let mut v = Vec::new(); 13 let mut v = Vec::new();
@@ -526,6 +529,7 @@ pub(crate) fn auto_import(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist
526 if let Some(module) = path.syntax().ancestors().find_map(ast::Module::cast) { 529 if let Some(module) = path.syntax().ancestors().find_map(ast::Module::cast) {
527 if let (Some(item_list), Some(name)) = (module.item_list(), module.name()) { 530 if let (Some(item_list), Some(name)) = (module.item_list(), module.name()) {
528 ctx.add_action( 531 ctx.add_action(
532 AssistId("auto_import"),
529 format!("import {} in mod {}", fmt_segments(&segments), name.text()), 533 format!("import {} in mod {}", fmt_segments(&segments), name.text()),
530 |edit| { 534 |edit| {
531 apply_auto_import(item_list.syntax(), path, &segments, edit); 535 apply_auto_import(item_list.syntax(), path, &segments, edit);
@@ -534,9 +538,13 @@ pub(crate) fn auto_import(mut ctx: AssistCtx<impl HirDatabase>) -> Option<Assist
534 } 538 }
535 } else { 539 } else {
536 let current_file = node.ancestors().find_map(ast::SourceFile::cast)?; 540 let current_file = node.ancestors().find_map(ast::SourceFile::cast)?;
537 ctx.add_action(format!("import {} in the current file", fmt_segments(&segments)), |edit| { 541 ctx.add_action(
538 apply_auto_import(current_file.syntax(), path, &segments, edit); 542 AssistId("auto_import"),
539 }); 543 format!("import {} in the current file", fmt_segments(&segments)),
544 |edit| {
545 apply_auto_import(current_file.syntax(), path, &segments, edit);
546 },
547 );
540 } 548 }
541 549
542 ctx.build() 550 ctx.build()