summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrabite <rabite@posteo.de>2019-04-02 22:56:22 +0200
committerrabite <rabite@posteo.de>2019-04-02 22:56:22 +0200
commit04285257caa823ac83413a7f38534108f6492c4e (patch)
tree6e60464071f7fd6e1417d3ebd354125a4c72cf91
parente99a3d993cc401720dc5f1c649cd3436fb47d3b3 (diff)
turbo cd repaired
-rw-r--r--src/file_browser.rs34
1 files changed, 5 insertions, 29 deletions
diff --git a/src/file_browser.rs b/src/file_browser.rs
index 2c94219..19c230f 100644
--- a/src/file_browser.rs
+++ b/src/file_browser.rs
@@ -795,36 +795,12 @@ impl FileBrowser {
}
pub fn turbo_cd(&mut self) -> HResult<()> {
- let dir = self.minibuffer("cd");
-
- match dir {
- Ok(dir) => {
- self.columns.widgets.clear();
- let cwd = File::new_from_path(&std::path::PathBuf::from(&dir), None)?;
- self.cwd = cwd;
- let dir = std::path::PathBuf::from(&dir);
- let left_dir = std::path::PathBuf::from(&dir);
- let mcore = self.main_widget()?.get_core()?.clone();
- let lcore = self.left_widget()?.get_core()?.clone();;
-
- let middle = AsyncWidget::new(&self.core, Box::new(move |_| {
- let files = Files::new_from_path(&dir.clone())?;
- let listview = ListView::new(&mcore, files);
- Ok(listview)
- }));
- let middle = FileBrowserWidgets::FileList(middle);
+ let dir = self.minibuffer("cd")?;
+
+ let path = std::path::PathBuf::from(&dir);
+ let dir = File::new_from_path(&path.canonicalize()?, None)?;
+ self.main_widget_goto(&dir)?;
- let left = AsyncWidget::new(&self.core, Box::new(move |_| {
- let files = Files::new_from_path(&left_dir.parent()?)?;
- let listview = ListView::new(&lcore, files);
- Ok(listview)
- }));
- let left = FileBrowserWidgets::FileList(left);
- self.columns.push_widget(left);
- self.columns.push_widget(middle);
- },
- Err(_) => {}
- }
Ok(())
}