aboutsummaryrefslogtreecommitdiff
path: root/helix-dap
diff options
context:
space:
mode:
Diffstat (limited to 'helix-dap')
-rw-r--r--helix-dap/examples/dap-basic.rs6
-rw-r--r--helix-dap/src/client.rs12
-rw-r--r--helix-dap/src/lib.rs2
3 files changed, 17 insertions, 3 deletions
diff --git a/helix-dap/examples/dap-basic.rs b/helix-dap/examples/dap-basic.rs
index 3331c6bb..eef64be3 100644
--- a/helix-dap/examples/dap-basic.rs
+++ b/helix-dap/examples/dap-basic.rs
@@ -1,4 +1,4 @@
-use helix_dap::{Client, Event, OutputEventBody, Result, SourceBreakpoint};
+use helix_dap::{Client, Event, OutputEventBody, Result, SourceBreakpoint, StoppedEventBody};
use serde::{Deserialize, Serialize};
use serde_json::from_value;
use tokio::sync::mpsc::Receiver;
@@ -75,7 +75,9 @@ pub async fn main() -> Result<()> {
println!("configurationDone: {:?}", client.configuration_done().await);
- println!("stopped: {:?}", stopped_event.recv().await);
+ let stop: StoppedEventBody =
+ from_value(stopped_event.recv().await.unwrap().body.unwrap()).unwrap();
+ println!("stopped: {:?}", stop);
println!("threads: {:#?}", client.threads().await);
let bt = client.stack_trace(1).await.expect("expected stack trace");
diff --git a/helix-dap/src/client.rs b/helix-dap/src/client.rs
index ef7bb153..a12238ae 100644
--- a/helix-dap/src/client.rs
+++ b/helix-dap/src/client.rs
@@ -267,6 +267,18 @@ pub struct OutputEventBody {
pub data: Option<Value>,
}
+#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
+#[serde(rename_all = "camelCase")]
+pub struct StoppedEventBody {
+ pub reason: String,
+ pub description: Option<String>,
+ pub thread_id: Option<usize>,
+ pub preserve_focus_hint: Option<bool>,
+ pub text: Option<String>,
+ pub all_threads_stopped: Option<bool>,
+ pub hit_breakpoint_ids: Option<Vec<usize>>,
+}
+
#[derive(Debug)]
pub struct Client {
id: usize,
diff --git a/helix-dap/src/lib.rs b/helix-dap/src/lib.rs
index 408f4d3d..87eea8e4 100644
--- a/helix-dap/src/lib.rs
+++ b/helix-dap/src/lib.rs
@@ -1,7 +1,7 @@
mod client;
mod transport;
-pub use client::{Breakpoint, Client, OutputEventBody, SourceBreakpoint};
+pub use client::{Breakpoint, Client, OutputEventBody, SourceBreakpoint, StoppedEventBody};
pub use transport::{Event, Payload, Request, Response, Transport};
use thiserror::Error;