dap: small TODO

This commit is contained in:
Blaž Hrastnik 2021-09-03 11:48:55 +09:00
parent 42f9718f55
commit 289303a30d
5 changed files with 12 additions and 30 deletions

View file

@ -35,7 +35,6 @@ pub struct Client {
pub thread_id: Option<usize>,
/// Currently active frame for the current thread.
pub active_frame: Option<usize>,
pub is_running: bool, // TODO: track is_running per thread
}
impl Client {
@ -83,7 +82,6 @@ pub fn streams(
thread_states: HashMap::new(),
thread_id: None,
active_frame: None,
is_running: false,
};
tokio::spawn(Self::recv(server_rx, client_rx));

View file

@ -323,8 +323,13 @@ pub async fn handle_debugger_message(&mut self, payload: helix_dap::Payload) {
self.editor.set_status(format!("{} {}", prefix, output));
}
Event::Initialized => {
self.editor
.set_status("Debugged application started".to_owned());
// send existing breakpoints
// TODO: fetch breakpoints (in case we're attaching)
if let Ok(_) = debugger.configuration_done().await {
self.editor
.set_status("Debugged application started".to_owned());
}; // TODO: do we need to handle error?
}
ev => {
log::warn!("Unhandled event {:?}", ev);

View file

@ -310,7 +310,6 @@ pub fn doc(&self) -> &'static str {
select_textobject_inner, "Select inside object",
dap_launch, "Launch debug target",
dap_toggle_breakpoint, "Toggle breakpoint",
dap_run, "Begin program execution",
dap_continue, "Continue program execution",
dap_pause, "Pause program execution",
dap_step_in, "Step in",

View file

@ -100,7 +100,7 @@ fn thread_picker(cx: &mut Context, callback_fn: impl Fn(&mut Editor, &dap::Threa
let picker = Picker::new(
true,
threads,
|thread| thread.name.clone().into(),
|thread| thread.name.clone().into(), // TODO: include thread_states in the label
move |editor, thread, _action| callback_fn(editor, thread),
);
cx.push_layer(Box::new(picker))
@ -300,25 +300,6 @@ pub fn dap_toggle_breakpoint(cx: &mut Context) {
}
}
pub fn dap_run(cx: &mut Context) {
let debugger = match &mut cx.editor.debugger {
Some(debugger) => debugger,
None => return,
};
if debugger.is_running {
cx.editor
.set_status("Debuggee is already running".to_owned());
return;
}
let request = debugger.configuration_done();
if let Err(e) = block_on(request) {
cx.editor.set_error(format!("Failed to run: {:?}", e));
return;
}
debugger.is_running = true;
}
pub fn dap_continue(cx: &mut Context) {
let debugger = match &mut cx.editor.debugger {
Some(debugger) => debugger,
@ -340,10 +321,10 @@ pub fn dap_continue(cx: &mut Context) {
pub fn dap_pause(cx: &mut Context) {
thread_picker(cx, |editor, thread| {
let debugger = match &mut editor.debugger {
Some(debugger) => debugger,
None => return,
};
let debugger = match &mut editor.debugger {
Some(debugger) => debugger,
None => return,
};
let request = debugger.pause(thread.id);
// NOTE: we don't need to set active thread id here because DAP will emit a "stopped" event
if let Err(e) = block_on(request) {

View file

@ -490,7 +490,6 @@ fn default() -> Keymaps {
"d" => { "Debug"
"l" => dap_launch,
"b" => dap_toggle_breakpoint,
"r" => dap_run,
"c" => dap_continue,
"h" => dap_pause,
"i" => dap_step_in,