mirror of
https://github.com/zed-industries/zed.git
synced 2025-02-10 04:09:37 +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 |
||
---|---|---|
.. | ||
src | ||
Cargo.toml |