@@ -3,6 +3,7 @@ use crate::{
33 Call, Error, OffsetEncoding, Result,
44};
55
6+use anyhow::anyhow;
67use helix_core::{find_root, ChangeSet, Rope};
78use jsonrpc_core as jsonrpc;
89use lsp_types as lsp;
@@ -861,6 +862,19 @@ impl Client {
861862 position: lsp::Position,
862863 new_name: String,
863864 ) -> anyhow::Result<lsp::WorkspaceEdit> {
865+ let capabilities = self.capabilities.get().unwrap();
866+
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)
871+ _ => {
872+ let err = "The server does not support rename";
873+ log::warn!("rename_symbol failed: {}", err);
874+ return Err(anyhow!(err));
875+ }
876+ };
877+
864878 let params = lsp::RenameParams {
865879 text_document_position: lsp::TextDocumentPositionParams {
866880 text_document,