Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Check diagnostic refresh support from client capability #15014

Merged
merged 1 commit into from
Dec 16, 2024

Conversation

dhruvmanila
Copy link
Member

@dhruvmanila dhruvmanila commented Dec 16, 2024

Summary

Per the LSP spec, the property name is workspace.diagnostics with an s at the end but the lsp-types dependency uses workspace.diagnostic (without an s). Our fork contains this fix (astral-sh/lsp-types@0f58d62) so we should avoid the hardcoded value.

The implication of this is that the client which doesn't support workspace refresh capability didn't support the dynamic configuration feature because the server would always send the workspace refresh request but the client would ignore it. We have a fallback logic to publish the diagnostics instead:

if session.resolved_client_capabilities().workspace_refresh {
requester
.request::<types::request::WorkspaceDiagnosticRefresh>((), |()| Task::nothing())
.with_failure_code(lsp_server::ErrorCode::InternalError)?;
} else {
// publish diagnostics for text documents
for url in session.text_document_urls() {
let snapshot = session
.take_snapshot(url.clone())
.expect("snapshot should be available");
publish_diagnostics_for_document(&snapshot, &notifier)?;
}
}

fixes: #15013

Test Plan

VS Code

Screen.Recording.2024-12-16.at.2.28.32.PM.mov

Neovim

Screen.Recording.2024-12-16.at.3.04.00.PM.mov

@dhruvmanila dhruvmanila added bug Something isn't working server Related to the LSP server labels Dec 16, 2024
Copy link
Contributor

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

@dhruvmanila

This comment was marked as resolved.

@dhruvmanila dhruvmanila marked this pull request as ready for review December 16, 2024 09:35
@dhruvmanila dhruvmanila merged commit aa429b4 into main Dec 16, 2024
21 checks passed
@dhruvmanila dhruvmanila deleted the dhruv/diagnostic-refresh branch December 16, 2024 10:56
dcreager added a commit that referenced this pull request Dec 16, 2024
* main: (25 commits)
  [`pydocstyle`] Skip leading whitespace for `D403` (#14963)
  Update pre-commit dependencies (#15008)
  Check diagnostic refresh support from client capability (#15014)
  Update Rust crate colored to v2.2.0 (#15010)
  Update dependency monaco-editor to v0.52.2 (#15006)
  Update Rust crate thiserror to v2.0.7 (#15005)
  Update Rust crate serde to v1.0.216 (#15004)
  Update Rust crate libc to v0.2.168 (#15003)
  Update Rust crate fern to v0.7.1 (#15002)
  Update Rust crate chrono to v0.4.39 (#15001)
  Update Rust crate bstr to v1.11.1 (#15000)
  Update NPM Development dependencies (#14999)
  Update dependency ruff to v0.8.3 (#15007)
  Pin mdformat plugins in pre-commit (#14992)
  Use stripping block (`|-`) for page descriptions (#14980)
  [`perflint`] Fix panic in `perf401` (#14971)
  Improve the documentation of E201/E202 (#14983)
  [ruff_python_ast] Add name and default functions to TypeParam. (#14964)
  [red-knot] Emit an error if a bare `Annotated` or `Literal` is used in a type expression (#14973)
  [red-knot] Fix bugs relating to assignability of dynamic `type[]` types (#14972)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working server Related to the LSP server
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Remove hardcoded workspace_refresh client capability
2 participants