Workaround lsp-types typo

This commit is contained in:
Lukas Wirth 2025-08-07 15:24:39 +02:00
parent 14872a5332
commit 8fcc577b73

View File

@ -208,13 +208,24 @@ fn run_server() -> anyhow::Result<()> {
tracing::info!("InitializeParams: {}", initialize_params);
let lsp_types::InitializeParams {
root_uri,
capabilities,
mut capabilities,
workspace_folders,
initialization_options,
client_info,
..
} = from_json::<lsp_types::InitializeParams>("InitializeParams", &initialize_params)?;
// lsp-types has a typo in the `/capabilities/workspace/diagnostics` field, its typoed as `diagnostic`
if let Some(val) = initialize_params.pointer("/capabilities/workspace/diagnostics") {
if let Ok(diag_caps) = from_json::<lsp_types::DiagnosticWorkspaceClientCapabilities>(
"DiagnosticWorkspaceClientCapabilities",
val,
) {
tracing::info!("Patching lsp-types workspace diagnostics capabilities: {diag_caps:#?}");
capabilities.workspace.get_or_insert_default().diagnostic.get_or_insert(diag_caps);
}
}
let root_path = match root_uri
.and_then(|it| it.to_file_path().ok())
.map(patch_path_prefix)