Files
Kigi-CLI/crates/codegen/kigi-tools/src/reminders/lsp_diagnostics.rs
T
ZacharyZhang-NY a02b555e66 docs(comments): rewrite comments across all crates to the guidelines
Sweep every first-party crate source (1956 .rs files) to the project comment
guidelines: delete redundant restatements, decorative banners, change
narration, and end-of-line comments; keep and tighten the crucial ones
(invariants, bug rationale, SAFETY blocks, ported-source attribution).

No functional code changed. Every edit is proven comment-only against the
prior tree by a comment-stripping lexer (string/char/raw-string aware) plus a
separate doctest-fence check. Where removing a comment made rustfmt or clippy
want to re-lay-out adjacent code, the minimal triggering comment is restored so
code tokens stay byte-identical.

Gates green: cargo fmt --all --check (0 diffs), cargo check and cargo clippy
--workspace --all-targets (0 warnings).

Adds scripts/check_codegen_comment_guidelines.py — the enforcement gate for
these guidelines (flags banners, end-of-line comments, change narration, and
commented-out code).
2026-07-23 16:55:39 -04:00

49 lines
1.5 KiB
Rust

//! Cross-cutting reminder: notifies LSP of file changes and drains diagnostics.
use std::sync::Arc;
use crate::implementations::lsp::LspBackend;
use crate::types::output::{SearchReplaceOutput, ToolOutput};
use crate::types::resources::SharedResources;
use crate::types::tool::Reminder;
pub struct LspDiagnosticsReminder;
#[async_trait::async_trait]
impl Reminder for LspDiagnosticsReminder {
async fn collect_reminders(
&self,
resources: SharedResources,
tool_output: &ToolOutput,
) -> Vec<String> {
let lsp = {
let res = resources.lock().await;
match res.get::<Arc<dyn LspBackend>>() {
Some(h) => h.clone(),
None => return vec![],
}
};
lsp.ensure_started_background();
// Notify LSP of the edit so diagnostics refresh; when the adapter is not
// yet ready the notification is buffered rather than dropped.
if let ToolOutput::SearchReplace(SearchReplaceOutput::EditsApplied(edits)) = tool_output
&& let Ok(content) = std::fs::read_to_string(&edits.absolute_path)
{
lsp.notify_file_changed(&edits.absolute_path, &content)
.await;
}
// Drain diagnostics queued by this or earlier edits.
if let Some(summary) = lsp
.drain_diagnostics(std::time::Duration::from_millis(500))
.await
{
return vec![summary.text];
}
vec![]
}
}