aboutsummaryrefslogtreecommitdiff
path: root/helix-dap/src
diff options
context:
space:
mode:
authorDmitry Sharshakov2021-08-22 08:02:54 +0000
committerDmitry Sharshakov2021-08-22 08:02:54 +0000
commitdfc70a12f337df57e69e3613896663c2f446df8e (patch)
tree140cda5b36ef852b9f7f2d2a45aebde4036fe015 /helix-dap/src
parent28658836eee9860666a114756e13e1fdf7fd4637 (diff)
dap: support stepIn, stepOut, next and pause commands
Diffstat (limited to 'helix-dap/src')
-rw-r--r--helix-dap/src/client.rs36
-rw-r--r--helix-dap/src/types.rs64
2 files changed, 100 insertions, 0 deletions
diff --git a/helix-dap/src/client.rs b/helix-dap/src/client.rs
index cfb278a9..e2531e11 100644
--- a/helix-dap/src/client.rs
+++ b/helix-dap/src/client.rs
@@ -316,4 +316,40 @@ impl Client {
let response = self.request::<requests::Variables>(args).await?;
Ok(response.variables)
}
+
+ pub async fn step_in(&mut self, thread_id: usize) -> Result<()> {
+ let args = requests::StepInArguments {
+ thread_id,
+ target_id: None,
+ granularity: None,
+ };
+
+ self.request::<requests::StepIn>(args).await
+ }
+
+ pub async fn step_out(&mut self, thread_id: usize) -> Result<()> {
+ let args = requests::StepOutArguments {
+ thread_id,
+ granularity: None,
+ };
+
+ self.request::<requests::StepOut>(args).await
+ }
+
+ pub async fn next(&mut self, thread_id: usize) -> Result<()> {
+ let args = requests::NextArguments {
+ thread_id,
+ granularity: None,
+ };
+
+ self.request::<requests::Next>(args).await
+ }
+
+ pub async fn pause(&mut self, thread_id: usize) -> Result<()> {
+ let args = requests::PauseArguments {
+ thread_id,
+ };
+
+ self.request::<requests::Pause>(args).await
+ }
}
diff --git a/helix-dap/src/types.rs b/helix-dap/src/types.rs
index fcbbf184..4ee796b3 100644
--- a/helix-dap/src/types.rs
+++ b/helix-dap/src/types.rs
@@ -420,6 +420,70 @@ pub mod requests {
type Result = VariablesResponse;
const COMMAND: &'static str = "variables";
}
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct StepInArguments {
+ pub thread_id: usize,
+ pub target_id: Option<usize>,
+ pub granularity: Option<String>,
+ }
+
+ #[derive(Debug)]
+ pub enum StepIn {}
+
+ impl Request for StepIn {
+ type Arguments = StepInArguments;
+ type Result = ();
+ const COMMAND: &'static str = "stepIn";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct StepOutArguments {
+ pub thread_id: usize,
+ pub granularity: Option<String>,
+ }
+
+ #[derive(Debug)]
+ pub enum StepOut {}
+
+ impl Request for StepOut {
+ type Arguments = StepOutArguments;
+ type Result = ();
+ const COMMAND: &'static str = "stepOut";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct NextArguments {
+ pub thread_id: usize,
+ pub granularity: Option<String>,
+ }
+
+ #[derive(Debug)]
+ pub enum Next {}
+
+ impl Request for Next {
+ type Arguments = NextArguments;
+ type Result = ();
+ const COMMAND: &'static str = "next";
+ }
+
+ #[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+ #[serde(rename_all = "camelCase")]
+ pub struct PauseArguments {
+ pub thread_id: usize,
+ }
+
+ #[derive(Debug)]
+ pub enum Pause {}
+
+ impl Request for Pause {
+ type Arguments = PauseArguments;
+ type Result = ();
+ const COMMAND: &'static str = "pause";
+ }
}
// Events