diff --git a/assets/plugins/strider.wasm b/assets/plugins/strider.wasm index 3030e911..d0de0ae1 100755 Binary files a/assets/plugins/strider.wasm and b/assets/plugins/strider.wasm differ diff --git a/default-plugins/strider/src/main.rs b/default-plugins/strider/src/main.rs index 75f03513..4ce0b043 100644 --- a/default-plugins/strider/src/main.rs +++ b/default-plugins/strider/src/main.rs @@ -27,7 +27,7 @@ impl ZellijPlugin for State { } Key::Down | Key::Char('j') => { let next = self.selected().saturating_add(1); - *self.selected_mut() = min(self.files.len() - 1, next); + *self.selected_mut() = min(self.files.len().saturating_sub(1), next); } Key::Right | Key::Char('\n') | Key::Char('l') if !self.files.is_empty() => { self.traverse_dir_or_open_file(); diff --git a/default-plugins/strider/src/state.rs b/default-plugins/strider/src/state.rs index 7c19cb69..81d44a61 100644 --- a/default-plugins/strider/src/state.rs +++ b/default-plugins/strider/src/state.rs @@ -34,12 +34,14 @@ impl State { self.hide_hidden_files = !self.hide_hidden_files; } pub fn traverse_dir_or_open_file(&mut self) { - match self.files[self.selected()].clone() { - FsEntry::Dir(p, _) => { - self.path = p; - refresh_directory(self); + if let Some(f) = self.files.get(self.selected()) { + match f.clone() { + FsEntry::Dir(p, _) => { + self.path = p; + refresh_directory(self); + } + FsEntry::File(p, _) => open_file(p.strip_prefix(ROOT).unwrap()), } - FsEntry::File(p, _) => open_file(p.strip_prefix(ROOT).unwrap()), } } }