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
This commit is contained in:
Andrés Cabero 2023-08-15 09:37:44 +02:00 committed by GitHub
parent 7b2f3f533c
commit 090a225f28
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -1190,7 +1190,11 @@ fn goto_file_impl(cx: &mut Context, action: Action) {
for sel in paths { for sel in paths {
let p = sel.trim(); let p = sel.trim();
if !p.is_empty() { 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)); 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()); let picker = ui::file_picker(path, &cx.editor.config());
cx.push_layer(Box::new(overlaid(picker))); cx.push_layer(Box::new(overlaid(picker)));
} }
fn file_picker_in_current_directory(cx: &mut Context) { fn file_picker_in_current_directory(cx: &mut Context) {
let cwd = helix_loader::current_working_dir(); let cwd = helix_loader::current_working_dir();
if !cwd.exists() { if !cwd.exists() {