diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index c884216b3e..714c835812 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -429,6 +429,8 @@ config_data! { completion_callable_snippets: CallableCompletionDef = CallableCompletionDef::FillArguments, /// Whether to show full function/method signatures in completion docs. completion_fullFunctionSignatures_enable: bool = false, + /// Whether to omit deprecated items from autocompletion. By default they are marked as deprecated but not hidden. + completion_hideDeprecated: bool = false, /// Maximum number of completions to return. If `None`, the limit is infinite. completion_limit: Option = None, /// Whether to show postfix snippets like `dbg`, `if`, `not`, etc. @@ -1443,6 +1445,10 @@ impl Config { } } + pub fn completion_hide_deprecated(&self) -> bool { + *self.completion_hideDeprecated(None) + } + pub fn detached_files(&self) -> &Vec { // FIXME @alibektas : This is the only config that is confusing. If it's a proper configuration // why is it not among the others? If it's client only which I doubt it is current state should be alright diff --git a/crates/rust-analyzer/src/lsp/to_proto.rs b/crates/rust-analyzer/src/lsp/to_proto.rs index 6dff8abb0f..b29268f133 100644 --- a/crates/rust-analyzer/src/lsp/to_proto.rs +++ b/crates/rust-analyzer/src/lsp/to_proto.rs @@ -228,8 +228,12 @@ pub(crate) fn completion_items( line_index: &LineIndex, version: Option, tdpp: lsp_types::TextDocumentPositionParams, - items: Vec, + mut items: Vec, ) -> Vec { + if config.completion_hide_deprecated() { + items.retain(|item| !item.deprecated); + } + let max_relevance = items.iter().map(|it| it.relevance.score()).max().unwrap_or_default(); let mut res = Vec::with_capacity(items.len()); for item in items { diff --git a/docs/user/generated_config.adoc b/docs/user/generated_config.adoc index e4a8c6493a..4fcf580e75 100644 --- a/docs/user/generated_config.adoc +++ b/docs/user/generated_config.adoc @@ -283,6 +283,11 @@ Whether to add parenthesis and argument snippets when completing function. -- Whether to show full function/method signatures in completion docs. -- +[[rust-analyzer.completion.hideDeprecated]]rust-analyzer.completion.hideDeprecated (default: `false`):: ++ +-- +Whether to omit deprecated items from autocompletion. By default they are marked as deprecated but not hidden. +-- [[rust-analyzer.completion.limit]]rust-analyzer.completion.limit (default: `null`):: + -- diff --git a/editors/code/package.json b/editors/code/package.json index 98e8bbf02a..0b029460b3 100644 --- a/editors/code/package.json +++ b/editors/code/package.json @@ -1077,6 +1077,16 @@ } } }, + { + "title": "completion", + "properties": { + "rust-analyzer.completion.hideDeprecated": { + "markdownDescription": "Whether to omit deprecated items from autocompletion. By default they are marked as deprecated but not hidden.", + "default": false, + "type": "boolean" + } + } + }, { "title": "completion", "properties": {