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()
}
}
//
// .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();
#[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<SnippetCap>,
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: () }),
// }
// ```
//
-// 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.
///
fn completions_resolve_provider(client_caps: &ClientCapabilities) -> Option<bool> {
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)
},
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()
};
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;
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,
"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",