From 5626422ba406e8c6ce1c1e1c4d38d54992251377 Mon Sep 17 00:00:00 2001 From: Dugan Chen Date: Sun, 16 Jul 2023 19:08:19 -0700 Subject: [PATCH 1/3] Silently fail to 'enter' regular files --- src/app.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/app.rs b/src/app.rs index 15ac6af..d6268da 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1035,7 +1035,11 @@ impl App { fn enter(self) -> Result { if let Some(path) = self.focused_node().map(|n| n.absolute_path.clone()) { - self.change_directory(&path, true) + if PathBuf::from(&path).absolutize()?.to_path_buf().is_dir() { + self.change_directory(&path, true) + } else { + Ok(self) + } } else { Ok(self) } From 4aeb3dd7c8d8d4df70249854d34ff690411329b5 Mon Sep 17 00:00:00 2001 From: Dugan Chen Date: Sun, 16 Jul 2023 23:28:24 -0700 Subject: [PATCH 2/3] Use built-in node method --- src/app.rs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/app.rs b/src/app.rs index d6268da..f9e6c4f 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1034,8 +1034,9 @@ impl App { } fn enter(self) -> Result { - if let Some(path) = self.focused_node().map(|n| n.absolute_path.clone()) { - if PathBuf::from(&path).absolutize()?.to_path_buf().is_dir() { + if let Some(node) = self.focused_node() { + if node.is_dir { + let path = node.absolute_path.clone(); self.change_directory(&path, true) } else { Ok(self) From 54d6d1900310f9c9302360eab50a8a52ad53456a Mon Sep 17 00:00:00 2001 From: Arijit Basu Date: Mon, 17 Jul 2023 22:06:54 +0530 Subject: [PATCH 3/3] Also enter symlink dir --- src/app.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app.rs b/src/app.rs index f9e6c4f..898c7d2 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1035,7 +1035,7 @@ impl App { fn enter(self) -> Result { if let Some(node) = self.focused_node() { - if node.is_dir { + if node.is_dir || node.symlink.as_ref().map(|s| s.is_dir).unwrap_or(false) { let path = node.absolute_path.clone(); self.change_directory(&path, true) } else {