Round 210: DAP-mode ext, LSP-UI ext (20 commands)

ober

e0d83ab436016bdfcab46540064583e9f1cb69b0

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index d073610..4fbc341 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -4583,6 +4583,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | ebib-import-file | :orange_circle: | Import file into Ebib |
 | ebib-push-citation | :orange_circle: | Push Ebib citation to buffer |
 
+### Round 210 — DAP-mode ext, LSP-UI ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| dap-debug-edit-template | :orange_circle: | Edit DAP debug template |
+| dap-debug-restart | :orange_circle: | Restart debug session |
+| dap-debug-last | :orange_circle: | Re-run last debug configuration |
+| dap-breakpoint-condition | :orange_circle: | Set conditional breakpoint |
+| dap-breakpoint-log-message | :orange_circle: | Set breakpoint log message |
+| dap-breakpoint-hit-condition | :orange_circle: | Set breakpoint hit count |
+| dap-eval-thing-at-point | :orange_circle: | Evaluate expression at point in debugger |
+| lsp-ui-doc-glance | :orange_circle: | Glance documentation at point |
+| lsp-ui-doc-unfocus-frame | :orange_circle: | Unfocus documentation frame |
+| lsp-ui-sideline-toggle-symbols-info | :orange_circle: | Toggle sideline symbols info |
+| lsp-ui-sideline-apply-code-actions | :orange_circle: | Apply sideline code actions |
+| lsp-ui-peek-find-workspace-symbol | :orange_circle: | Peek workspace symbol |
+| lsp-lens-show | :orange_circle: | Show code lenses |
+| lsp-lens-hide | :orange_circle: | Hide code lenses |
+| dap-ui-inspect-thing-at-point | :orange_circle: | Inspect thing at point in debugger |
+| dap-delete-session | :orange_circle: | Delete current debug session |
+| dap-delete-all-sessions | :orange_circle: | Delete all debug sessions |
+| dap-ui-expressions-remove | :orange_circle: | Remove watch expression |
+| lsp-ui-flycheck-list | :orange_circle: | Show flycheck error list |
+| lsp-ui-peek-jump-forward | :orange_circle: | Jump forward in peek history |
+
 ### Round 209 — Marginalia-ext, Consult-ext, Vertico-ext, Embark-ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index be6b177..632a026 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -18669,3 +18669,49 @@
     (echo-read-string echo "Keymap: "
       (lambda (km)
         (echo-message! echo (str "Embark: showing bindings in " km))))))
