mirror of
https://github.com/helix-editor/helix.git
synced 2024-11-22 09:26:19 +04:00
dap: small TODO
This commit is contained in:
parent
42f9718f55
commit
289303a30d
@ -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));
|
||||
|
@ -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);
|
||||
|
@ -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",
|
||||
|
@ -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) {
|
||||
|
@ -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,
|
||||
|
Loading…
Reference in New Issue
Block a user