Skip to content

Commit 326025d

Browse files
authored
[ty] Always register rename provider if client doesn't support dynamic registration (#21789)
1 parent 3aefe85 commit 326025d

File tree

6 files changed

+15
-20
lines changed

6 files changed

+15
-20
lines changed

crates/ty_server/src/capabilities.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use lsp_types::{
2-
ClientCapabilities, CodeActionKind, CodeActionOptions, CompletionOptions,
2+
self as types, ClientCapabilities, CodeActionKind, CodeActionOptions, CompletionOptions,
33
DeclarationCapability, DiagnosticOptions, DiagnosticServerCapabilities,
44
HoverProviderCapability, InlayHintOptions, InlayHintServerCapabilities, MarkupKind,
55
NotebookCellSelector, NotebookSelector, OneOf, RenameOptions, SelectionRangeProviderCapability,
@@ -8,11 +8,9 @@ use lsp_types::{
88
TextDocumentSyncCapability, TextDocumentSyncKind, TextDocumentSyncOptions,
99
TypeDefinitionProviderCapability, WorkDoneProgressOptions,
1010
};
11+
use std::str::FromStr;
1112

1213
use crate::PositionEncoding;
13-
use crate::session::GlobalSettings;
14-
use lsp_types as types;
15-
use std::str::FromStr;
1614

1715
bitflags::bitflags! {
1816
/// Represents the resolved client capabilities for the language server.
@@ -349,7 +347,6 @@ impl ResolvedClientCapabilities {
349347
pub(crate) fn server_capabilities(
350348
position_encoding: PositionEncoding,
351349
resolved_client_capabilities: ResolvedClientCapabilities,
352-
global_settings: &GlobalSettings,
353350
) -> ServerCapabilities {
354351
let diagnostic_provider =
355352
if resolved_client_capabilities.supports_diagnostic_dynamic_registration() {
@@ -368,11 +365,9 @@ pub(crate) fn server_capabilities(
368365
// dynamically based on the `ty.experimental.rename` setting.
369366
None
370367
} else {
371-
// Otherwise, we check whether user has enabled rename support via the resolved settings
372-
// from initialization options.
373-
global_settings
374-
.is_rename_enabled()
375-
.then(|| OneOf::Right(server_rename_options()))
368+
// Otherwise, we always register the rename provider and bail out in `prepareRename` if
369+
// the feature is disabled.
370+
Some(OneOf::Right(server_rename_options()))
376371
};
377372

378373
ServerCapabilities {

crates/ty_server/src/server.rs

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,8 @@ impl Server {
7272
tracing::debug!("Resolved client capabilities: {resolved_client_capabilities}");
7373

7474
let position_encoding = Self::find_best_position_encoding(&client_capabilities);
75-
let server_capabilities = server_capabilities(
76-
position_encoding,
77-
resolved_client_capabilities,
78-
&initialization_options
79-
.options
80-
.global
81-
.clone()
82-
.into_settings(),
83-
);
75+
let server_capabilities =
76+
server_capabilities(position_encoding, resolved_client_capabilities);
8477

8578
let version = ruff_db::program_version().unwrap_or("Unknown");
8679
tracing::info!("Version: {version}");

crates/ty_server/src/server/api/requests/prepare_rename.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ impl BackgroundDocumentRequestHandler for PrepareRenameRequestHandler {
3232
if snapshot
3333
.workspace_settings()
3434
.is_language_services_disabled()
35+
|| !snapshot.global_settings().is_rename_enabled()
3536
{
3637
return Ok(None);
3738
}

crates/ty_server/src/session.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -564,7 +564,7 @@ impl Session {
564564
publish_settings_diagnostics(self, client, root);
565565
}
566566

567-
if let Some(global_options) = combined_global_options.take() {
567+
if let Some(global_options) = combined_global_options {
568568
let global_settings = global_options.into_settings();
569569
if global_settings.diagnostic_mode().is_workspace() {
570570
for project in self.projects.values_mut() {

crates/ty_server/tests/e2e/snapshots/e2e__initialize__initialization.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ expression: initialization_result
4848
"quickfix"
4949
]
5050
},
51+
"renameProvider": {
52+
"prepareProvider": true
53+
},
5154
"declarationProvider": true,
5255
"executeCommandProvider": {
5356
"commands": [

crates/ty_server/tests/e2e/snapshots/e2e__initialize__initialization_with_workspace.snap

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ expression: initialization_result
4848
"quickfix"
4949
]
5050
},
51+
"renameProvider": {
52+
"prepareProvider": true
53+
},
5154
"declarationProvider": true,
5255
"executeCommandProvider": {
5356
"commands": [

0 commit comments

Comments
 (0)