summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--development.md1
-rw-r--r--src/event_dispatch.rs2
-rw-r--r--src/event_exec.rs5
-rw-r--r--src/flagged.rs6
-rw-r--r--src/mode.rs5
-rw-r--r--src/status.rs6
6 files changed, 23 insertions, 2 deletions
diff --git a/development.md b/development.md
index e3536f4..b701659 100644
--- a/development.md
+++ b/development.md
@@ -567,6 +567,7 @@ New view: Tree ! Toggle with 't', fold with 'z'. Navigate normally.
### Version 0.1.23
- [x] preview tar archive
+- [x] Jump mode : 'Space' Toggle flag, 'u' remove all flags, 'Enter' jump to the file
## TODO
diff --git a/src/event_dispatch.rs b/src/event_dispatch.rs
index 844924f..9a0c94e 100644
--- a/src/event_dispatch.rs
+++ b/src/event_dispatch.rs
@@ -95,6 +95,8 @@ impl EventDispatcher {
Mode::Navigate(Navigate::EncryptedDrive) if c == 'm' => status.mount_encrypted_drive(),
Mode::Navigate(Navigate::EncryptedDrive) if c == 'g' => status.go_to_encrypted_drive(),
Mode::Navigate(Navigate::EncryptedDrive) if c == 'u' => status.umount_encrypted_drive(),
+ Mode::Navigate(Navigate::Jump) if c == ' ' => status.jump_remove_selected_flagged(),
+ Mode::Navigate(Navigate::Jump) if c == 'u' => status.clear_flags_and_reset_view(),
Mode::Navigate(Navigate::Marks(MarkAction::Jump)) => status.marks_jump_char(c, colors),
Mode::Navigate(Navigate::Marks(MarkAction::New)) => status.marks_new(c, colors),
Mode::Preview | Mode::Navigate(_) => {
diff --git a/src/event_exec.rs b/src/event_exec.rs
index 7d0f50a..6ffc781 100644
--- a/src/event_exec.rs
+++ b/src/event_exec.rs
@@ -713,7 +713,10 @@ impl EventAction {
LeaveMode::password(status, kind, colors, dest, action)?
}
Mode::InputSimple(InputSimple::Remote) => LeaveMode::remote(status.selected())?,
- Mode::Navigate(Navigate::Jump) => LeaveMode::jump(status)?,
+ Mode::Navigate(Navigate::Jump) => {
+ must_refresh = false;
+ LeaveMode::jump(status)?
+ }
Mode::Navigate(Navigate::History) => LeaveMode::history(status.selected())?,
Mode::Navigate(Navigate::Shortcut) => LeaveMode::shortcut(status.selected())?,
Mode::Navigate(Navigate::Trash) => LeaveMode::trash(status)?,
diff --git a/src/flagged.rs b/src/flagged.rs
index e8b487b..5d32971 100644
--- a/src/flagged.rs
+++ b/src/flagged.rs
@@ -60,6 +60,12 @@ impl Flagged {
.map(|p| p.as_path())
.collect()
}
+
+ /// Remove the selected file from the flagged files.
+ pub fn remove_selected(&mut self) {
+ self.content.remove(self.index);
+ self.index = 0;
+ }
}
impl_selectable_content!(PathBuf, Flagged);
diff --git a/src/mode.rs b/src/mode.rs
index 2919bb0..0832ea1 100644
--- a/src/mode.rs
+++ b/src/mode.rs
@@ -204,7 +204,10 @@ impl fmt::Display for Mode {
Mode::InputCompleted(InputCompleted::Nothing) => write!(f, "Nothing: "),
Mode::InputCompleted(InputCompleted::Command) => write!(f, "Command: "),
Mode::Navigate(Navigate::Marks(_)) => write!(f, "Marks jump:"),
- Mode::Navigate(Navigate::Jump) => write!(f, "Jump : "),
+ Mode::Navigate(Navigate::Jump) => write!(
+ f,
+ "Flagged files: <Enter> go to file -- <SPC> remove flag -- <u> remove all flags"
+ ),
Mode::Navigate(Navigate::History) => write!(f, "History :"),
Mode::Navigate(Navigate::Shortcut) => write!(f, "Shortcut :"),
Mode::Navigate(Navigate::Trash) => write!(f, "Trash :"),
diff --git a/src/status.rs b/src/status.rs
index a927201..1b50615 100644
--- a/src/status.rs
+++ b/src/status.rs
@@ -317,6 +317,12 @@ impl Status {
self.reset_tabs_view()
}
+ /// Remove a flag file from Jump mode
+ pub fn jump_remove_selected_flagged(&mut self) -> Result<()> {
+ self.flagged.remove_selected();
+ Ok(())
+ }
+
pub fn click(
&mut self,
row: u16,