summaryrefslogtreecommitdiff
path: root/helix-term/src
diff options
context:
space:
mode:
authorDmitry Sharshakov2021-10-24 14:24:18 +0000
committerDmitry Sharshakov2021-10-24 14:24:18 +0000
commit6aa9838ea6c4c4a355796ef6dcc4dd28f2035c38 (patch)
tree8e701200b8e54aa6dae7ccf67b76beabd4991f23 /helix-term/src
parentd6e8a44d8510b2ae75d660a5f260d97e6dc7e797 (diff)
dap: support arrays as arguments
Diffstat (limited to 'helix-term/src')
-rw-r--r--helix-term/src/commands/dap.rs28
1 files changed, 22 insertions, 6 deletions
diff --git a/helix-term/src/commands/dap.rs b/helix-term/src/commands/dap.rs
index 6df9be22..566730e1 100644
--- a/helix-term/src/commands/dap.rs
+++ b/helix-term/src/commands/dap.rs
@@ -5,7 +5,10 @@ use crate::{
job::Callback,
ui::{FilePicker, Prompt, PromptEvent},
};
-use helix_core::{syntax::DebugConfigCompletion, Selection};
+use helix_core::{
+ syntax::{DebugArgumentValue, DebugConfigCompletion},
+ Selection,
+};
use helix_dap::{self as dap, Client, ThreadId};
use helix_lsp::block_on;
@@ -239,13 +242,26 @@ pub fn dap_start_impl(
}
}
// For param #0 replace {0} in args
- value = value.replace(format!("{{{}}}", i).as_str(), &param);
+ value = match value {
+ DebugArgumentValue::String(v) => {
+ DebugArgumentValue::String(v.replace(format!("{{{}}}", i).as_str(), &param))
+ }
+ DebugArgumentValue::Array(arr) => DebugArgumentValue::Array(
+ arr.iter()
+ .map(|v| v.replace(format!("{{{}}}", i).as_str(), &param))
+ .collect(),
+ ),
+ };
}
- if let Ok(integer) = value.parse::<usize>() {
- args.insert(k, Value::Number(serde_json::Number::from(integer)));
- } else {
- args.insert(k, Value::String(value));
+ if let DebugArgumentValue::String(string) = value {
+ if let Ok(integer) = string.parse::<usize>() {
+ args.insert(k, to_value(integer).unwrap());
+ } else {
+ args.insert(k, to_value(string).unwrap());
+ }
+ } else if let DebugArgumentValue::Array(arr) = value {
+ args.insert(k, to_value(arr).unwrap());
}
}
}