diff --git a/helix-dap/src/client.rs b/helix-dap/src/client.rs index 8cdbdcb4fae71..ebbf6b12681ea 100644 --- a/helix-dap/src/client.rs +++ b/helix-dap/src/client.rs @@ -32,7 +32,7 @@ pub struct Client { _process: Option, server_tx: UnboundedSender, request_counter: AtomicU64, - starting_request: StartingRequest, + starting_request: Option, pub caps: Option, // thread_id -> frames pub stack_frames: HashMap>, @@ -44,10 +44,9 @@ pub struct Client { } #[derive(Clone, Copy, Debug)] -pub enum StartingRequest { +pub enum ConnectionType { Launch, Attach, - None, } impl Client { @@ -87,8 +86,7 @@ impl Client { server_tx, request_counter: AtomicU64::new(0), caps: None, - starting_request: StartingRequest::None, - // + starting_request: None, stack_frames: HashMap::new(), thread_states: HashMap::new(), thread_id: None, @@ -217,7 +215,7 @@ impl Client { self.id } - pub fn starting_request(&self) -> StartingRequest { + pub fn starting_request(&self) -> Option { self.starting_request } @@ -352,17 +350,17 @@ impl Client { &mut self, args: Option, ) -> impl Future> { - self.starting_request = StartingRequest::None; + self.starting_request = None; self.call::(args) } pub fn launch(&mut self, args: serde_json::Value) -> impl Future> { - self.starting_request = StartingRequest::Launch; + self.starting_request = Some(ConnectionType::Launch); self.call::(args) } pub fn attach(&mut self, args: serde_json::Value) -> impl Future> { - self.starting_request = StartingRequest::Attach; + self.starting_request = Some(ConnectionType::Attach); self.call::(args) } diff --git a/helix-dap/src/lib.rs b/helix-dap/src/lib.rs index 9ac3ba54f537b..0e1841a2bcb4a 100644 --- a/helix-dap/src/lib.rs +++ b/helix-dap/src/lib.rs @@ -2,7 +2,7 @@ mod client; mod transport; mod types; -pub use client::{Client, StartingRequest}; +pub use client::{Client, ConnectionType}; pub use events::Event; pub use transport::{Payload, Response, Transport}; pub use types::*; diff --git a/helix-view/src/handlers/dap.rs b/helix-view/src/handlers/dap.rs index 9053c6f3906f1..d3af269b61d64 100644 --- a/helix-view/src/handlers/dap.rs +++ b/helix-view/src/handlers/dap.rs @@ -2,7 +2,7 @@ use crate::editor::{Action, Breakpoint}; use crate::{align_view, Align, Editor}; use dap::requests::DisconnectArguments; use helix_core::Selection; -use helix_dap::{self as dap, Client, Payload, Request, StartingRequest, ThreadId}; +use helix_dap::{self as dap, Client, ConnectionType, Payload, Request, ThreadId}; use helix_lsp::block_on; use log::warn; use std::fmt::Write; @@ -292,25 +292,28 @@ impl Editor { let result = debugger.disconnect(disconnect_args).await; if result.is_ok() { if restart { - if let StartingRequest::None = starting_request { - self.set_error("No starting request found, to be used in restarting the debugging session."); - } else { - log::info!("Attempting to restart debug session."); - let restart_args = restart_args.unwrap(); - let relaunch_resp = - if let StartingRequest::Launch = starting_request { - debugger.launch(restart_args).await - } else { - debugger.attach(restart_args).await - }; + match starting_request { + None => { + self.set_error("No starting request found, to be used in restarting the debugging session."); + } + Some(starting_request) => { + log::info!("Attempting to restart debug session."); + let restart_args = restart_args.unwrap(); + let relaunch_resp = + if let ConnectionType::Launch = starting_request { + debugger.launch(restart_args).await + } else { + debugger.attach(restart_args).await + }; - if let Err(err) = relaunch_resp { - self.set_error(format!( - "Failed to restart debugging session: {:?}", - err - )); + if let Err(err) = relaunch_resp { + self.set_error(format!( + "Failed to restart debugging session: {:?}", + err + )); + } } - } + }; } else { self.set_status( "Terminated debugging session and disconnected debugger.",