feat(lsp): cache diagnostics across editor restarts - #296
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Restarting Red clears all LSP findings until language servers initialize and republish them. Larger workspaces can therefore reopen without gutter markers or diagnostics even when their source files and project configuration have not changed.
What Changed
How to Test
Open a Rust workspace containing a compiler error and confirm its diagnostic appears in the gutter or diagnostics picker.
Close and reopen Red in the same workspace. The previous finding should appear immediately, then refresh once rust-analyzer initializes.
Change the source file,
Cargo.toml,Cargo.lock, or rust-analyzer configuration while Red is closed. Reopen the workspace and confirm stale findings are not restored.Recover an unsaved session with
red --resumeand confirm restored findings match the recovered in-memory text rather than older on-disk contents.Run the focused regressions:
Coverage includes matching and changed content, dirty buffers, server and manifest invalidation, unopened files, lazy hydration, workspace isolation, expiration, cleared findings, and push/pull replacement.
Validated with 2,084 passing library tests, 48 passing lazy-LSP integration tests, and clean all-target/all-feature Clippy and formatting checks.