diff options
author | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2019-07-19 21:31:57 -0400 |
---|---|---|
committer | Jiayi Zhao <jeff.no.zhao@gmail.com> | 2019-07-19 21:31:57 -0400 |
commit | 98e9665e59d7af0b2c002f0e6007578b3e90aa69 (patch) | |
tree | 7b8adea60790aba5842b9ceb7ba51d834aec72bf /src | |
parent | 91bcec9872b3c5efc93405d83149d43bfb985f4a (diff) |
fix not remembering cursor position when switching directories via cd
Diffstat (limited to 'src')
-rw-r--r-- | src/commands/change_directory.rs | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/commands/change_directory.rs b/src/commands/change_directory.rs index b727055..c062c8f 100644 --- a/src/commands/change_directory.rs +++ b/src/commands/change_directory.rs @@ -24,23 +24,21 @@ impl ChangeDirectory { context: &mut JoshutoContext, view: &JoshutoView, ) -> std::io::Result<()> { - let curr_tab = &mut context.tabs[context.curr_tab_index]; - std::env::set_current_dir(path.as_path())?; - curr_tab.curr_path = path.clone(); - curr_tab + let curr_tab = &mut context.tabs[context.curr_tab_index]; + let mut curr_list = curr_tab .history - .populate_to_root(&curr_tab.curr_path, &context.config_t.sort_option)?; + .pop_or_create(&path, &context.config_t.sort_option)?; - let mut new_curr_list = curr_tab - .history - .pop_or_create(&curr_tab.curr_path, &context.config_t.sort_option)?; + std::mem::swap(&mut curr_tab.curr_list, &mut curr_list); + curr_tab.curr_path = path.clone(); - std::mem::swap(&mut curr_tab.curr_list, &mut new_curr_list); - curr_tab - .history - .insert(new_curr_list.file_path().clone(), new_curr_list); + if let Some(s) = path.parent() { + curr_tab + .history + .populate_to_root(s, &context.config_t.sort_option)?; + } curr_tab.refresh(view, &context.config_t); Ok(()) |