diff options
Diffstat (limited to 'src/history.rs')
-rw-r--r-- | src/history.rs | 35 |
1 files changed, 25 insertions, 10 deletions
diff --git a/src/history.rs b/src/history.rs index c1fd782..0035d88 100644 --- a/src/history.rs +++ b/src/history.rs @@ -7,6 +7,7 @@ use walkdir::WalkDir; use crate::config::clean::app::display::dirlist::DirListDisplayOptions; use crate::config::clean::app::display::tab::TabDisplayOption; use crate::config::clean::app::display::DisplayOption; +use crate::config::clean::app::AppConfig; use crate::context::UiContext; use crate::fs::{JoshutoDirEntry, JoshutoDirList, JoshutoMetadata}; @@ -14,6 +15,7 @@ pub trait DirectoryHistory { fn populate_to_root( &mut self, path: &Path, + config: &AppConfig, ui_context: &UiContext, options: &DisplayOption, tab_options: &TabDisplayOption, @@ -21,18 +23,21 @@ pub trait DirectoryHistory { fn create_or_soft_update( &mut self, path: &Path, + config: &AppConfig, options: &DisplayOption, tab_options: &TabDisplayOption, ) -> io::Result<()>; fn create_or_reload( &mut self, path: &Path, + config: &AppConfig, options: &DisplayOption, tab_options: &TabDisplayOption, ) -> io::Result<()>; fn reload( &mut self, path: &Path, + config: &AppConfig, options: &DisplayOption, tab_options: &TabDisplayOption, ) -> io::Result<()>; @@ -47,6 +52,7 @@ impl DirectoryHistory for JoshutoHistory { fn populate_to_root( &mut self, path: &Path, + config: &AppConfig, ui_context: &UiContext, options: &DisplayOption, tab_options: &TabDisplayOption, @@ -57,7 +63,7 @@ impl DirectoryHistory for JoshutoHistory { for curr in path.ancestors() { if self.contains_key(curr) { let mut new_dirlist = - create_dirlist_with_history(self, curr, options, tab_options)?; + create_dirlist_with_history(self, curr, config, options, tab_options)?; if let Some(ancestor) = prev.as_ref() { if let Some(i) = get_index_of_value(&new_dirlist.contents, ancestor) { new_dirlist.set_index(Some(i), ui_context, options); @@ -65,8 +71,12 @@ impl DirectoryHistory for JoshutoHistory { } dirlists.push(new_dirlist); } else { - let mut new_dirlist = - JoshutoDirList::from_path(curr.to_path_buf().clone(), options, tab_options)?; + let mut new_dirlist = JoshutoDirList::from_path( + curr.to_path_buf().clone(), + config, + options, + tab_options, + )?; if let Some(ancestor) = prev.as_ref() { if let Some(i) = get_index_of_value(&new_dirlist.contents, ancestor) { new_dirlist.set_index(Some(i), ui_context, options); @@ -85,6 +95,7 @@ impl DirectoryHistory for JoshutoHistory { fn create_or_soft_update( &mut self, path: &Path, + config: &AppConfig, options: &DisplayOption, tab_options: &TabDisplayOption, ) -> io::Result<()> { @@ -95,9 +106,9 @@ impl DirectoryHistory for JoshutoHistory { }; if need_update { let dirlist = if contains_key { - create_dirlist_with_history(self, path, options, tab_options)? + create_dirlist_with_history(self, path, config, options, tab_options)? } else { - JoshutoDirList::from_path(path.to_path_buf(), options, tab_options)? + JoshutoDirList::from_path(path.to_path_buf(), config, options, tab_options)? }; self.insert(path.to_path_buf(), dirlist); } @@ -107,13 +118,14 @@ impl DirectoryHistory for JoshutoHistory { fn create_or_reload( &mut self, path: &Path, + config: &AppConfig, options: &DisplayOption, tab_options: &TabDisplayOption, ) -> io::Result<()> { let dirlist = if self.contains_key(path) { - create_dirlist_with_history(self, path, options, tab_options)? + create_dirlist_with_history(self, path, config, options, tab_options)? } else { - JoshutoDirList::from_path(path.to_path_buf(), options, tab_options)? + JoshutoDirList::from_path(path.to_path_buf(), config, options, tab_options)? }; self.insert(path.to_path_buf(), dirlist); Ok(()) @@ -122,10 +134,11 @@ impl DirectoryHistory for JoshutoHistory { fn reload( &mut self, path: &Path, + config: &AppConfig, options: &DisplayOption, tab_options: &TabDisplayOption, ) -> io::Result<()> { - let dirlist = create_dirlist_with_history(self, path, options, tab_options)?; + let dirlist = create_dirlist_with_history(self, path, config, options, tab_options)?; self.insert(path.to_path_buf(), dirlist); Ok(()) } @@ -154,11 +167,12 @@ fn get_index_of_value(arr: &[JoshutoDirEntry], val: &Path) -> Option<usize> { pub fn create_dirlist_with_history( history: &JoshutoHistory, path: &Path, + config: &AppConfig, options: &DisplayOption, tab_options: &TabDisplayOption, ) -> io::Result<JoshutoDirList> { let filter_func = options.filter_func(); - let mut contents = read_directory(path, filter_func, options, tab_options)?; + let mut contents = read_directory(path, filter_func, config, options, tab_options)?; // re-use directory size information on reload for entry in contents.iter_mut() { @@ -245,6 +259,7 @@ pub fn create_dirlist_with_history( pub fn read_directory<F>( path: &Path, filter_func: F, + config: &AppConfig, options: &DisplayOption, tab_options: &TabDisplayOption, ) -> io::Result<Vec<JoshutoDirEntry>> @@ -273,7 +288,7 @@ where true } }) - .filter_map(|res| JoshutoDirEntry::from(&res.ok()?, path, options).ok()) + .filter_map(|res| JoshutoDirEntry::from(&res.ok()?, path, config, options).ok()) .collect(); Ok(results) |