Merge pull request #76 from PR0M3TH3AN/codex/fix-rename-handling-in-watcher.rs

Fix rename debouncer to preserve paths
This commit is contained in:
thePR0M3TH3AN
2025-05-24 20:40:00 -04:00
committed by GitHub

View File

@@ -158,16 +158,25 @@ impl EventDebouncer {
.retain(|p, _| !p.starts_with(&path) || p == &path); .retain(|p, _| !p.starts_with(&path) || p == &path);
} }
match self.events.get_mut(&path) { use std::collections::hash_map::Entry;
Some(existing) => {
match self.events.entry(path) {
Entry::Occupied(mut o) => {
let existing = o.get_mut();
if event.priority < existing.priority { if event.priority < existing.priority {
existing.priority = event.priority; existing.priority = event.priority;
} }
existing.kind = event.kind; existing.kind = event.kind;
existing.timestamp = event.timestamp; existing.timestamp = event.timestamp;
if let Some(old_p) = event.old_path {
existing.old_path = Some(old_p);
}
if let Some(new_p) = event.new_path {
existing.new_path = Some(new_p);
}
} }
None => { Entry::Vacant(v) => {
self.events.insert(path, event); v.insert(event);
} }
} }
} }