summaryrefslogtreecommitdiffstats
path: root/src/commands/cursor_move.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/commands/cursor_move.rs')
-rw-r--r--src/commands/cursor_move.rs19
1 files changed, 18 insertions, 1 deletions
diff --git a/src/commands/cursor_move.rs b/src/commands/cursor_move.rs
index 1f6e5ff..2d7688f 100644
--- a/src/commands/cursor_move.rs
+++ b/src/commands/cursor_move.rs
@@ -1,5 +1,7 @@
+use std::path;
+
use crate::context::AppContext;
-use crate::error::AppResult;
+use crate::error::{AppError, AppErrorKind, AppResult};
use crate::ui::AppBackend;
pub fn lazy_load_directory_size(context: &mut AppContext) {
@@ -54,6 +56,21 @@ pub fn cursor_move(context: &mut AppContext, new_index: usize) {
}
}
+pub fn to_path(context: &mut AppContext, path: &path::Path) -> AppResult {
+ // This error should never happen
+ let err = || AppError::new(AppErrorKind::UnknownError, String::from("Unexpected error"));
+ let ui_context = context.ui_context_ref().clone();
+ let display_options = context.config_ref().display_options_ref().clone();
+ if let Some(curr_list) = context.tab_context_mut().curr_tab_mut().curr_list_mut() {
+ if let path::Component::Normal(name) = path.components().next().ok_or_else(err)? {
+ let index = curr_list.get_index_from_name(name.to_str().ok_or_else(err)?);
+ curr_list.set_index(index, &ui_context, &display_options);
+ }
+ }
+
+ Ok(())
+}
+
pub fn up(context: &mut AppContext, u: usize) -> AppResult {
let movement = context
.tab_context_ref()