summary refs log tree commit diff
path: root/src/tools/rust-analyzer/crates/ide-completion
diff options
context:
space:
mode:
authorKirill Bulatov <mail4score@gmail.com>2024-12-03 10:41:29 +0200
committerKirill Bulatov <mail4score@gmail.com>2024-12-03 10:51:17 +0200
commitaede6e136567d25d23c802fa6950a4e2ccca0d45 (patch)
tree874b57c7d68dbb6ae62e823dc4c6fddab0bd611d /src/tools/rust-analyzer/crates/ide-completion
parent86387c8feb0d95a204084e02961ab3e4a02985c3 (diff)
downloadrust-aede6e136567d25d23c802fa6950a4e2ccca0d45.tar.gz
rust-aede6e136567d25d23c802fa6950a4e2ccca0d45.zip
Advertise completions and inlay hints resolve server capabilities based on the client capabilities.
Diffstat (limited to 'src/tools/rust-analyzer/crates/ide-completion')
-rw-r--r--src/tools/rust-analyzer/crates/ide-completion/src/lib.rs14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs b/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs
index dfee01b187e..cffdfa29f1a 100644
--- a/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs
+++ b/src/tools/rust-analyzer/crates/ide-completion/src/lib.rs
@@ -19,7 +19,7 @@ use ide_db::{
     },
     items_locator,
     syntax_helpers::tree_diff::diff,
-    FilePosition, RootDatabase,
+    FilePosition, FxHashSet, RootDatabase,
 };
 
 use crate::{
@@ -50,6 +50,18 @@ pub struct CompletionFieldsToResolve {
 }
 
 impl CompletionFieldsToResolve {
+    pub fn from_client_capabilities(client_capability_fields: &FxHashSet<&str>) -> Self {
+        Self {
+            resolve_label_details: client_capability_fields.contains("labelDetails"),
+            resolve_tags: client_capability_fields.contains("tags"),
+            resolve_detail: client_capability_fields.contains("detail"),
+            resolve_documentation: client_capability_fields.contains("documentation"),
+            resolve_filter_text: client_capability_fields.contains("filterText"),
+            resolve_text_edit: client_capability_fields.contains("textEdit"),
+            resolve_command: client_capability_fields.contains("command"),
+        }
+    }
+
     pub const fn empty() -> Self {
         Self {
             resolve_label_details: false,