From 3e0b2b6c58ba3c93942056535b2c492bad5f1568 Mon Sep 17 00:00:00 2001 From: Joe Wilm Date: Fri, 11 Nov 2016 16:53:13 -0800 Subject: Fix config file reloading on macOS --- src/config.rs | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'src') diff --git a/src/config.rs b/src/config.rs index cd6880d7..33474ddb 100644 --- a/src/config.rs +++ b/src/config.rs @@ -577,23 +577,29 @@ impl Watcher { let ::notify::Event { path, op } = event; if let Ok(op) = op { - if op.contains(op::RENAME) { + // Skip events that are just a rename + if op.contains(op::RENAME) && !op.contains(op::WRITE) { continue; } + // Need to handle ignore for linux if op.contains(op::IGNORED) { if let Some(path) = path.as_ref() { if let Err(err) = watcher.watch(&path) { err_println!("failed to establish watch on {:?}: {:?}", path, err); } + } + } - if path == config_path { - if let Ok((config, _)) = Config::load() { - handler.on_config_reload(config); - }; + // Reload file + path.map(|path| { + if path == config_path { + match Config::load() { + Ok((config, _)) => handler.on_config_reload(config), + Err(err) => err_println!("Ignoring invalid config: {}", err), } } - } + }); } } })) -- cgit