diff options
-rw-r--r-- | Cargo.lock | 12 | ||||
-rw-r--r-- | src/config/preview.rs | 8 | ||||
-rw-r--r-- | src/preview/preview_default.rs | 7 | ||||
-rw-r--r-- | src/preview/preview_file.rs | 4 |
4 files changed, 20 insertions, 11 deletions
@@ -148,9 +148,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.9" +version = "0.8.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ff1f980957787286a554052d03c7aee98d99cc32e09f6d45f0a814133c87978" +checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83" dependencies = [ "cfg-if", "once_cell", @@ -893,9 +893,9 @@ checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" [[package]] name = "smallvec" -version = "1.8.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" [[package]] name = "str-buf" @@ -1063,9 +1063,9 @@ checksum = "5bd2fe26506023ed7b5e1e315add59d6f584c621d037f9368fea9cfb988f368c" [[package]] name = "unicode-normalization" -version = "0.1.19" +version = "0.1.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" +checksum = "81dee68f85cab8cf68dec42158baf3a79a1cdc065a8b103025965d6ccb7f6cbd" dependencies = [ "tinyvec", ] diff --git a/src/config/preview.rs b/src/config/preview.rs index 7d0b0be..962c273 100644 --- a/src/config/preview.rs +++ b/src/config/preview.rs @@ -10,13 +10,13 @@ pub struct JoshutoPreviewEntry { } #[derive(Debug, Default, Deserialize)] -struct JoshutoPreviewCrude { +struct JoshutoPreviewRaw { pub extension: Option<HashMap<String, JoshutoPreviewEntry>>, pub mimetype: Option<HashMap<String, JoshutoPreviewEntry>>, } -impl From<JoshutoPreviewCrude> for JoshutoPreview { - fn from(crude: JoshutoPreviewCrude) -> Self { +impl From<JoshutoPreviewRaw> for JoshutoPreview { + fn from(crude: JoshutoPreviewRaw) -> Self { let extension = crude.extension.unwrap_or_default(); let mimetype = crude.mimetype.unwrap_or_default(); @@ -35,6 +35,6 @@ pub struct JoshutoPreview { impl TomlConfigFile for JoshutoPreview { fn get_config(file_name: &str) -> Self { - parse_to_config_file::<JoshutoPreviewCrude, JoshutoPreview>(file_name).unwrap_or_default() + parse_to_config_file::<JoshutoPreviewRaw, JoshutoPreview>(file_name).unwrap_or_default() } } diff --git a/src/preview/preview_default.rs b/src/preview/preview_default.rs index 8a216c9..bb5ea64 100644 --- a/src/preview/preview_default.rs +++ b/src/preview/preview_default.rs @@ -23,7 +23,12 @@ pub fn load_preview_path(context: &mut AppContext, p: path::PathBuf, metadata: J let need_to_load = context .preview_context_ref() .get_preview_ref(p.as_path()) - .is_none(); + .map(|p| { + p.as_ref() + .map(|p| p.modified < metadata.modified()) + .unwrap_or(true) + }) + .unwrap_or(true); if need_to_load { preview_file::Background::preview_path_with_script(context, p); diff --git a/src/preview/preview_file.rs b/src/preview/preview_file.rs index dac3ad2..f929b2e 100644 --- a/src/preview/preview_file.rs +++ b/src/preview/preview_file.rs @@ -1,6 +1,7 @@ use std::path; use std::process::{Command, Output}; use std::thread; +use std::time; use crate::context::AppContext; use crate::event::AppEvent; @@ -10,6 +11,7 @@ pub struct FilePreview { pub status: std::process::ExitStatus, pub output: String, pub index: usize, + pub modified: time::SystemTime, } impl std::convert::From<Output> for FilePreview { @@ -17,9 +19,11 @@ impl std::convert::From<Output> for FilePreview { let s = String::from_utf8_lossy(&output.stdout).to_string(); let s2 = s.replace('\t', " "); let status = output.status; + let modified = time::SystemTime::now(); Self { status, output: s2, + modified, index: 0, } } |