From 683c152fa29239cdb8dbc39eb247ca4f94706676 Mon Sep 17 00:00:00 2001 From: a-kenji Date: Tue, 23 Feb 2021 20:25:02 +0100 Subject: [PATCH] feature(strider): Allow to Hide Hidden Files (#203) closes #197 default keybinding = '.' default view = shows hidden files Alternative: Hide hidden files by default. --- default-tiles/strider/src/main.rs | 7 +++++++ default-tiles/strider/src/state.rs | 8 ++++++++ 2 files changed, 15 insertions(+) diff --git a/default-tiles/strider/src/main.rs b/default-tiles/strider/src/main.rs index 3aa51237..3213b2af 100644 --- a/default-tiles/strider/src/main.rs +++ b/default-tiles/strider/src/main.rs @@ -61,6 +61,12 @@ impl ZellijTile for State { self.path.pop(); refresh_directory(self); } + + Key::Char('.') => { + self.toggle_hidden_files(); + refresh_directory(self); + } + _ => (), }; } @@ -80,6 +86,7 @@ fn refresh_directory(state: &mut State) { } }) .ok() + .filter(|d| !d.is_hidden_file() || !state.hide_hidden_files) }) .collect(); diff --git a/default-tiles/strider/src/state.rs b/default-tiles/strider/src/state.rs index cbb44dcd..2a9230e8 100644 --- a/default-tiles/strider/src/state.rs +++ b/default-tiles/strider/src/state.rs @@ -6,6 +6,7 @@ pub struct State { pub path: PathBuf, pub files: Vec, pub cursor_hist: HashMap, + pub hide_hidden_files: bool, } impl State { @@ -21,6 +22,9 @@ impl State { pub fn scroll(&self) -> usize { self.cursor_hist.get(&self.path).unwrap_or(&(0, 0)).1 } + pub fn toggle_hidden_files(&mut self) { + self.hide_hidden_files = !self.hide_hidden_files; + } } #[derive(PartialEq, Eq, PartialOrd, Ord, Clone)] @@ -52,4 +56,8 @@ impl FsEntry { [name, padding, info].concat() } } + + pub fn is_hidden_file(&self) -> bool { + self.name().chars().nth(0).unwrap() == '.'.into() + } }