summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/tab.rs3
-rw-r--r--src/trees.rs36
2 files changed, 9 insertions, 30 deletions
diff --git a/src/tab.rs b/src/tab.rs
index 9d0cbbe..5a31edc 100644
--- a/src/tab.rs
+++ b/src/tab.rs
@@ -371,7 +371,8 @@ impl Tab {
/// Select the previous siblging
pub fn tree_select_prev(&mut self) -> Result<()> {
- self.tree.select_prev()
+ self.tree.select_prev();
+ Ok(())
}
/// Select the first child if any.
diff --git a/src/trees.rs b/src/trees.rs
index fab2b65..307c362 100644
--- a/src/trees.rs
+++ b/src/trees.rs
@@ -227,58 +227,36 @@ impl FileSystem {
}
/// Select previous sibling or the parent
- pub fn select_prev(&mut self) -> Result<()> {
+ pub fn select_prev(&mut self) {
let current_path = self.selected().to_owned();
let Some(parent_path) = current_path.parent() else {
- return Ok(());
+ return;
};
let Some(parent_node) = self.nodes.get(parent_path) else {
- return Ok(());
+ return;
};
let Some(siblings_paths) = &parent_node.children else {
- return Ok(());
+ return;
};
let Some(index_current) = siblings_paths.iter().position(|path| path == &current_path)
else {
- return Ok(());
+ return;
};
if index_current > 0 {
// Previous sibling
self.selected = siblings_paths[index_current - 1].to_owned();
let Some(node) = self.nodes.get_mut(&self.selected) else {
- return Ok(());
+ return;
};
node.select();
} else {
// parent
let Some(node) = self.nodes.get_mut(parent_path) else {
- return Ok(());
+ return;
};
self.selected = parent_path.to_owned();
node.select();
}
- Ok(())
- }
-
- // TODO: remove indentation with let ... else
- /// Select previous sibling or parent if it's the first.
- pub fn prev_not_working(&mut self) {
- if let Some(parent) = self.selected.parent() {
- if let Some(parent_node) = self.nodes.get(parent) {
- if let Some(siblings) = &parent_node.children {
- if let Some(index_selected) =
- siblings.iter().position(|path| path == &self.selected)
- {
- if index_selected == 0 {
- self.selected = parent.to_owned();
- } else if let Some(prev_sibling) = siblings.get(index_selected - 1) {
- self.selected = prev_sibling.to_owned();
- }
- self.select_current()
- }
- }
- }
- }
}
/// Fold selected node