aboutsummaryrefslogtreecommitdiff
path: root/helix-dap/examples/dap-basic.rs
diff options
context:
space:
mode:
authorDmitry Sharshakov2021-08-14 10:19:38 +0000
committerBlaž Hrastnik2021-08-20 04:43:54 +0000
commiteb0605c13d65f68078a62105f738915143997d7e (patch)
treed7d76edfd483203eaedd1eaa8318917a047b1a90 /helix-dap/examples/dap-basic.rs
parent809990a3a4a7a9ccfd169a765c7f0e8e1f2ccf1b (diff)
dap: create C example
Diffstat (limited to 'helix-dap/examples/dap-basic.rs')
-rw-r--r--helix-dap/examples/dap-basic.rs110
1 files changed, 0 insertions, 110 deletions
diff --git a/helix-dap/examples/dap-basic.rs b/helix-dap/examples/dap-basic.rs
deleted file mode 100644
index de8c2e02..00000000
--- a/helix-dap/examples/dap-basic.rs
+++ /dev/null
@@ -1,110 +0,0 @@
-use helix_dap::{Client, Event, OutputEventBody, Result, SourceBreakpoint, StoppedEventBody};
-use serde::{Deserialize, Serialize};
-use serde_json::from_value;
-use tokio::sync::mpsc::Receiver;
-
-#[derive(Debug, PartialEq, Clone, Deserialize, Serialize)]
-#[serde(rename_all = "camelCase")]
-struct LaunchArguments {
- mode: 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.category.unwrap_or("unknown".to_owned()),
- body.output
- );
-}
-
-#[tokio::main]
-pub async fn main() -> Result<()> {
- let base_config = fern::Dispatch::new().level(log::LevelFilter::Info);
-
- let stderr_config = fern::Dispatch::new()
- .format(|out, message, record| out.finish(format_args!("[{}] {}", record.level(), message)))
- .chain(std::io::stderr());
-
- base_config
- .chain(stderr_config)
- .apply()
- .expect("Failed to set up logging");
-
- let client = Client::tcp("127.0.0.1:7777".parse::<std::net::SocketAddr>().unwrap(), 0).await;
- println!("create: {:?}", 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!("caps: {:?}", client.capabilities());
-
- let args = LaunchArguments {
- mode: "exec".to_owned(),
- program: "/tmp/godebug/main".to_owned(),
- };
-
- println!("launch: {:?}", client.launch(args).await);
-
- println!(
- "breakpoints: {:#?}",
- client
- .set_breakpoints(
- "/tmp/godebug/main.go".to_owned(),
- vec![SourceBreakpoint {
- line: 8,
- column: Some(2),
- condition: None,
- hit_condition: None,
- log_message: None,
- }]
- )
- .await
- );
-
- let mut _in = String::new();
- std::io::stdin()
- .read_line(&mut _in)
- .expect("Failed to read line");
-
- let mut stopped_event = client.listen_for_event("stopped".to_owned()).await;
-
- println!("configurationDone: {:?}", client.configuration_done().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");
- println!("stack trace: {:#?}", bt);
- let scopes = client
- .scopes(bt.0[0].id)
- .await
- .expect("expected scopes for thread");
- println!("scopes: {:#?}", scopes);
- println!(
- "vars: {:#?}",
- client.variables(scopes[1].variables_reference).await
- );
-
- let mut _in = String::new();
- std::io::stdin()
- .read_line(&mut _in)
- .expect("Failed to read line");
-
- println!("continued: {:?}", client.continue_thread(0).await);
-
- let mut _in = String::new();
- std::io::stdin()
- .read_line(&mut _in)
- .expect("Failed to read line");
-
- println!("disconnect: {:?}", client.disconnect().await);
-
- Ok(())
-}