Skip to content

Commit 1ff178c

Browse files
committed
fix: properly support can_rename option
1 parent 43f9752 commit 1ff178c

File tree

2 files changed

+19
-4
lines changed

2 files changed

+19
-4
lines changed

src/lsp.rs

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ use async_lsp::lsp_types::{
99
DocumentSymbolResponse, FileOperationFilter, FileOperationPattern, FileOperationPatternKind,
1010
FileOperationRegistrationOptions, GotoDefinitionParams, GotoDefinitionResponse, Hover,
1111
HoverContents, HoverParams, HoverProviderCapability, InitializeParams, InitializeResult, OneOf,
12-
PrepareRenameResponse, RenameFilesParams, RenameParams, ServerCapabilities, ServerInfo,
13-
TextDocumentPositionParams, TextDocumentSyncCapability, TextDocumentSyncKind, Url,
12+
PrepareRenameResponse, RenameFilesParams, RenameOptions, RenameParams, ServerCapabilities,
13+
ServerInfo, TextDocumentPositionParams, TextDocumentSyncCapability, TextDocumentSyncKind, Url,
1414
WorkspaceEdit, WorkspaceFileOperationsServerCapabilities, WorkspaceFoldersServerCapabilities,
1515
WorkspaceServerCapabilities,
1616
};
@@ -71,6 +71,21 @@ impl LanguageServer for ProtoLanguageServer {
7171
})
7272
}
7373

74+
let mut rename_provider: OneOf<bool, RenameOptions> = OneOf::Left(true);
75+
76+
if params
77+
.capabilities
78+
.text_document
79+
.and_then(|cap| cap.rename)
80+
.and_then(|r| r.prepare_support)
81+
.unwrap_or_default()
82+
{
83+
rename_provider = OneOf::Right(RenameOptions {
84+
prepare_provider: Some(true),
85+
work_done_progress_options: Default::default(),
86+
})
87+
}
88+
7489
let response = InitializeResult {
7590
capabilities: ServerCapabilities {
7691
// todo(): We might prefer incremental sync at some later stage
@@ -82,7 +97,7 @@ impl LanguageServer for ProtoLanguageServer {
8297
hover_provider: Some(HoverProviderCapability::Simple(true)),
8398
document_symbol_provider: Some(OneOf::Left(true)),
8499
completion_provider: Some(CompletionOptions::default()),
85-
rename_provider: Some(OneOf::Left(true)),
100+
rename_provider: Some(rename_provider),
86101

87102
..ServerCapabilities::default()
88103
},
@@ -173,6 +188,7 @@ impl LanguageServer for ProtoLanguageServer {
173188
};
174189

175190
let response = tree.can_rename(&pos).map(PrepareRenameResponse::Range);
191+
176192
Box::pin(async move { Ok(response) })
177193
}
178194

src/workspace/definition.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,5 @@ mod test {
4242
assert_yaml_snapshot!(state.definition("com.library", "Author.Address"));
4343
assert_yaml_snapshot!(state.definition("com.library", "com.utility.Foobar.Baz"));
4444
assert_yaml_snapshot!(state.definition("com.utility", "Baz"));
45-
4645
}
4746
}

0 commit comments

Comments
 (0)