summaryrefslogtreecommitdiffstats
path: root/default-plugins
diff options
context:
space:
mode:
authorJae-Heon Ji <32578710+jaeheonji@users.noreply.github.com>2022-05-22 16:56:29 +0900
committerGitHub <noreply@github.com>2022-05-22 16:56:29 +0900
commitc5807767d248e3c122cc1e8a67dfe34ef8ea1f78 (patch)
tree07edd82e56c1489edb635583b7c3d2a0d4155f0f /default-plugins
parent48f2285e5b9efae9e53a9879f9bc36b667d5c633 (diff)
fix(strider): update out of range index in files (#1425)
Diffstat (limited to 'default-plugins')
-rw-r--r--default-plugins/strider/src/main.rs2
-rw-r--r--default-plugins/strider/src/state.rs12
2 files changed, 8 insertions, 6 deletions
diff --git a/default-plugins/strider/src/main.rs b/default-plugins/strider/src/main.rs
index 75f03513d..4ce0b0434 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 7c19cb695..81d44a61d 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()),
}
}
}