From 96fc01a30b88d95619b26fd96c58627dd54cb339 Mon Sep 17 00:00:00 2001 From: asv Date: Sat, 6 Mar 2021 13:02:26 +0200 Subject: Make group imports configurable --- crates/ide_completion/src/item.rs | 11 ++++------- crates/ide_completion/src/lib.rs | 2 +- crates/ide_completion/src/test_utils.rs | 3 ++- 3 files changed, 7 insertions(+), 9 deletions(-) (limited to 'crates/ide_completion/src') diff --git a/crates/ide_completion/src/item.rs b/crates/ide_completion/src/item.rs index 884711f11..9b2435c4b 100644 --- a/crates/ide_completion/src/item.rs +++ b/crates/ide_completion/src/item.rs @@ -5,7 +5,7 @@ use std::fmt; use hir::{Documentation, ModPath, Mutability}; use ide_db::{ helpers::{ - insert_use::{self, ImportScope, MergeBehavior}, + insert_use::{self, ImportScope, InsertUseConfig}, mod_path_to_ast, SnippetCap, }, SymbolKind, @@ -280,14 +280,11 @@ pub struct ImportEdit { impl ImportEdit { /// Attempts to insert the import to the given scope, producing a text edit. /// May return no edit in edge cases, such as scope already containing the import. - pub fn to_text_edit(&self, merge_behavior: Option) -> Option { + pub fn to_text_edit(&self, cfg: InsertUseConfig) -> Option { let _p = profile::span("ImportEdit::to_text_edit"); - let rewriter = insert_use::insert_use( - &self.import_scope, - mod_path_to_ast(&self.import_path), - merge_behavior, - ); + let rewriter = + insert_use::insert_use(&self.import_scope, mod_path_to_ast(&self.import_path), cfg); let old_ast = rewriter.rewrite_root()?; let mut import_insert = TextEdit::builder(); algo::diff(&old_ast, &rewriter.rewrite(&old_ast)).into_text_edit(&mut import_insert); diff --git a/crates/ide_completion/src/lib.rs b/crates/ide_completion/src/lib.rs index 76f31de9e..b0b809791 100644 --- a/crates/ide_completion/src/lib.rs +++ b/crates/ide_completion/src/lib.rs @@ -156,7 +156,7 @@ pub fn resolve_completion_edits( .find(|mod_path| mod_path.to_string() == full_import_path)?; ImportEdit { import_path, import_scope, import_for_trait_assoc_item } - .to_text_edit(config.insert_use.merge) + .to_text_edit(config.insert_use) .map(|edit| vec![edit]) } diff --git a/crates/ide_completion/src/test_utils.rs b/crates/ide_completion/src/test_utils.rs index baff83305..9da844031 100644 --- a/crates/ide_completion/src/test_utils.rs +++ b/crates/ide_completion/src/test_utils.rs @@ -25,6 +25,7 @@ pub(crate) const TEST_CONFIG: CompletionConfig = CompletionConfig { insert_use: InsertUseConfig { merge: Some(MergeBehavior::Full), prefix_kind: PrefixKind::Plain, + group: true, }, }; @@ -119,7 +120,7 @@ pub(crate) fn check_edit_with_config( let mut combined_edit = completion.text_edit().to_owned(); if let Some(import_text_edit) = - completion.import_to_add().and_then(|edit| edit.to_text_edit(config.insert_use.merge)) + completion.import_to_add().and_then(|edit| edit.to_text_edit(config.insert_use)) { combined_edit.union(import_text_edit).expect( "Failed to apply completion resolve changes: change ranges overlap, but should not", -- cgit v1.2.3