Skip to content

Commit db8e9f5

Browse files
Check language server symbol renaming support before prompting (#6257)
Co-authored-by: Poliorcetics <poliorcetics@users.noreply.github.com>
1 parent dc418bb commit db8e9f5

File tree

2 files changed

+17
-8
lines changed

2 files changed

+17
-8
lines changed

helix-lsp/src/client.rs

+11-8
Original file line numberDiff line numberDiff line change
@@ -1136,20 +1136,23 @@ impl Client {
11361136
Some(self.call::<lsp::request::CodeActionRequest>(params))
11371137
}
11381138

1139+
pub fn supports_rename(&self) -> bool {
1140+
let capabilities = self.capabilities.get().unwrap();
1141+
matches!(
1142+
capabilities.rename_provider,
1143+
Some(lsp::OneOf::Left(true) | lsp::OneOf::Right(_))
1144+
)
1145+
}
1146+
11391147
pub fn rename_symbol(
11401148
&self,
11411149
text_document: lsp::TextDocumentIdentifier,
11421150
position: lsp::Position,
11431151
new_name: String,
11441152
) -> Option<impl Future<Output = Result<lsp::WorkspaceEdit>>> {
1145-
let capabilities = self.capabilities.get().unwrap();
1146-
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,
1152-
};
1153+
if !self.supports_rename() {
1154+
return None;
1155+
}
11531156

11541157
let params = lsp::RenameParams {
11551158
text_document_position: lsp::TextDocumentPositionParams {

helix-term/src/commands/lsp.rs

+6
Original file line numberDiff line numberDiff line change
@@ -1316,6 +1316,12 @@ pub fn rename_symbol(cx: &mut Context) {
13161316
let language_server = language_server!(cx.editor, doc);
13171317
let offset_encoding = language_server.offset_encoding();
13181318

1319+
if !language_server.supports_rename() {
1320+
cx.editor
1321+
.set_error("Language server does not support symbol renaming");
1322+
return;
1323+
}
1324+
13191325
let pos = doc.position(view.id, offset_encoding);
13201326

13211327
match language_server.prepare_rename(doc.identifier(), pos) {

0 commit comments

Comments
 (0)