From e2fed1442fefe087a7b7c2f2fb5d6ca7efc26091 Mon Sep 17 00:00:00 2001 From: luoyancn Date: Mon, 30 Jun 2025 11:17:09 +0800 Subject: [PATCH] Fix: Auto import has broken for vim-lsp 1. Thanks for ShoyuVanilla`s advise, I try to fix this bug by Temporarily disable completion resolve support like Neovim and helix. close the bug #19401 --- crates/rust-analyzer/src/config.rs | 6 +++++- crates/rust-analyzer/src/lsp/capabilities.rs | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/crates/rust-analyzer/src/config.rs b/crates/rust-analyzer/src/config.rs index e716d1407522..b53aa395291d 100644 --- a/crates/rust-analyzer/src/config.rs +++ b/crates/rust-analyzer/src/config.rs @@ -1549,7 +1549,7 @@ impl Config { limit: self.completion_limit(source_root).to_owned(), enable_term_search: self.completion_termSearch_enable(source_root).to_owned(), term_search_fuel: self.completion_termSearch_fuel(source_root).to_owned() as u64, - fields_to_resolve: if self.client_is_neovim() { + fields_to_resolve: if self.client_is_neovim() || self.client_is_vim_lsp() { CompletionFieldsToResolve::empty() } else { CompletionFieldsToResolve::from_client_capabilities(&client_capability_fields) @@ -2362,6 +2362,10 @@ impl Config { pub fn client_is_neovim(&self) -> bool { self.client_info.as_ref().map(|it| it.name == "Neovim").unwrap_or_default() } + + pub fn client_is_vim_lsp(&self) -> bool { + self.client_info.as_ref().map(|it| it.name == "vim-lsp").unwrap_or_default() + } } // Deserialization definitions diff --git a/crates/rust-analyzer/src/lsp/capabilities.rs b/crates/rust-analyzer/src/lsp/capabilities.rs index 04e31f37fd2c..a48b47be733a 100644 --- a/crates/rust-analyzer/src/lsp/capabilities.rs +++ b/crates/rust-analyzer/src/lsp/capabilities.rs @@ -41,7 +41,7 @@ pub fn server_capabilities(config: &Config) -> ServerCapabilities { })), hover_provider: Some(HoverProviderCapability::Simple(true)), completion_provider: Some(CompletionOptions { - resolve_provider: if config.client_is_neovim() { + resolve_provider: if config.client_is_neovim() || config.client_is_vim_lsp() { config.completion_item_edit_resolve().then_some(true) } else { Some(config.caps().completions_resolve_provider())