summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCanop <cano.petrole@gmail.com>2020-03-24 17:38:10 +0100
committerCanop <cano.petrole@gmail.com>2020-03-24 17:38:10 +0100
commit3bfb9f545206fa66b72c419d9307d78fe4b56673 (patch)
treedeaac03a394aaddf128a0a0f839e42455764928b
parentb8bc0b531098ee524d2900c7e5214da30bf6c78b (diff)
right key open directory, left key gets back (when input is empty)
Fix #179
-rw-r--r--CHANGELOG.md1
-rw-r--r--src/browser_states.rs18
-rw-r--r--src/browser_verbs.rs13
-rw-r--r--src/commands.rs10
4 files changed, 30 insertions, 12 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bbe5aba..6741221 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,5 @@
### master
+- right key open directory, left key gets back (when input is empty)
- replace ~ in path arguments with user home dir
- use $XDG_CONFIG_HOME/git/ignore when the normal core.excludesFile git setting is missing
diff --git a/src/browser_states.rs b/src/browser_states.rs
index 1181ee3..3dd0af3 100644
--- a/src/browser_states.rs
+++ b/src/browser_states.rs
@@ -166,6 +166,24 @@ impl BrowserState {
}
}
+ pub fn go_to_parent(
+ &mut self,
+ screen: &mut Screen,
+ ) -> AppStateCmdResult {
+ match &self.displayed_tree().selected_line().path.parent() {
+ Some(path) => AppStateCmdResult::from_optional_state(
+ BrowserState::new(
+ path.to_path_buf(),
+ self.displayed_tree().options.without_pattern(),
+ screen,
+ &Dam::unlimited(),
+ ),
+ Command::new(),
+ ),
+ None => AppStateCmdResult::DisplayError("no parent found".to_string()),
+ }
+ }
+
fn normal_status_message(&self, has_pattern: bool) -> Composite<'static> {
let tree = self.displayed_tree();
if tree.selection == 0 {
diff --git a/src/browser_verbs.rs b/src/browser_verbs.rs
index 61d3f8f..291b6d3 100644
--- a/src/browser_verbs.rs
+++ b/src/browser_verbs.rs
@@ -89,18 +89,7 @@ impl VerbExecutor for BrowserState {
}
AppStateCmdResult::Keep
}
- ":parent" => match &self.displayed_tree().selected_line().path.parent() {
- Some(path) => AppStateCmdResult::from_optional_state(
- BrowserState::new(
- path.to_path_buf(),
- self.displayed_tree().options.without_pattern(),
- screen,
- &Dam::unlimited(),
- ),
- Command::new(),
- ),
- None => AppStateCmdResult::DisplayError("no parent found".to_string()),
- },
+ ":parent" => self.go_to_parent(screen),
":print_path" => {
external::print_path(&self.displayed_tree().selected_line().target(), con)?
}
diff --git a/src/commands.rs b/src/commands.rs
index b7dd44f..b2b8675 100644
--- a/src/commands.rs
+++ b/src/commands.rs
@@ -244,6 +244,16 @@ impl Command {
return;
}
+ if *key == keys::LEFT && self.raw.is_empty() {
+ self.set_action(Action::Back);
+ return;
+ }
+
+ if *key == keys::RIGHT && self.raw.is_empty() {
+ self.set_action(Action::OpenSelection);
+ return;
+ }
+
if *key == keys::BACK_TAB {
// should probably be a normal verb instead of an action with a special
// handling here