From 8ba0a4627439b944157c288f909517289d5aeb20 Mon Sep 17 00:00:00 2001 From: Filipe Azevedo Date: Thu, 2 Feb 2023 19:51:11 +0000 Subject: add picker: current view dir (#4666) --- helix-term/src/commands.rs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'helix-term') diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index d1e28bbe..7d5f2241 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -276,6 +276,7 @@ impl MappableCommand { append_mode, "Append after selection", command_mode, "Enter command mode", file_picker, "Open file picker", + file_picker_in_current_buffer_directory, "Open file picker at current buffers's directory", file_picker_in_current_directory, "Open file picker at current working directory", code_action, "Perform code action", buffer_picker, "Open buffer picker", @@ -2401,6 +2402,22 @@ fn file_picker(cx: &mut Context) { cx.push_layer(Box::new(overlayed(picker))); } +fn file_picker_in_current_buffer_directory(cx: &mut Context) { + let doc_dir = doc!(cx.editor) + .path() + .and_then(|path| path.parent().map(|path| path.to_path_buf())); + + let path = match doc_dir { + Some(path) => path, + None => { + cx.editor.set_error("current buffer has no path or parent"); + return; + } + }; + + let picker = ui::file_picker(path, &cx.editor.config()); + cx.push_layer(Box::new(overlayed(picker))); +} fn file_picker_in_current_directory(cx: &mut Context) { let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from("./")); let picker = ui::file_picker(cwd, &cx.editor.config()); -- cgit v1.2.3-70-g09d2