summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJiayi Zhao <jeff.no.zhao@gmail.com>2019-03-30 13:12:24 -0400
committerJiayi Zhao <jeff.no.zhao@gmail.com>2019-03-30 13:12:24 -0400
commit58aa62fdc53362e44b59b33ffaaff71ed993c4f1 (patch)
treeac691e713cc73312258406bc56af302c52a9d417
parentc33800f1e565c242307e0e5f7afaf13e5b75a781 (diff)
fix tab switching not changing cwd
-rw-r--r--src/commands/tab_switch.rs32
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);
}
}