diff options
author | Dmitry Sharshakov | 2021-08-22 08:02:54 +0000 |
---|---|---|
committer | Dmitry Sharshakov | 2021-08-22 08:02:54 +0000 |
commit | dfc70a12f337df57e69e3613896663c2f446df8e (patch) | |
tree | 140cda5b36ef852b9f7f2d2a45aebde4036fe015 | |
parent | 28658836eee9860666a114756e13e1fdf7fd4637 (diff) |
dap: support stepIn, stepOut, next and pause commands
-rw-r--r-- | helix-dap/src/client.rs | 36 | ||||
-rw-r--r-- | helix-dap/src/types.rs | 64 |
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
|