From b8d3d50cdadbefc64128449626631e5a5e425c6d Mon Sep 17 00:00:00 2001 From: altsem Date: Mon, 3 Feb 2025 21:43:49 +0100 Subject: [PATCH] ignore file events such as "OPEN", just listen to CREATE/REMOVE/MODIFY --- src/file_watcher.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/file_watcher.rs b/src/file_watcher.rs index 9e2e0f679a..22f73efa09 100644 --- a/src/file_watcher.rs +++ b/src/file_watcher.rs @@ -1,6 +1,6 @@ use crate::Res; use ignore::gitignore::GitignoreBuilder; -use notify::{Event, RecommendedWatcher, RecursiveMode, Watcher}; +use notify::{Event, EventKind, RecommendedWatcher, RecursiveMode, Watcher}; use std::{ path::Path, sync::{ @@ -23,8 +23,13 @@ impl FileWatcher { let mut watcher = notify::recommended_watcher(move |res: Result| { if let Ok(event) = res { + if !is_changed(&event) { + return; + } + for path in event.paths { if !gitignore.matched(&path, path.is_dir()).is_ignore() { + log::info!("File changed: {:?}", path); pending_updates_w.store(true, Ordering::Relaxed); break; } @@ -44,3 +49,10 @@ impl FileWatcher { self.pending_updates.swap(false, Ordering::Relaxed) } } + +fn is_changed(event: &Event) -> bool { + matches!( + event.kind, + EventKind::Create(_) | EventKind::Modify(_) | EventKind::Remove(_) + ) +}