@@ -1,5 +1,7 @@
1−use helix_dap::{Client, Result, SourceBreakpoint};
1+use helix_dap::{Client, Event, OutputEventBody, Result, SourceBreakpoint};
2use serde::{Deserialize, Serialize};
2use serde::{Deserialize, Serialize};
3+use serde_json::from_value;
4+use tokio::sync::mpsc::Receiver;
4#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
6#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
5#[serde(rename_all = "camelCase")]
7#[serde(rename_all = "camelCase")]
@@ -8,6 +10,12 @@ struct LaunchArguments {
8 program: String,
10 program: String,
13+async fn output(mut output_event: Receiver<Event>) {
14+ let body: OutputEventBody =
15+ from_value(output_event.recv().await.unwrap().body.unwrap()).unwrap();
16+ println!("{:?}", body);
11#[tokio::main]
19#[tokio::main]
12pub async fn main() -> Result<()> {
20pub async fn main() -> Result<()> {
13 let base_config = fern::Dispatch::new().level(log::LevelFilter::Info);
21 let base_config = fern::Dispatch::new().level(log::LevelFilter::Info);
@@ -25,6 +33,9 @@ pub async fn main() -> Result<()> {
25 println!("create: {:?}", client);
33 println!("create: {:?}", client);
26 let mut client = client?;
34 let mut client = client?;
36+ let output_event = client.listen_for_event("output".to_owned()).await;
37+ tokio::spawn(output(output_event));
28 println!("init: {:?}", client.initialize("go".to_owned()).await);
39 println!("init: {:?}", client.initialize("go".to_owned()).await);
29 println!("caps: {:#?}", client.capabilities());
40 println!("caps: {:#?}", client.capabilities());