@@ -1,6 +1,7 @@
1use crate::{
1use crate::{
3− compositor::{Component, Context, EventResult},
3+ compositor::{Component, Compositor, Context, EventResult},
5 keymap::{KeymapResult, Keymaps},
6 keymap::{KeymapResult, Keymaps},
6 ui::{Completion, ProgressSpinners},
7 ui::{Completion, ProgressSpinners},
@@ -709,12 +710,11 @@ impl EditorView {
712− fn request_parameter(
713+ fn debug_parameter_prompt(
713 completions: Vec<String>,
714 completions: Vec<String>,
714 config_name: String,
715 config_name: String,
715− cxt: &mut commands::Context,
716 mut params: Vec<String>,
716 mut params: Vec<String>,
717− ) {
717+ ) -> Prompt {
718 let noop = |_input: &str| Vec::new();
718 let noop = |_input: &str| Vec::new();
719 let completer = match completions.get(0).map(|x| x.as_str()) {
719 let completer = match completions.get(0).map(|x| x.as_str()) {
720 Some("filename") => super::completers::filename,
720 Some("filename") => super::completers::filename,
@@ -725,7 +725,7 @@ impl EditorView {
726 None => noop,
726 None => noop,
728− let prompt = Prompt::new(
728+ Prompt::new(
729 "arg: ".to_owned(),
729 "arg: ".to_owned(),
731 completer,
731 completer,
@@ -737,13 +737,19 @@ impl EditorView {
737 params.push(input.to_owned());
737 params.push(input.to_owned());
739 if params.len() < completions.len() {
739 if params.len() < completions.len() {
740− todo!();
740+ let completions = completions.clone();
741− // Self::request_parameter(
741+ let config_name = config_name.clone();
742− // completions.clone(),
742+ let params = params.clone();
743− // config_name.clone(),
743+ let callback = Box::pin(async move {
744− // cxt,
744+ let call: Callback =
745− // params.clone(),
745+ Box::new(move |_editor: &mut Editor, compositor: &mut Compositor| {
746− // );
746+ let prompt =
747+ Self::debug_parameter_prompt(completions, config_name, params);
748+ compositor.push(Box::new(prompt));
752+ cx.jobs.callback(callback);
748 commands::dap_start_impl(
754 commands::dap_start_impl(
749 cx.editor,
755 cx.editor,
@@ -753,8 +759,7 @@ impl EditorView {
757− cxt.push_layer(Box::new(prompt));
760 /// Handle events by looking them up in `self.keymaps`. Returns None
765 /// Handle events by looking them up in `self.keymaps`. Returns None
@@ -785,7 +790,8 @@ impl EditorView {
785 let completions = cxt.editor.debug_config_completions.clone().unwrap();
790 let completions = cxt.editor.debug_config_completions.clone().unwrap();
786 let completion = completions.get(i).unwrap().clone();
791 let completion = completions.get(i).unwrap().clone();
787 if !completion.is_empty() {
792 if !completion.is_empty() {
788− Self::request_parameter(completion, name, cxt, Vec::new());
793+ let prompt = Self::debug_parameter_prompt(completion, name, Vec::new());
794+ cxt.push_layer(Box::new(prompt));
791 _ => return None,
797 _ => return None,