diff options
Diffstat (limited to 'elisp/geiser-debug.el')
| -rw-r--r-- | elisp/geiser-debug.el | 26 | 
1 files changed, 24 insertions, 2 deletions
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)]])  | 
