@@ -276,6 +276,7 @@ impl MappableCommand {
276276 append_mode, "Append after selection",
277277 command_mode, "Enter command mode",
278278 file_picker, "Open file picker",
279+ file_picker_in_current_buffer_directory, "Open file picker at current buffers's directory",
279280 file_picker_in_current_directory, "Open file picker at current working directory",
280281 code_action, "Perform code action",
281282 buffer_picker, "Open buffer picker",
@@ -2401,6 +2402,22 @@ fn file_picker(cx: &mut Context) {
24012402 cx.push_layer(Box::new(overlayed(picker)));
24022403}
24032404
2405+fn file_picker_in_current_buffer_directory(cx: &mut Context) {
2406+ let doc_dir = doc!(cx.editor)
2407+ .path()
2408+ .and_then(|path| path.parent().map(|path| path.to_path_buf()));
2409+
2410+ let path = match doc_dir {
2411+ Some(path) => path,
2412+ None => {
2413+ cx.editor.set_error("current buffer has no path or parent");
2414+ return;
2415+ }
2416+ };
2417+
2418+ let picker = ui::file_picker(path, &cx.editor.config());
2419+ cx.push_layer(Box::new(overlayed(picker)));
2420+}
24042421fn file_picker_in_current_directory(cx: &mut Context) {
24052422 let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from("./"));
24062423 let picker = ui::file_picker(cwd, &cx.editor.config());