浏览代码

Fix jetbrains saving tmp file to tilde suffix

Shiroko 2 年之前
父节点
当前提交
a0ffb3bb65
共有 1 个文件被更改,包括 6 次插入2 次删除
  1. 6 2
      src/server/mod.rs

+ 6 - 2
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(),