From 19d042dde6ac7aad5b597c791c1f142f5c7f7198 Mon Sep 17 00:00:00 2001 From: ttys3 Date: Sat, 23 Apr 2022 16:09:16 +0800 Subject: chore(lsp): check rename capabilities before send rename action (#2203) --- helix-lsp/src/client.rs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'helix-lsp/src') diff --git a/helix-lsp/src/client.rs b/helix-lsp/src/client.rs index dba134fc..2459554c 100644 --- a/helix-lsp/src/client.rs +++ b/helix-lsp/src/client.rs @@ -3,6 +3,7 @@ use crate::{ Call, Error, OffsetEncoding, Result, }; +use anyhow::anyhow; use helix_core::{find_root, ChangeSet, Rope}; use jsonrpc_core as jsonrpc; use lsp_types as lsp; @@ -861,6 +862,19 @@ impl Client { position: lsp::Position, new_name: String, ) -> anyhow::Result { + let capabilities = self.capabilities.get().unwrap(); + + // check if we're able to rename + match capabilities.rename_provider { + Some(lsp::OneOf::Left(true)) | Some(lsp::OneOf::Right(_)) => (), + // None | Some(false) + _ => { + let err = "The server does not support rename"; + log::warn!("rename_symbol failed: {}", err); + return Err(anyhow!(err)); + } + }; + let params = lsp::RenameParams { text_document_position: lsp::TextDocumentPositionParams { text_document, -- cgit v1.2.3-70-g09d2