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