Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion crates/lsp/src/lsp.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1383,7 +1383,8 @@ impl LanguageServer {
self.notify::<DidChangeWorkspaceFolders>(&params).ok();
}
}
/// Add new workspace folder to the list.

/// Remove existing workspace folder from the list.
pub fn remove_workspace_folder(&self, uri: Url) {
if self
.capabilities()
Expand Down
26 changes: 26 additions & 0 deletions crates/project/src/lsp_store.rs
Original file line number Diff line number Diff line change
Expand Up @@ -11702,6 +11702,20 @@ impl LspStore {
"workspace/didChangeConfiguration" => {
// Ignore payload since we notify clients of setting changes unconditionally, relying on them pulling the latest settings.
}
"workspace/didChangeWorkspaceFolders" => {
// In this case register options is an empty object, we can ignore it
let caps = lsp::WorkspaceFoldersServerCapabilities {
supported: Some(true),
change_notifications: Some(OneOf::Right(reg.id)),
};
server.update_capabilities(|capabilities| {
capabilities
.workspace
.get_or_insert_default()
.workspace_folders = Some(caps);
});
notify_server_capabilities_updated(&server, cx);
}
"workspace/symbol" => {
let options = parse_register_capabilities(reg)?;
server.update_capabilities(|capabilities| {
Expand Down Expand Up @@ -11944,6 +11958,18 @@ impl LspStore {
"workspace/didChangeConfiguration" => {
// Ignore payload since we notify clients of setting changes unconditionally, relying on them pulling the latest settings.
}
"workspace/didChangeWorkspaceFolders" => {
server.update_capabilities(|capabilities| {
capabilities
.workspace
.get_or_insert_with(|| lsp::WorkspaceServerCapabilities {
workspace_folders: None,
file_operations: None,
})
.workspace_folders = None;
});
notify_server_capabilities_updated(&server, cx);
}
"workspace/symbol" => {
server.update_capabilities(|capabilities| {
capabilities.workspace_symbol_provider = None
Expand Down
Loading