1
0
forked from extern/nix-config
donovanglover-nix-config/patches/zola-serve-fix.patch

45 lines
2.1 KiB
Diff

From d9d41a0d919d90008e4c0db31cc86786ca502aa1 Mon Sep 17 00:00:00 2001
From: Andrew Langmeier <raymi306@gmail.com>
Date: Sun, 13 Aug 2023 17:34:32 +0000
Subject: [PATCH] Add fix for detecting changes on files by editors which
replace files on save, such as vi
---
src/cmd/serve.rs | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/src/cmd/serve.rs b/src/cmd/serve.rs
index 46e8d9345..35fd85f1f 100644
--- a/src/cmd/serve.rs
+++ b/src/cmd/serve.rs
@@ -653,6 +653,29 @@ pub fn serve(
};
messages::report_elapsed_time(start);
}
+ NoticeRemove(path) => {
+ // Some editors, like those in the vi family, replace the file you're
+ // working on with a copy, breaking the watcher.
+ //
+ // See https://github.com/notify-rs/notify/issues/247
+ //
+ // If we need to watch other single required files, should handle them
+ // here. For now, just config.toml needs special handling
+ match detect_change_kind(root_dir, &path, &config_path) {
+ (ChangeKind::Config, _) => {
+ console::info("-> Config changed. The browser needs to be refreshed to make the changes visible.");
+
+ if let Some(s) = recreate_site() {
+ site = s;
+ }
+ let entry = config_path_rel.to_str().unwrap_or("config.toml");
+ watcher
+ .watch(root_dir.join(entry), RecursiveMode::Recursive)
+ .with_context(|| format!("Can't watch `{}` for changes in folder `{}`. Does it exist, and do you have correct permissions?", entry, root_dir.display()))?;
+ }
+ _ => {}
+ }
+ }
_ => {}
}
}