@@ -1136,20 +1136,23 @@ impl Client {
1136 Some(self.call::<lsp::request::CodeActionRequest>(params))
1136 Some(self.call::<lsp::request::CodeActionRequest>(params))
1139+ pub fn supports_rename(&self) -> bool {
1140+ let capabilities = self.capabilities.get().unwrap();
1142+ capabilities.rename_provider,
1143+ Some(lsp::OneOf::Left(true) | lsp::OneOf::Right(_))
1139 pub fn rename_symbol(
1147 pub fn rename_symbol(
1141 text_document: lsp::TextDocumentIdentifier,
1149 text_document: lsp::TextDocumentIdentifier,
1142 position: lsp::Position,
1150 position: lsp::Position,
1143 new_name: String,
1151 new_name: String,
1144 ) -> Option<impl Future<Output = Result<lsp::WorkspaceEdit>>> {
1152 ) -> Option<impl Future<Output = Result<lsp::WorkspaceEdit>>> {
1145− let capabilities = self.capabilities.get().unwrap();
1153+ if !self.supports_rename() {
1147− // Return early if the language server does not support renaming.
1148− match capabilities.rename_provider {
1149− Some(lsp::OneOf::Left(true)) | Some(lsp::OneOf::Right(_)) => (),
1150− // None | Some(false)
1151− _ => return None,
1154+ return None;
1154 let params = lsp::RenameParams {
1157 let params = lsp::RenameParams {
1155 text_document_position: lsp::TextDocumentPositionParams {
1158 text_document_position: lsp::TextDocumentPositionParams {