Skip to content

LSP server sends no per-file diagnostics to clients without pull diagnostics support #63928

Description

Problem

The LSP server only serves per-file diagnostics through pull diagnostics (textDocument/diagnostic); push (textDocument/publishDiagnostics) is only used for config file errors. Clients that do not implement pull diagnostics never receive file diagnostics at all: no errors appear on open, change, or close.

Affected clients include eglot before Dec 2025, Nova, Claude Code, and other lighter LSP clients. Prior discussion in the typescript-go repo: microsoft/typescript-go#2362. Client-side tracking for Claude Code: anthropics/claude-code#40282.

Proposal

When a client advertises textDocument.publishDiagnostics but not textDocument.diagnostic, push per-file diagnostics for open files: publish on open, debounced republish on change, clear on close. Triggers that would send workspace/diagnostic/refresh (watched file changes, config changes, ATA updates) recompute server-side instead, since push-only clients cannot re-pull. Pull-capable clients are unaffected, and the existing disablePushDiagnostics initialization option also disables the new path.

Implemented in #63921 (carried over from microsoft/typescript-go#4297 after the repository move).

Metadata

Metadata

Labels

Needs InvestigationThis issue needs a team member to investigate its status.

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions