summaryrefslogtreecommitdiffstats
path: root/src/commands
diff options
context:
space:
mode:
authorJeff Zhao <jeff.no.zhao@gmail.com>2022-09-03 12:45:51 -0400
committerJeff Zhao <jeff.no.zhao@gmail.com>2022-09-03 12:45:51 -0400
commite7755ad0be98540c777d86c67605386ff11522a3 (patch)
tree8b8c6c3b138fea8ded708f64e0a24073b0a1f7ce /src/commands
parent596ced65ae6ae59f4e1ac2ed60246a4c5943a919 (diff)
add symlink relative
Diffstat (limited to 'src/commands')
-rw-r--r--src/commands/file_ops.rs45
-rw-r--r--src/commands/flat.rs2
-rw-r--r--src/commands/numbered_command.rs2
-rw-r--r--src/commands/show_help.rs4
-rw-r--r--src/commands/tab_ops.rs4
5 files changed, 25 insertions, 32 deletions
diff --git a/src/commands/file_ops.rs b/src/commands/file_ops.rs
index c50129b..dd16264 100644
--- a/src/commands/file_ops.rs
+++ b/src/commands/file_ops.rs
@@ -5,42 +5,35 @@ use crate::context::{AppContext, LocalStateContext};
use crate::error::{JoshutoError, JoshutoErrorKind, JoshutoResult};
use crate::io::{FileOperation, FileOperationOptions, IoWorkerThread};
-pub fn cut(context: &mut AppContext) -> JoshutoResult {
- if let Some(list) = context.tab_context_ref().curr_tab_ref().curr_list_ref() {
- let selected = list.get_selected_paths();
+fn new_local_state(context: &mut AppContext, file_op: FileOperation) -> Option<()> {
+ let list = context.tab_context_ref().curr_tab_ref().curr_list_ref()?;
+ let selected = list.get_selected_paths();
- let mut local_state = LocalStateContext::new();
- local_state.set_paths(selected.into_iter());
- local_state.set_file_op(FileOperation::Cut);
+ let mut local_state = LocalStateContext::new();
+ local_state.set_paths(selected.into_iter());
+ local_state.set_file_op(file_op);
- context.set_local_state(local_state);
- }
+ context.set_local_state(local_state);
+ Some(())
+}
+
+pub fn cut(context: &mut AppContext) -> JoshutoResult {
+ new_local_state(context, FileOperation::Cut);
Ok(())
}
pub fn copy(context: &mut AppContext) -> JoshutoResult {
- if let Some(list) = context.tab_context_ref().curr_tab_ref().curr_list_ref() {
- let selected = list.get_selected_paths();
-
- let mut local_state = LocalStateContext::new();
- local_state.set_paths(selected.into_iter());
- local_state.set_file_op(FileOperation::Copy);
-
- context.set_local_state(local_state);
- }
+ new_local_state(context, FileOperation::Copy);
Ok(())
}
-pub fn link(context: &mut AppContext) -> JoshutoResult {
- if let Some(list) = context.tab_context_ref().curr_tab_ref().curr_list_ref() {
- let selected = list.get_selected_paths();
-
- let mut local_state = LocalStateContext::new();
- local_state.set_paths(selected.into_iter());
- local_state.set_file_op(FileOperation::Symlink);
+pub fn symlink_absolute(context: &mut AppContext) -> JoshutoResult {
+ new_local_state(context, FileOperation::Symlink { relative: false });
+ Ok(())
+}
- context.set_local_state(local_state);
- }
+pub fn symlink_relative(context: &mut AppContext) -> JoshutoResult {
+ new_local_state(context, FileOperation::Symlink { relative: true });
Ok(())
}
diff --git a/src/commands/flat.rs b/src/commands/flat.rs
index 8e40151..94f0959 100644
--- a/src/commands/flat.rs
+++ b/src/commands/flat.rs
@@ -44,7 +44,7 @@ pub fn _walk_directory(
Ok(results)
}
-pub fn flatten(depth: usize, context: &mut AppContext) -> JoshutoResult {
+pub fn flatten(context: &mut AppContext, depth: usize) -> JoshutoResult {
let path = context.tab_context_ref().curr_tab_ref().cwd().to_path_buf();
let options = context.config_ref().display_options_ref().clone();
diff --git a/src/commands/numbered_command.rs b/src/commands/numbered_command.rs
index c1331da..5072e0a 100644
--- a/src/commands/numbered_command.rs
+++ b/src/commands/numbered_command.rs
@@ -11,10 +11,10 @@ use crate::ui::views::TuiView;
use crate::ui::AppBackend;
pub fn numbered_command(
- first_char: char,
context: &mut AppContext,
backend: &mut AppBackend,
keymap: &AppKeyMapping,
+ first_char: char,
) -> JoshutoResult {
context.flush_event();
let mut prefix = String::from(first_char);
diff --git a/src/commands/show_help.rs b/src/commands/show_help.rs
index a8a7a4b..fbf80a0 100644
--- a/src/commands/show_help.rs
+++ b/src/commands/show_help.rs
@@ -52,8 +52,8 @@ pub fn help_loop(
keymap_t.help_view.get(&event)
{
match command {
- Command::CursorMoveUp(_) => move_offset(&mut offset, -1),
- Command::CursorMoveDown(_) => move_offset(&mut offset, 1),
+ Command::CursorMoveUp { .. } => move_offset(&mut offset, -1),
+ Command::CursorMoveDown { .. } => move_offset(&mut offset, 1),
Command::CursorMoveHome => offset = 0,
Command::CursorMoveEnd => offset = 255,
Command::CursorMovePageUp(_) => move_offset(&mut offset, -10),
diff --git a/src/commands/tab_ops.rs b/src/commands/tab_ops.rs
index bfd1d11..70e4ad1 100644
--- a/src/commands/tab_ops.rs
+++ b/src/commands/tab_ops.rs
@@ -69,7 +69,7 @@ fn _tab_switch(new_index: usize, context: &mut AppContext) -> std::io::Result<()
Ok(())
}
-pub fn tab_switch(offset: i32, context: &mut AppContext) -> std::io::Result<()> {
+pub fn tab_switch(context: &mut AppContext, offset: i32) -> std::io::Result<()> {
let index = context.tab_context_ref().index;
let num_tabs = context.tab_context_ref().len();
let new_index = (index as i32 + num_tabs as i32 + offset) as usize % num_tabs;
@@ -77,7 +77,7 @@ pub fn tab_switch(offset: i32, context: &mut AppContext) -> std::io::Result<()>
_tab_switch(new_index, context)
}
-pub fn tab_switch_index(new_index: usize, context: &mut AppContext) -> JoshutoResult {
+pub fn tab_switch_index(context: &mut AppContext, new_index: usize) -> JoshutoResult {
let num_tabs = context.tab_context_ref().len();
if new_index <= num_tabs {
_tab_switch(new_index - 1, context)?;