Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-term/src/handlers/diagnostics.rs')
-rw-r--r--helix-term/src/handlers/diagnostics.rs24
1 files changed, 24 insertions, 0 deletions
diff --git a/helix-term/src/handlers/diagnostics.rs b/helix-term/src/handlers/diagnostics.rs
new file mode 100644
index 00000000..3e44d416
--- /dev/null
+++ b/helix-term/src/handlers/diagnostics.rs
@@ -0,0 +1,24 @@
+use helix_event::{register_hook, send_blocking};
+use helix_view::document::Mode;
+use helix_view::events::DiagnosticsDidChange;
+use helix_view::handlers::diagnostics::DiagnosticEvent;
+use helix_view::handlers::Handlers;
+
+use crate::events::OnModeSwitch;
+
+pub(super) fn register_hooks(_handlers: &Handlers) {
+ register_hook!(move |event: &mut DiagnosticsDidChange<'_>| {
+ if event.editor.mode != Mode::Insert {
+ for (view, _) in event.editor.tree.views_mut() {
+ send_blocking(&view.diagnostics_handler.events, DiagnosticEvent::Refresh)
+ }
+ }
+ Ok(())
+ });
+ register_hook!(move |event: &mut OnModeSwitch<'_, '_>| {
+ for (view, _) in event.cx.editor.tree.views_mut() {
+ view.diagnostics_handler.active = event.new_mode != Mode::Insert;
+ }
+ Ok(())
+ });
+}