diff --git a/src/server/mod.rs b/src/server/mod.rs index 66a438a36..2b63b2d42 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -104,14 +104,15 @@ pub async fn startup_hot_reload(port: u16, config: CrateConfig) -> Result<()> { if chrono::Local::now().timestamp() > last_update_time { // Give time for the change to take effect before reading the file std::thread::sleep(std::time::Duration::from_millis(100)); + let mut updated = false; if let Ok(evt) = evt { let mut messages = Vec::new(); let mut needs_rebuild = false; for path in evt.paths.clone() { - let mut file = File::open(path.clone()).unwrap(); if path.extension().map(|p| p.to_str()).flatten() != Some("rs") { continue; } + let mut file = File::open(path.clone()).unwrap(); let mut src = String::new(); file.read_to_string(&mut src).expect("Unable to read file"); // find changes to the rsx in the file @@ -119,6 +120,7 @@ pub async fn startup_hot_reload(port: u16, config: CrateConfig) -> Result<()> { let mut last_file_rebuild = last_file_rebuild.lock().unwrap(); if let Some(old_str) = last_file_rebuild.map.get(&path) { if let Ok(old) = syn::parse_file(&old_str) { + updated = true; match find_rsx(&syntax, &old) { DiffResult::CodeChanged => { needs_rebuild = true; @@ -191,7 +193,9 @@ pub async fn startup_hot_reload(port: u16, config: CrateConfig) -> Result<()> { let _ = hot_reload_tx.send(SetManyRsxMessage(messages)); } } - last_update_time = chrono::Local::now().timestamp(); + if updated { + last_update_time = chrono::Local::now().timestamp(); + } } }, notify::Config::default(),