aboutsummaryrefslogtreecommitdiff
path: root/helix-term
diff options
context:
space:
mode:
authorAndrés Cabero2023-08-15 07:37:44 +0000
committerGitHub2023-08-15 07:37:44 +0000
commit090a225f28fb0547e572d1d99153cf84c48e855a (patch)
tree100581618f665371e680f94a72369393593f76e3 /helix-term
parent7b2f3f533c50b647bfd0b1019e9cef421c5124f9 (diff)
goto_file: open picker if a directory is selected (#7909)
* feat: open file picker on directories using goto_file (gf) * remove helper and call to canonicalize
Diffstat (limited to 'helix-term')
-rw-r--r--helix-term/src/commands.rs7
1 files changed, 6 insertions, 1 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index b8324b65..07aef95d 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -1190,7 +1190,11 @@ fn goto_file_impl(cx: &mut Context, action: Action) {
for sel in paths {
let p = sel.trim();
if !p.is_empty() {
- if let Err(e) = cx.editor.open(&PathBuf::from(p), action) {
+ let path = Path::new(p);
+ if path.is_dir() {
+ let picker = ui::file_picker(path.into(), &cx.editor.config());
+ cx.push_layer(Box::new(overlaid(picker)));
+ } else if let Err(e) = cx.editor.open(path, action) {
cx.editor.set_error(format!("Open file failed: {:?}", e));
}
}
@@ -2603,6 +2607,7 @@ fn file_picker_in_current_buffer_directory(cx: &mut Context) {
let picker = ui::file_picker(path, &cx.editor.config());
cx.push_layer(Box::new(overlaid(picker)));
}
+
fn file_picker_in_current_directory(cx: &mut Context) {
let cwd = helix_loader::current_working_dir();
if !cwd.exists() {