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).

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

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