From f3e47bfee4d70cfc350035f29cc7e20b6ce725e8 Mon Sep 17 00:00:00 2001 From: Dmitry Sharshakov Date: Sat, 21 Aug 2021 20:55:45 +0300 Subject: [PATCH] Disable continuing when running --- helix-dap/src/client.rs | 2 ++ helix-term/src/application.rs | 1 + helix-term/src/commands.rs | 12 ++++++++++++ 3 files changed, 15 insertions(+) diff --git a/helix-dap/src/client.rs b/helix-dap/src/client.rs index bc7a93d8f..cfb278a9b 100644 --- a/helix-dap/src/client.rs +++ b/helix-dap/src/client.rs @@ -30,6 +30,7 @@ pub struct Client { pub breakpoints: HashMap>, // TODO: multiple threads support pub stack_pointer: Option, + pub is_running: bool, } impl Client { @@ -51,6 +52,7 @@ impl Client { // breakpoints: HashMap::new(), stack_pointer: None, + is_running: false, }; tokio::spawn(Self::recv(server_rx, client_rx)); diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index d65610ef9..a9aafad21 100644 --- a/helix-term/src/application.rs +++ b/helix-term/src/application.rs @@ -195,6 +195,7 @@ impl Application { Payload::Event(ev) => { match &ev.event[..] { "stopped" => { + debugger.is_running = false; let main = debugger .threads() .await diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs index dc8d02ace..9e34df541 100644 --- a/helix-term/src/commands.rs +++ b/helix-term/src/commands.rs @@ -4319,8 +4319,14 @@ fn dap_run(cx: &mut Context) { use helix_lsp::block_on; if let Some(debugger) = &mut cx.editor.debugger { + if debugger.is_running { + cx.editor + .set_status("Debuggee is already running".to_owned()); + return; + } let request = debugger.configuration_done(); let _ = block_on(request).unwrap(); + debugger.is_running = true; } } @@ -4328,10 +4334,16 @@ fn dap_continue(cx: &mut Context) { use helix_lsp::block_on; if let Some(debugger) = &mut cx.editor.debugger { + if debugger.is_running { + cx.editor + .set_status("Debuggee is already running".to_owned()); + return; + } // assume 0 to continue all threads for now // FIXME: spec conformant behavior here let request = debugger.continue_thread(0); let _ = block_on(request).unwrap(); + debugger.is_running = true; } }