Unnamed repository; edit this file 'description' to name the repository.
Diffstat (limited to 'helix-term/src/commands/dap.rs')
-rw-r--r--helix-term/src/commands/dap.rs60
1 files changed, 33 insertions, 27 deletions
diff --git a/helix-term/src/commands/dap.rs b/helix-term/src/commands/dap.rs
index eda94c44..0e50377a 100644
--- a/helix-term/src/commands/dap.rs
+++ b/helix-term/src/commands/dap.rs
@@ -172,9 +172,9 @@ pub fn dap_start_impl(
let mut args: HashMap<&str, Value> = HashMap::new();
- if let Some(params) = params {
- for (k, t) in &template.args {
- let mut value = t.clone();
+ for (k, t) in &template.args {
+ let mut value = t.clone();
+ if let Some(ref params) = params {
for (i, x) in params.iter().enumerate() {
let mut param = x.to_string();
if let Some(DebugConfigCompletion::Advanced(cfg)) = template.completion.get(i) {
@@ -198,22 +198,22 @@ pub fn dap_start_impl(
DebugArgumentValue::Boolean(_) => value,
};
}
+ }
- match value {
- DebugArgumentValue::String(string) => {
- if let Ok(integer) = string.parse::<usize>() {
- args.insert(k, to_value(integer).unwrap());
- } else {
- args.insert(k, to_value(string).unwrap());
- }
- }
- DebugArgumentValue::Array(arr) => {
- args.insert(k, to_value(arr).unwrap());
- }
- DebugArgumentValue::Boolean(bool) => {
- args.insert(k, to_value(bool).unwrap());
+ match value {
+ DebugArgumentValue::String(string) => {
+ if let Ok(integer) = string.parse::<usize>() {
+ args.insert(k, to_value(integer).unwrap());
+ } else {
+ args.insert(k, to_value(string).unwrap());
}
}
+ DebugArgumentValue::Array(arr) => {
+ args.insert(k, to_value(arr).unwrap());
+ }
+ DebugArgumentValue::Boolean(bool) => {
+ args.insert(k, to_value(bool).unwrap());
+ }
}
}
@@ -272,17 +272,23 @@ pub fn dap_launch(cx: &mut Context) {
templates,
(),
|cx, template, _action| {
- let completions = template.completion.clone();
- let name = template.name.clone();
- let callback = Box::pin(async move {
- let call: Callback =
- Callback::EditorCompositor(Box::new(move |_editor, compositor| {
- let prompt = debug_parameter_prompt(completions, name, Vec::new());
- compositor.push(Box::new(prompt));
- }));
- Ok(call)
- });
- cx.jobs.callback(callback);
+ if template.completion.is_empty() {
+ if let Err(err) = dap_start_impl(cx, Some(&template.name), None, None) {
+ cx.editor.set_error(err.to_string());
+ }
+ } else {
+ let completions = template.completion.clone();
+ let name = template.name.clone();
+ let callback = Box::pin(async move {
+ let call: Callback =
+ Callback::EditorCompositor(Box::new(move |_editor, compositor| {
+ let prompt = debug_parameter_prompt(completions, name, Vec::new());
+ compositor.push(Box::new(prompt));
+ }));
+ Ok(call)
+ });
+ cx.jobs.callback(callback);
+ }
},
))));
}