Round 102: Add 20 Emacs Lisp development & debugging commands
ober
7ad71c63e7bfb34c7138dfb6b69a37cbb112ad1e
--- a/docs/jemacs-vs-emacs.md +++ b/docs/jemacs-vs-emacs.md @@ -3514,6 +3514,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features | vertico-directory-up | :orange_circle: | Move up one directory level | | vertico-directory-enter | :orange_circle: | Enter directory in completion | +### Round 102 — Emacs Lisp Development & Debugging + +| Command | Status | Description | +|---------|--------|-------------| +| edebug-step-mode | :orange_circle: | Edebug step mode (stop at every expression) | +| edebug-next-mode | :orange_circle: | Edebug next mode (stop after each expression) | +| edebug-go-mode | :orange_circle: | Edebug go mode (run until breakpoint) | +| edebug-continue-mode | :orange_circle: | Edebug continue mode | +| edebug-trace-mode | :orange_circle: | Edebug trace mode (show execution trace) | +| edebug-set-breakpoint | :orange_circle: | Set breakpoint at point | +| edebug-unset-breakpoint | :orange_circle: | Remove breakpoint at point | +| edebug-eval-expression | :orange_circle: | Evaluate expression in edebug context | +| edebug-where | :orange_circle: | Show current edebug stop point | +| edebug-bounce-point | :orange_circle: | Bounce to current point and back | +| edebug-top-level-nonstop | :orange_circle: | Exit to top level nonstop | +| ert-results-rerun-test | :orange_circle: | Rerun ERT test at point | +| elisp-refs-function | :orange_circle: | Find references to function | +| elisp-refs-macro | :orange_circle: | Find references to macro | +| elisp-refs-variable | :orange_circle: | Find references to variable | +| elisp-refs-symbol | :orange_circle: | Find all references to symbol | +| eldoc-print-current-symbol-info | :orange_circle: | Display eldoc for symbol at point | +| ielm-send-input | :orange_circle: | Send IELM input for evaluation | +| ielm-return | :orange_circle: | IELM newline or send | +| ielm-clear-buffer | :orange_circle: | Clear IELM interaction buffer | + --- ## Recommended Development Roadmap --- a/src/jerboa-emacs/editor-extra-final.ss +++ b/src/jerboa-emacs/editor-extra-final.ss @@ -13412,3 +13412,53 @@ (def (cmd-vertico-directory-enter app) (let* ((echo (app-state-echo app))) (echo-message! echo "Vertico: entered directory"))) + +;;; ——— Round 102: Emacs Lisp development & debugging (batch 2) ——— + +(def (cmd-edebug-top-level-nonstop app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: exited to top level (nonstop mode)"))) + +(def (cmd-ert-results-rerun-test app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "ERT: rerunning test at point"))) + +(def (cmd-elisp-refs-function app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Elisp refs function: " + (lambda (name) + (echo-message! echo (str "Elisp refs: finding references to function " name)))))) + +(def (cmd-elisp-refs-macro app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Elisp refs macro: " + (lambda (name) + (echo-message! echo (str "Elisp refs: finding references to macro " name)))))) + +(def (cmd-elisp-refs-variable app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Elisp refs variable: " + (lambda (name) + (echo-message! echo (str "Elisp refs: finding references to variable " name)))))) + +(def (cmd-elisp-refs-symbol app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Elisp refs symbol: " + (lambda (name) + (echo-message! echo (str "Elisp refs: finding all references to " name)))))) + +(def (cmd-eldoc-print-current-symbol-info app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Eldoc: displaying documentation for symbol at point"))) + +(def (cmd-ielm-send-input app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "IELM: sent input for evaluation"))) + +(def (cmd-ielm-return app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "IELM: newline or send input"))) + +(def (cmd-ielm-clear-buffer app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "IELM: cleared interaction buffer"))) --- a/src/jerboa-emacs/editor-extra-modes.ss +++ b/src/jerboa-emacs/editor-extra-modes.ss @@ -13951,3 +13951,47 @@ (echo-message! echo "Corfu completion mode enabled") (echo-message! echo "Corfu completion mode disabled")))) +;;; ——— Round 102: Emacs Lisp development & debugging (batch 1) ——— + +(def (cmd-edebug-step-mode app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: switched to step mode (stop at every expression)"))) + +(def (cmd-edebug-next-mode app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: switched to next mode (stop after each expression)"))) + +(def (cmd-edebug-go-mode app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: switched to go mode (run until breakpoint)"))) + +(def (cmd-edebug-continue-mode app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: switched to continue mode"))) + +(def (cmd-edebug-trace-mode app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: switched to trace mode (show execution trace)"))) + +(def (cmd-edebug-set-breakpoint app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: breakpoint set at point"))) + +(def (cmd-edebug-unset-breakpoint app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: breakpoint removed at point"))) + +(def (cmd-edebug-eval-expression app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Edebug eval: " + (lambda (expr) + (echo-message! echo (str "Edebug: evaluated '" expr "'")))))) + +(def (cmd-edebug-where app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: showing current stop point"))) + +(def (cmd-edebug-bounce-point app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "Edebug: bounced to current point and back"))) + --- a/src/jerboa-emacs/editor-extra-regs2.ss +++ b/src/jerboa-emacs/editor-extra-regs2.ss @@ -3575,4 +3575,25 @@ (register-command! 'corfu-popupinfo-toggle cmd-corfu-popupinfo-toggle) (register-command! 'vertico-directory-up cmd-vertico-directory-up) (register-command! 'vertico-directory-enter cmd-vertico-directory-enter) + ;; Round 102: Emacs Lisp development & debugging + (register-command! 'edebug-step-mode cmd-edebug-step-mode) + (register-command! 'edebug-next-mode cmd-edebug-next-mode) + (register-command! 'edebug-go-mode cmd-edebug-go-mode) + (register-command! 'edebug-continue-mode cmd-edebug-continue-mode) + (register-command! 'edebug-trace-mode cmd-edebug-trace-mode) + (register-command! 'edebug-set-breakpoint cmd-edebug-set-breakpoint) + (register-command! 'edebug-unset-breakpoint cmd-edebug-unset-breakpoint) + (register-command! 'edebug-eval-expression cmd-edebug-eval-expression) + (register-command! 'edebug-where cmd-edebug-where) + (register-command! 'edebug-bounce-point cmd-edebug-bounce-point) + (register-command! 'edebug-top-level-nonstop cmd-edebug-top-level-nonstop) + (register-command! 'ert-results-rerun-test cmd-ert-results-rerun-test) + (register-command! 'elisp-refs-function cmd-elisp-refs-function) + (register-command! 'elisp-refs-macro cmd-elisp-refs-macro) + (register-command! 'elisp-refs-variable cmd-elisp-refs-variable) + (register-command! 'elisp-refs-symbol cmd-elisp-refs-symbol) + (register-command! 'eldoc-print-current-symbol-info cmd-eldoc-print-current-symbol-info) + (register-command! 'ielm-send-input cmd-ielm-send-input) + (register-command! 'ielm-return cmd-ielm-return) + (register-command! 'ielm-clear-buffer cmd-ielm-clear-buffer) )