diff options
author | Jeff Zhao <jeff.no.zhao@gmail.com> | 2022-09-03 12:45:51 -0400 |
---|---|---|
committer | Jeff Zhao <jeff.no.zhao@gmail.com> | 2022-09-03 12:45:51 -0400 |
commit | e7755ad0be98540c777d86c67605386ff11522a3 (patch) | |
tree | 8b8c6c3b138fea8ded708f64e0a24073b0a1f7ce /src/commands | |
parent | 596ced65ae6ae59f4e1ac2ed60246a4c5943a919 (diff) |
add symlink relative
Diffstat (limited to 'src/commands')
-rw-r--r-- | src/commands/file_ops.rs | 45 | ||||
-rw-r--r-- | src/commands/flat.rs | 2 | ||||
-rw-r--r-- | src/commands/numbered_command.rs | 2 | ||||
-rw-r--r-- | src/commands/show_help.rs | 4 | ||||
-rw-r--r-- | src/commands/tab_ops.rs | 4 |
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)?; |