mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-10 20:29:05 +00:00
Follow-up of https://github.com/zed-industries/zed/pull/3225 That PR enabled every `project::Event::DiskBasedDiagnosticsFinished` to update the diagnostics, which turned out to be bad, Zed does query for more diagnostics after every excerpt update, and that seems to be due to `Event::Edited` emitted by the multibuffers created in the diagnostics panel. * now, instead of eagerly updating the diagnostics every time, only do that if the panel has 0 or 1 caret placed and no changes were made in the panel yet. Otherwise, use previous approach and register the updated paths to defer their update later. * on every `update_excerpts` in the diagnostics panel, query the entire diagnostics summary (and store it for the future comparisons), compare old and new summaries and re-query diagnostics for every path that's not in both summaries. Also, query every path that was registered during the `DiskBasedDiagnosticsFinished` updates that were not eagerly updated before. This way we're supposed to get all new diagnostics (for new paths added) and re-check all old paths that might have stale diagnostics now. * do diagnostics rechecks concurrently for every path now, speeding the overall process Release Notes: - Fixed diagnostics triggering too eagerly during multicaret edits and certain stale diagnostics not being removed in time
42 lines
1.2 KiB
TOML
42 lines
1.2 KiB
TOML
[package]
|
|
name = "diagnostics"
|
|
version = "0.1.0"
|
|
edition = "2021"
|
|
publish = false
|
|
|
|
[lib]
|
|
path = "src/diagnostics.rs"
|
|
doctest = false
|
|
|
|
[dependencies]
|
|
collections = { path = "../collections" }
|
|
editor = { path = "../editor" }
|
|
gpui = { path = "../gpui" }
|
|
language = { path = "../language" }
|
|
lsp = { path = "../lsp" }
|
|
project = { path = "../project" }
|
|
settings = { path = "../settings" }
|
|
theme = { path = "../theme" }
|
|
util = { path = "../util" }
|
|
workspace = { path = "../workspace" }
|
|
|
|
log.workspace = true
|
|
anyhow.workspace = true
|
|
futures.workspace = true
|
|
schemars.workspace = true
|
|
serde.workspace = true
|
|
serde_derive.workspace = true
|
|
smallvec.workspace = true
|
|
postage.workspace = true
|
|
|
|
[dev-dependencies]
|
|
client = { path = "../client", features = ["test-support"] }
|
|
editor = { path = "../editor", features = ["test-support"] }
|
|
language = { path = "../language", features = ["test-support"] }
|
|
lsp = { path = "../lsp", features = ["test-support"] }
|
|
gpui = { path = "../gpui", features = ["test-support"] }
|
|
workspace = { path = "../workspace", features = ["test-support"] }
|
|
theme = { path = "../theme", features = ["test-support"] }
|
|
|
|
serde_json.workspace = true
|
|
unindent.workspace = true
|