summaryrefslogtreecommitdiff
path: root/helix-term
diff options
context:
space:
mode:
Diffstat (limited to 'helix-term')
-rw-r--r--helix-term/src/commands.rs1
-rw-r--r--helix-term/src/commands/dap.rs30
-rw-r--r--helix-term/src/keymap/default.rs1
3 files changed, 32 insertions, 0 deletions
diff --git a/helix-term/src/commands.rs b/helix-term/src/commands.rs
index cd7626eb..c76e9f2b 100644
--- a/helix-term/src/commands.rs
+++ b/helix-term/src/commands.rs
@@ -430,6 +430,7 @@ impl MappableCommand {
goto_next_paragraph, "Goto next paragraph",
goto_prev_paragraph, "Goto previous paragraph",
dap_launch, "Launch debug target",
+ dap_restart, "Restart debugging session",
dap_toggle_breakpoint, "Toggle breakpoint",
dap_continue, "Continue program execution",
dap_pause, "Pause program execution",
diff --git a/helix-term/src/commands/dap.rs b/helix-term/src/commands/dap.rs
index 023ed377..dac1e9d5 100644
--- a/helix-term/src/commands/dap.rs
+++ b/helix-term/src/commands/dap.rs
@@ -289,6 +289,36 @@ pub fn dap_launch(cx: &mut Context) {
))));
}
+pub fn dap_restart(cx: &mut Context) {
+ let debugger = match &cx.editor.debugger {
+ Some(debugger) => debugger,
+ None => {
+ cx.editor.set_error("Debugger is not running");
+ return;
+ }
+ };
+ if !debugger
+ .capabilities()
+ .supports_restart_request
+ .unwrap_or(false)
+ {
+ cx.editor
+ .set_error("Debugger does not support session restarts");
+ return;
+ }
+ if debugger.starting_request_args().is_none() {
+ cx.editor
+ .set_error("No arguments found with which to restart the sessions");
+ return;
+ }
+
+ dap_callback(
+ cx.jobs,
+ debugger.restart(),
+ |editor, _compositor, _resp: ()| editor.set_status("Debugging session restarted"),
+ );
+}
+
fn debug_parameter_prompt(
completions: Vec<DebugConfigCompletion>,
config_name: String,
diff --git a/helix-term/src/keymap/default.rs b/helix-term/src/keymap/default.rs
index 7425c815..9bd00280 100644
--- a/helix-term/src/keymap/default.rs
+++ b/helix-term/src/keymap/default.rs
@@ -223,6 +223,7 @@ pub fn default() -> HashMap<Mode, Keymap> {
"'" => last_picker,
"g" => { "Debug (experimental)" sticky=true
"l" => dap_launch,
+ "r" => dap_restart,
"b" => dap_toggle_breakpoint,
"c" => dap_continue,
"h" => dap_pause,