+
+;;; Round 210 — DAP-mode extensions, LSP-UI extensions (batch 2)
+
+(def (cmd-lsp-ui-sideline-apply-code-actions app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LSP-UI: applying sideline code actions")))
+
+(def (cmd-lsp-ui-peek-find-workspace-symbol app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Workspace symbol: "
+      (lambda (sym)
+        (echo-message! echo (str "LSP-UI: peeking workspace symbol " sym))))))
+
+(def (cmd-lsp-lens-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LSP: showing code lenses")))
+
+(def (cmd-lsp-lens-hide app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LSP: hiding code lenses")))
+
+(def (cmd-dap-ui-inspect-thing-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DAP: inspecting thing at point")))
+
+(def (cmd-dap-delete-session app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DAP: deleted current debug session")))
+
+(def (cmd-dap-delete-all-sessions app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DAP: deleted all debug sessions")))
+
+(def (cmd-dap-ui-expressions-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Expression: "
+      (lambda (expr)
+        (echo-message! echo (str "DAP: removed watch expression: " expr))))))
+
+(def (cmd-lsp-ui-flycheck-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LSP-UI: showing flycheck error list")))
+
+(def (cmd-lsp-ui-peek-jump-forward app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LSP-UI: jumped forward in peek history")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 2da286b..59ef568 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -19278,3 +19278,56 @@
 (def (cmd-vertico-truncate app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Vertico: toggled truncation")))
+
+;;; Round 210 — DAP-mode extensions, LSP-UI extensions (batch 1)
+
+(def (cmd-dap-debug-edit-template app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Debug template: "
+      (lambda (tmpl)
+        (echo-message! echo (str "DAP: editing template " tmpl))))))
+
+(def (cmd-dap-debug-restart app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DAP: restarting debug session")))
+
+(def (cmd-dap-debug-last app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DAP: re-running last debug configuration")))
+
+(def (cmd-dap-breakpoint-condition app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Condition: "
+      (lambda (cond)
+        (echo-message! echo (str "DAP: set breakpoint condition: " cond))))))
+
+(def (cmd-dap-breakpoint-log-message app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Log message: "
+      (lambda (msg)
+        (echo-message! echo (str "DAP: set breakpoint log message: " msg))))))
+
+(def (cmd-dap-breakpoint-hit-condition app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Hit count: "
+      (lambda (count)
+        (echo-message! echo (str "DAP: set breakpoint hit condition: " count))))))
+
+(def (cmd-dap-eval-thing-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "DAP: evaluating expression at point")))
+
+(def (cmd-lsp-ui-doc-glance app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LSP-UI: glancing documentation at point")))
+
+(def (cmd-lsp-ui-doc-unfocus-frame app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "LSP-UI: unfocused documentation frame")))
+
+(def (cmd-lsp-ui-sideline-toggle-symbols-info app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'lsp-ui-sideline-symbols-info)
+    (if (mode-enabled? app 'lsp-ui-sideline-symbols-info)
+      (echo-message! echo "LSP-UI: sideline symbols info enabled")
+      (echo-message! echo "LSP-UI: sideline symbols info disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 334eec3..86e85bb 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5843,4 +5843,25 @@
   (register-command! 'embark-consult-preview-minor-mode cmd-embark-consult-preview-minor-mode)
   (register-command! 'marginalia-reset cmd-marginalia-reset)
   (register-command! 'embark-bindings-in-keymap cmd-embark-bindings-in-keymap)
+  ;; Round 210
+  (register-command! 'dap-debug-edit-template cmd-dap-debug-edit-template)
+  (register-command! 'dap-debug-restart cmd-dap-debug-restart)
+  (register-command! 'dap-debug-last cmd-dap-debug-last)
+  (register-command! 'dap-breakpoint-condition cmd-dap-breakpoint-condition)
+  (register-command! 'dap-breakpoint-log-message cmd-dap-breakpoint-log-message)
+  (register-command! 'dap-breakpoint-hit-condition cmd-dap-breakpoint-hit-condition)
+  (register-command! 'dap-eval-thing-at-point cmd-dap-eval-thing-at-point)
+  (register-command! 'lsp-ui-doc-glance cmd-lsp-ui-doc-glance)
+  (register-command! 'lsp-ui-doc-unfocus-frame cmd-lsp-ui-doc-unfocus-frame)
+  (register-command! 'lsp-ui-sideline-toggle-symbols-info cmd-lsp-ui-sideline-toggle-symbols-info)
+  (register-command! 'lsp-ui-sideline-apply-code-actions cmd-lsp-ui-sideline-apply-code-actions)
+  (register-command! 'lsp-ui-peek-find-workspace-symbol cmd-lsp-ui-peek-find-workspace-symbol)
+  (register-command! 'lsp-lens-show cmd-lsp-lens-show)
+  (register-command! 'lsp-lens-hide cmd-lsp-lens-hide)
+  (register-command! 'dap-ui-inspect-thing-at-point cmd-dap-ui-inspect-thing-at-point)
+  (register-command! 'dap-delete-session cmd-dap-delete-session)
+  (register-command! 'dap-delete-all-sessions cmd-dap-delete-all-sessions)
+  (register-command! 'dap-ui-expressions-remove cmd-dap-ui-expressions-remove)
+  (register-command! 'lsp-ui-flycheck-list cmd-lsp-ui-flycheck-list)
+  (register-command! 'lsp-ui-peek-jump-forward cmd-lsp-ui-peek-jump-forward)
 )