@@ -276,6 +276,7 @@ impl MappableCommand {
276 append_mode, "Append after selection",
276 append_mode, "Append after selection",
277 command_mode, "Enter command mode",
277 command_mode, "Enter command mode",
278 file_picker, "Open file picker",
278 file_picker, "Open file picker",
279+ file_picker_in_current_buffer_directory, "Open file picker at current buffers's directory",
279 file_picker_in_current_directory, "Open file picker at current working directory",
280 file_picker_in_current_directory, "Open file picker at current working directory",
280 code_action, "Perform code action",
281 code_action, "Perform code action",
281 buffer_picker, "Open buffer picker",
282 buffer_picker, "Open buffer picker",
@@ -2401,6 +2402,22 @@ fn file_picker(cx: &mut Context) {
2401 cx.push_layer(Box::new(overlayed(picker)));
2402 cx.push_layer(Box::new(overlayed(picker)));
2405+fn file_picker_in_current_buffer_directory(cx: &mut Context) {
2406+ let doc_dir = doc!(cx.editor)
2408+ .and_then(|path| path.parent().map(|path| path.to_path_buf()));
2410+ let path = match doc_dir {
2411+ Some(path) => path,
2413+ cx.editor.set_error("current buffer has no path or parent");
2418+ let picker = ui::file_picker(path, &cx.editor.config());
2419+ cx.push_layer(Box::new(overlayed(picker)));
2404fn file_picker_in_current_directory(cx: &mut Context) {
2421fn file_picker_in_current_directory(cx: &mut Context) {
2405 let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from("./"));
2422 let cwd = std::env::current_dir().unwrap_or_else(|_| PathBuf::from("./"));
2406 let picker = ui::file_picker(cwd, &cx.editor.config());
2423 let picker = ui::file_picker(cwd, &cx.editor.config());