summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--helix-term/src/commands.rs17
1 files changed, 17 insertions, 0 deletions
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());