From cbd3717f2c52b17aa9b15c2df4a364c62d17e4e1 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Tue, 8 Dec 2020 14:27:18 +0200 Subject: [PATCH] Better config name --- crates/completion/src/completions/unqualified_path.rs | 6 ++++-- crates/completion/src/config.rs | 4 ++-- crates/completion/src/lib.rs | 9 +++------ crates/rust-analyzer/src/caps.rs | 1 + crates/rust-analyzer/src/config.rs | 6 +++--- editors/code/package.json | 9 ++++++--- 6 files changed, 19 insertions(+), 16 deletions(-) diff --git a/crates/completion/src/completions/unqualified_path.rs b/crates/completion/src/completions/unqualified_path.rs index 2a315cb864..f65709adf0 100644 --- a/crates/completion/src/completions/unqualified_path.rs +++ b/crates/completion/src/completions/unqualified_path.rs @@ -44,7 +44,7 @@ pub(crate) fn complete_unqualified_path(acc: &mut Completions, ctx: &CompletionC acc.add_resolution(ctx, name.to_string(), &res) }); - if !ctx.config.disable_fuzzy_autoimports && ctx.config.resolve_additional_edits_lazily() { + if ctx.config.enable_autoimport_completions && ctx.config.resolve_additional_edits_lazily() { fuzzy_completion(acc, ctx).unwrap_or_default() } } @@ -116,7 +116,9 @@ fn complete_enum_variants(acc: &mut Completions, ctx: &CompletionContext, ty: &T // // .Feature toggle // -// The feature can be forcefully turned off in the settings with the `rust-analyzer.completion.disableFuzzyAutoimports` flag. +// The feature can be forcefully turned off in the settings with the `rust-analyzer.completion.enableAutoimportCompletions` flag. +// Note that having this flag set to `true` does not guarantee that the feature is enabled: your client needs to have the corredponding +// capability enabled. fn fuzzy_completion(acc: &mut Completions, ctx: &CompletionContext) -> Option<()> { let _p = profile::span("fuzzy_completion"); let potential_import_name = ctx.token.to_string(); diff --git a/crates/completion/src/config.rs b/crates/completion/src/config.rs index 8082ec9cb0..5175b9d69d 100644 --- a/crates/completion/src/config.rs +++ b/crates/completion/src/config.rs @@ -10,7 +10,7 @@ use rustc_hash::FxHashSet; #[derive(Clone, Debug, PartialEq, Eq)] pub struct CompletionConfig { pub enable_postfix_completions: bool, - pub disable_fuzzy_autoimports: bool, + pub enable_autoimport_completions: bool, pub add_call_parenthesis: bool, pub add_call_argument_snippets: bool, pub snippet_cap: Option, @@ -52,7 +52,7 @@ impl Default for CompletionConfig { fn default() -> Self { CompletionConfig { enable_postfix_completions: true, - disable_fuzzy_autoimports: false, + enable_autoimport_completions: true, add_call_parenthesis: true, add_call_argument_snippets: true, snippet_cap: Some(SnippetCap { _private: () }), diff --git a/crates/completion/src/lib.rs b/crates/completion/src/lib.rs index 8df9f00fe2..f60f87243f 100644 --- a/crates/completion/src/lib.rs +++ b/crates/completion/src/lib.rs @@ -73,12 +73,9 @@ pub use crate::{ // } // ``` // -// And experimental completions, enabled with the `rust-analyzer.completion.disableFuzzyAutoimports` setting. -// This flag enables or disables: -// -// - Auto import: additional completion options with automatic `use` import and options from all project importable items, matched for the input -// -// Experimental completions might cause issues with performance and completion list look. +// And the auto import completions, enabled with the `rust-analyzer.completion.autoimport.enable` setting and the corresponding LSP client capabilities. +// Those are the additional completion options with automatic `use` import and options from all project importable items, +// fuzzy matched agains the completion imput. /// Main entry point for completion. We run completion as a two-phase process. /// diff --git a/crates/rust-analyzer/src/caps.rs b/crates/rust-analyzer/src/caps.rs index 1e0ee10e40..5e4c22bc5c 100644 --- a/crates/rust-analyzer/src/caps.rs +++ b/crates/rust-analyzer/src/caps.rs @@ -97,6 +97,7 @@ pub fn server_capabilities(client_caps: &ClientCapabilities) -> ServerCapabiliti fn completions_resolve_provider(client_caps: &ClientCapabilities) -> Option { if enabled_completions_resolve_capabilities(client_caps)?.is_empty() { + log::info!("No `additionalTextEdits` completion resolve capability was found in the client capabilities, autoimport completion is disabled"); None } else { Some(true) diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index f46aa2dd4b..5243b50c80 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -182,7 +182,7 @@ impl Config { }, completion: CompletionConfig { enable_postfix_completions: true, - disable_fuzzy_autoimports: false, + enable_autoimport_completions: true, add_call_parenthesis: true, add_call_argument_snippets: true, ..CompletionConfig::default() @@ -305,7 +305,7 @@ impl Config { }; self.completion.enable_postfix_completions = data.completion_postfix_enable; - self.completion.disable_fuzzy_autoimports = data.completion_disableFuzzyAutoimports; + self.completion.enable_autoimport_completions = data.completion_autoimport_enable; self.completion.add_call_parenthesis = data.completion_addCallParenthesis; self.completion.add_call_argument_snippets = data.completion_addCallArgumentSnippets; self.completion.merge = self.assist.insert_use.merge; @@ -508,7 +508,7 @@ config_data! { completion_addCallArgumentSnippets: bool = true, completion_addCallParenthesis: bool = true, completion_postfix_enable: bool = true, - completion_disableFuzzyAutoimports: bool = false, + completion_autoimport_enable: bool = true, diagnostics_enable: bool = true, diagnostics_enableExperimental: bool = true, diff --git a/editors/code/package.json b/editors/code/package.json index 4b0f41a243..dbde37005c 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -460,10 +460,13 @@ "default": true, "markdownDescription": "Whether to show postfix snippets like `dbg`, `if`, `not`, etc." }, - "rust-analyzer.completion.disableFuzzyAutoimports": { + "rust-analyzer.completion.autoimport.enable": { "type": "boolean", - "default": false, - "markdownDescription": "Turns off extra completion suggestions that might be too noisy or slow" + "default": true, + "markdownDescription": [ + "Toggles the additional completions that automatically add imports when completed.", + "Note that your client have to specify the `additionalTextEdits` LSP client capability to truly have this feature enabled" + ] }, "rust-analyzer.callInfo.full": { "type": "boolean",