@@ -11,7 +11,7 @@ use helix_core::{
1111 coords_at_pos,
1212 graphemes::{ensure_grapheme_boundary_next, next_grapheme_boundary, prev_grapheme_boundary},
1313 movement::Direction,
14− syntax::{self, HighlightEvent},
14+ syntax::{self, DebugConfigCompletion, HighlightEvent},
1515 unicode::segmentation::UnicodeSegmentation,
1616 unicode::width::UnicodeWidthStr,
1717 LineEnding, Position, Range, Selection,
@@ -710,28 +710,38 @@ impl EditorView {
710710 }
711711
712712 fn debug_parameter_prompt(
713− completions: Vec<String>,
713+ completions: Vec<DebugConfigCompletion>,
714714 config_name: String,
715715 mut params: Vec<String>,
716716 ) -> Prompt {
717717 let i = params.len();
718− let field_type = completions.get(i).map(|x| x.as_str());
718+ let completion = completions.get(i).unwrap();
719+ let field_type = if let DebugConfigCompletion::Advanced(cfg) = completion {
720+ cfg.completion.clone().unwrap_or_else(|| "".to_owned())
721+ } else {
722+ "".to_owned()
723+ };
724+ let name = match completion {
725+ DebugConfigCompletion::Advanced(cfg) => {
726+ cfg.name.clone().unwrap_or_else(|| field_type.to_owned())
727+ }
728+ DebugConfigCompletion::Named(name) => name.clone(),
729+ };
730+ let default_val = match completion {
731+ DebugConfigCompletion::Advanced(cfg) => {
732+ cfg.default.clone().unwrap_or_else(|| "".to_owned())
733+ }
734+ _ => "".to_owned(),
735+ };
719736
720737 let noop = |_input: &str| Vec::new();
721− let completer = match field_type {
722− Some(field_type) => {
723− if field_type.starts_with("filename") {
724− super::completers::filename
725− } else if field_type.starts_with("directory") {
726− super::completers::directory
727− } else {
728− noop
729− }
730− }
731− None => noop,
738+ let completer = match &field_type[..] {
739+ "filename" => super::completers::filename,
740+ "directory" => super::completers::directory,
741+ _ => noop,
732742 };
733743 Prompt::new(
734− format!("{}: ", field_type.unwrap_or("arg")),
744+ format!("{}: ", name),
735745 None,
736746 completer,
737747 move |cx: &mut crate::compositor::Context, input: &str, event: PromptEvent| {
@@ -739,7 +749,11 @@ impl EditorView {
739749 return;
740750 }
741751
742− params.push(input.to_owned());
752+ let mut value = input.to_owned();
753+ if value.is_empty() {
754+ value = default_val.clone();
755+ }
756+ params.push(value);
743757
744758 if params.len() < completions.len() {
745759 let completions = completions.clone();