From 5ab51e135f0183af3646b48065ebfeda8c93e880 Mon Sep 17 00:00:00 2001 From: jao Date: Sun, 26 Dec 2021 23:38:07 +0000 Subject: Commands to set breakpoints (at location and at function) --- elisp/geiser-debug.el | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) (limited to 'elisp/geiser-debug.el') diff --git a/elisp/geiser-debug.el b/elisp/geiser-debug.el index f5b98a3..1953408 100644 --- a/elisp/geiser-debug.el +++ b/elisp/geiser-debug.el @@ -120,13 +120,16 @@ all ANSI sequences." ret (geiser-eval--retort-result-str ret nil))) +(defun geiser-debug--send-dbg-and-display (thing) + (when-let (ret (geiser-debug--send-dbg thing)) + (geiser-debug--debugger-display thing ret))) + (defun geiser-debug--send-to-repl (thing) (unless (and geiser-debug--debugger-active-p geiser-debug--sender-buffer) (error "Debugger not active")) (save-window-excursion (with-current-buffer geiser-debug--sender-buffer - (when-let (ret (geiser-debug--send-dbg thing)) - (geiser-debug--debugger-display thing ret))))) + (geiser-debug--send-dbg-and-display thing)))) (defun geiser-debug-switch-to-buffer () "Return to the scheme buffer that pooped this debug window." @@ -159,6 +162,24 @@ all ANSI sequences." (interactive) (geiser-debug--send-to-repl 'error)) +(defun geiser-debug-debugger-next () + "Step to next source location." + (interactive) + (geiser-debug--send-to-repl 'next)) + +(defun geiser-debug-set-breakpoint-loc (&optional file line) + "Set breakpoint at FILE and LINE, or current position if not given." + (interactive) + (let ((file (or file (buffer-file-name))) + (line (or line (line-number-at-pos)))) + (geiser-debug--send-dbg-and-display `(break-at-source ,file ,line)))) + +(defun geiser-debug-set-breakpoint-func () + "Ask for a function name and set a breakpoint on entering it." + (interactive) + (let ((fn (geiser-completion--read-symbol "Set breakpoint for: "))) + (geiser-debug--send-dbg-and-display `(break ,fn)))) + (transient-define-prefix geiser-debug--debugger-transient () "Debugging meta-commands." [:description (lambda () (format "%s debugger" (geiser-impl--impl-str))) @@ -169,6 +190,7 @@ all ANSI sequences." ("l" "locals" geiser-debug-debugger-locals) ("r" " registers" geiser-debug-debugger-registers)] ["Go" + ("n" "Step next" geiser-debug-debugger-next) ("jn" "Jump to next error" next-error) ("jp" "Jump to previous error" previous-error) ("x" "Exit debug level" geiser-debug-debugger-quit)]]) -- cgit v1.2.3