diff options
-rw-r--r-- | src/commands/tab_switch.rs | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/commands/tab_switch.rs b/src/commands/tab_switch.rs index 2929bd2..7e782be 100644 --- a/src/commands/tab_switch.rs +++ b/src/commands/tab_switch.rs @@ -1,3 +1,5 @@ +use std::env; + use crate::commands::{JoshutoCommand, JoshutoRunnable}; use crate::context::JoshutoContext; use crate::preview; @@ -18,19 +20,25 @@ impl TabSwitch { pub fn tab_switch(new_index: i32, context: &mut JoshutoContext) { context.curr_tab_index = new_index as usize; - { - let curr_tab = &mut context.tabs[context.curr_tab_index]; - curr_tab.reload_contents(&context.config_t.sort_type); - curr_tab.refresh( - &context.views, - &context.config_t, - &context.username, - &context.hostname, - ); + let path = &context.curr_tab_ref().curr_path; + match env::set_current_dir(path) { + Ok(_) => { + { + let curr_tab = &mut context.tabs[context.curr_tab_index]; + curr_tab.reload_contents(&context.config_t.sort_type); + curr_tab.refresh( + &context.views, + &context.config_t, + &context.username, + &context.hostname, + ); + } + ui::redraw_tab_view(&context.views.tab_win, &context); + let curr_tab = &mut context.tabs[context.curr_tab_index]; + preview::preview_file(curr_tab, &context.views, &context.config_t); + } + Err(e) => ui::wprint_err(&context.views.left_win, e.to_string().as_str()), } - ui::redraw_tab_view(&context.views.tab_win, &context); - let curr_tab = &mut context.tabs[context.curr_tab_index]; - preview::preview_file(curr_tab, &context.views, &context.config_t); } } |