@@ -3,6 +3,7 @@ use crate::{
3 Call, Error, OffsetEncoding, Result,
3 Call, Error, OffsetEncoding, Result,
6use helix_core::{find_root, ChangeSet, Rope};
7use helix_core::{find_root, ChangeSet, Rope};
7use jsonrpc_core as jsonrpc;
8use jsonrpc_core as jsonrpc;
8use lsp_types as lsp;
9use lsp_types as lsp;
@@ -861,6 +862,19 @@ impl Client {
861 position: lsp::Position,
862 position: lsp::Position,
862 new_name: String,
863 new_name: String,
863 ) -> anyhow::Result<lsp::WorkspaceEdit> {
864 ) -> anyhow::Result<lsp::WorkspaceEdit> {
865+ let capabilities = self.capabilities.get().unwrap();
867+ // check if we're able to rename
868+ match capabilities.rename_provider {
869+ Some(lsp::OneOf::Left(true)) | Some(lsp::OneOf::Right(_)) => (),
870+ // None | Some(false)
872+ let err = "The server does not support rename";
873+ log::warn!("rename_symbol failed: {}", err);
874+ return Err(anyhow!(err));
864 let params = lsp::RenameParams {
878 let params = lsp::RenameParams {
865 text_document_position: lsp::TextDocumentPositionParams {
879 text_document_position: lsp::TextDocumentPositionParams {
866 text_document,
880 text_document,