diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2019-03-30 13:12:24 -0400 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2019-03-30 13:12:24 -0400 |
commit | 58aa62fdc53362e44b59b33ffaaff71ed993c4f1 (patch) | |
tree | ac691e713cc73312258406bc56af302c52a9d417 /src/commands/tab_switch.rs | |
parent | c33800f1e565c242307e0e5f7afaf13e5b75a781 (diff) |
fix tab switching not changing cwd
Diffstat (limited to 'src/commands/tab_switch.rs')
-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); } } |