Unnamed repository; edit this file 'description' to name the repository.
-rw-r--r--crates/rust-analyzer/src/config.rs6
-rw-r--r--crates/rust-analyzer/src/lsp/to_proto.rs6
-rw-r--r--docs/user/generated_config.adoc5
-rw-r--r--editors/code/package.json10
4 files changed, 26 insertions, 1 deletions
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<usize> = 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<AbsPathBuf> {
// 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<i32>,
tdpp: lsp_types::TextDocumentPositionParams,
- items: Vec<CompletionItem>,
+ mut items: Vec<CompletionItem>,
) -> Vec<lsp_types::CompletionItem> {
+ 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
@@ -1080,6 +1080,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": {
"rust-analyzer.completion.limit": {
"markdownDescription": "Maximum number of completions to return. If `None`, the limit is infinite.",
"default": null,