Round 91: Add DAP and debugger features
ober
0cd845bd7c406480bbfc30397183ac2111922e75
--- a/docs/jemacs-vs-emacs.md +++ b/docs/jemacs-vs-emacs.md @@ -3226,6 +3226,33 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features --- +### Round 91 — DAP & Debugger + +| Emacs Command | Status | Description | +|---|---|---| +| dap-breakpoint-delete-all | :orange_circle: | Delete all breakpoints | +| dap-restart-frame | :orange_circle: | Restart current frame | +| dap-ui-locals | :orange_circle: | Show local variables | +| dap-ui-breakpoints | :orange_circle: | Show breakpoints panel | +| dap-ui-sessions | :orange_circle: | Show debug sessions | +| dap-hydra | :orange_circle: | Open debug hydra menu | +| dap-ui-expressions-add | :orange_circle: | Add watch expression | +| dap-tooltip-at-point | :orange_circle: | Show value at point | +| dap-switch-stack-frame | :orange_circle: | Switch stack frame | +| dap-switch-thread | :orange_circle: | Switch debug thread | +| dap-toggle-breakpoint-condition | :orange_circle: | Set conditional breakpoint | +| realgud-gdb | :orange_circle: | Debug with GDB (RealGUD) | +| realgud-pdb | :orange_circle: | Debug with PDB (RealGUD) | +| realgud-node-inspect | :orange_circle: | Debug with Node inspector | +| realgud-lldb | :orange_circle: | Debug with LLDB (RealGUD) | +| gdb-many-windows | :orange_circle: | GDB many-windows layout | +| gud-gdb | :orange_circle: | Start GDB via GUD | +| gud-break | :orange_circle: | Set GUD breakpoint | +| gud-remove | :orange_circle: | Remove GUD breakpoint | +| gud-step | :orange_circle: | GUD step into | + +--- + ## Recommended Development Roadmap > *Reprioritized based on the user's actual Emacs workflow* --- a/src/jerboa-emacs/editor-extra-final.ss +++ b/src/jerboa-emacs/editor-extra-final.ss @@ -12891,3 +12891,56 @@ (echo-read-string echo "LSP workspace symbol: " (lambda (sym) (echo-message! echo (str "LSP: searching workspace for " sym)))))) + +;;; Round 91 — Debugger (cont.) +(def (cmd-dap-toggle-breakpoint-condition app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Breakpoint condition: " + (lambda (cond) + (echo-message! echo (str "DAP: conditional breakpoint set: " cond)))))) + +(def (cmd-realgud-gdb app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "GDB debug program: " + (lambda (prog) + (echo-message! echo (str "RealGUD: debugging " prog " with GDB")))))) + +(def (cmd-realgud-pdb app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "PDB debug script: " + (lambda (script) + (echo-message! echo (str "RealGUD: debugging " script " with PDB")))))) + +(def (cmd-realgud-node-inspect app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Node inspect script: " + (lambda (script) + (echo-message! echo (str "RealGUD: debugging " script " with Node inspector")))))) + +(def (cmd-realgud-lldb app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "LLDB debug program: " + (lambda (prog) + (echo-message! echo (str "RealGUD: debugging " prog " with LLDB")))))) + +(def (cmd-gdb-many-windows app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "GDB: many-windows layout opened"))) + +(def (cmd-gud-gdb app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "GUD GDB command: " + (lambda (cmd) + (echo-message! echo (str "GUD: starting GDB with " cmd)))))) + +(def (cmd-gud-break app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "GUD: breakpoint set at current line"))) + +(def (cmd-gud-remove app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "GUD: breakpoint removed at current line"))) + +(def (cmd-gud-step app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "GUD: stepped into"))) --- a/src/jerboa-emacs/editor-extra-modes.ss +++ b/src/jerboa-emacs/editor-extra-modes.ss @@ -13437,3 +13437,46 @@ (echo-message! echo "LSP modeline diagnostics enabled") (echo-message! echo "LSP modeline diagnostics disabled")))) +;;; Round 91 — DAP & Debugger +(def (cmd-dap-breakpoint-delete-all app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DAP: all breakpoints deleted"))) + +(def (cmd-dap-restart-frame app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DAP: restarted current frame"))) + +(def (cmd-dap-ui-locals app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DAP UI: showing local variables"))) + +(def (cmd-dap-ui-breakpoints app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DAP UI: showing breakpoints"))) + +(def (cmd-dap-ui-sessions app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DAP UI: showing debug sessions"))) + +(def (cmd-dap-hydra app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DAP: debug hydra menu opened"))) + +(def (cmd-dap-ui-expressions-add app) + (let* ((echo (app-state-echo app))) + (echo-read-string echo "Watch expression: " + (lambda (expr) + (echo-message! echo (str "DAP: watching " expr)))))) + +(def (cmd-dap-tooltip-at-point app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DAP: showing value at point"))) + +(def (cmd-dap-switch-stack-frame app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DAP: switched stack frame"))) + +(def (cmd-dap-switch-thread app) + (let* ((echo (app-state-echo app))) + (echo-message! echo "DAP: switched thread"))) + --- a/src/jerboa-emacs/editor-extra-regs2.ss +++ b/src/jerboa-emacs/editor-extra-regs2.ss @@ -3345,4 +3345,25 @@ (register-command! 'lsp-toggle-trace-io cmd-lsp-toggle-trace-io) (register-command! 'lsp-avy-lens cmd-lsp-avy-lens) (register-command! 'lsp-ivy-workspace-symbol cmd-lsp-ivy-workspace-symbol) + ;; Round 91 + (register-command! 'dap-breakpoint-delete-all cmd-dap-breakpoint-delete-all) + (register-command! 'dap-restart-frame cmd-dap-restart-frame) + (register-command! 'dap-ui-locals cmd-dap-ui-locals) + (register-command! 'dap-ui-breakpoints cmd-dap-ui-breakpoints) + (register-command! 'dap-ui-sessions cmd-dap-ui-sessions) + (register-command! 'dap-hydra cmd-dap-hydra) + (register-command! 'dap-ui-expressions-add cmd-dap-ui-expressions-add) + (register-command! 'dap-tooltip-at-point cmd-dap-tooltip-at-point) + (register-command! 'dap-switch-stack-frame cmd-dap-switch-stack-frame) + (register-command! 'dap-switch-thread cmd-dap-switch-thread) + (register-command! 'dap-toggle-breakpoint-condition cmd-dap-toggle-breakpoint-condition) + (register-command! 'realgud-gdb cmd-realgud-gdb) + (register-command! 'realgud-pdb cmd-realgud-pdb) + (register-command! 'realgud-node-inspect cmd-realgud-node-inspect) + (register-command! 'realgud-lldb cmd-realgud-lldb) + (register-command! 'gdb-many-windows cmd-gdb-many-windows) + (register-command! 'gud-gdb cmd-gud-gdb) + (register-command! 'gud-break cmd-gud-break) + (register-command! 'gud-remove cmd-gud-remove) + (register-command! 'gud-step cmd-gud-step) )