diff options
-rw-r--r-- | helix-dap/examples/dap-basic.rs | 6 | ||||
-rw-r--r-- | helix-dap/src/client.rs | 12 | ||||
-rw-r--r-- | helix-dap/src/lib.rs | 2 |
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; |