Round 671-680: Evil/Meow/Modal ext, Smartparens, Combobulate, Vundo, Proof Assistants (100 commands)

ober

8c30623c6603151817b5229b939048630e10a08d

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 2454604..9f5e8a1 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -5258,6 +5258,156 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | `bug-reference-prog` | :orange_circle: Scaffold | Bug reference prog mode |
 | `lsp-restart-workspace` | :orange_circle: Scaffold | LSP restart workspace |
 | `vterm-new-session` | :orange_circle: Scaffold | VTerm new session |
+
+### Round 671 — Evil ext & Modal Editing
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `evil-surround` | :orange_circle: Scaffold | Surround with |
+| `evil-snipe` | :orange_circle: Scaffold | 2-char jump |
+| `evil-escape` | :orange_circle: Scaffold | Quick escape |
+| `meow-motion` | :orange_circle: Scaffold | Motion state |
+| `meow-keypad` | :orange_circle: Scaffold | Keypad state |
+| `meow-beacon` | :orange_circle: Scaffold | Beacon state |
+| `meow-line` | :orange_circle: Scaffold | Select line |
+| `meow-kill` | :orange_circle: Scaffold | Kill |
+| `xah-fly-keys` | :orange_circle: Scaffold | Toggle |
+| `xah-fly-command` | :orange_circle: Scaffold | Command mode |
+
+### Round 672 — String Inflection, Hungry Delete & Formatters
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `string-inflection-toggle` | :orange_circle: Scaffold | Toggle case style |
+| `string-inflection-underscore` | :orange_circle: Scaffold | Snake_case |
+| `string-inflection-kebab` | :orange_circle: Scaffold | Kebab-case |
+| `string-inflection-lower` | :orange_circle: Scaffold | Lower camelCase |
+| `hungry-delete-mode` | :orange_circle: Scaffold | Toggle mode |
+| `hungry-delete-forward` | :orange_circle: Scaffold | Delete forward |
+| `hungry-delete-backward` | :orange_circle: Scaffold | Delete backward |
+| `electric-operator-mode` | :orange_circle: Scaffold | Toggle mode |
+| `prettier-js-mode` | :orange_circle: Scaffold | Prettier mode |
+| `reformatter-mode` | :orange_circle: Scaffold | Reformatter mode |
+
+### Round 673 — Lispy, RG & Jump ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `xah-fly-insert` | :orange_circle: Scaffold | Insert mode |
+| `lispy-mode` | :orange_circle: Scaffold | Toggle lispy |
+| `lispy-goto` | :orange_circle: Scaffold | Goto symbol |
+| `lispyville-mode` | :orange_circle: Scaffold | Toggle lispyville |
+| `rg-dwim` | :orange_circle: Scaffold | RG do what I mean |
+| `rg-project` | :orange_circle: Scaffold | RG search project |
+| `rg-literal` | :orange_circle: Scaffold | RG literal search |
+| `ace-jump-char` | :orange_circle: Scaffold | Ace jump char |
+| `ace-jump-line` | :orange_circle: Scaffold | Ace jump line |
+| `avy-goto-char-in-line` | :orange_circle: Scaffold | Avy char in line |
+
+### Round 674 — EditorConfig ext, Build Tools & nREPL
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `editorconfig-apply` | :orange_circle: Scaffold | Apply config |
+| `editorconfig-format` | :orange_circle: Scaffold | Format buffer |
+| `ws-butler-trim-eob` | :orange_circle: Scaffold | Trim end of buffer |
+| `aggressive-indent-toggle` | :orange_circle: Scaffold | Toggle |
+| `fancy-compilation-mode` | :orange_circle: Scaffold | Fancy compilation |
+| `multi-compile-run` | :orange_circle: Scaffold | Multi-compile run |
+| `quickrun-region` | :orange_circle: Scaffold | Run region |
+| `quickrun-with-arg` | :orange_circle: Scaffold | Run with arg |
+| `nrepl-connect` | :orange_circle: Scaffold | nREPL connect |
+| `nrepl-close` | :orange_circle: Scaffold | nREPL close |
+
+### Round 675 — Combobulate, Symbol Overlay & Tree-sitter ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `combobulate-mode` | :orange_circle: Scaffold | Toggle mode |
+| `combobulate-nav-next` | :orange_circle: Scaffold | Navigate next |
+| `combobulate-nav-prev` | :orange_circle: Scaffold | Navigate previous |
+| `combobulate-raise` | :orange_circle: Scaffold | Raise node |
+| `combobulate-clone` | :orange_circle: Scaffold | Clone node |
+| `symbol-overlay-rename` | :orange_circle: Scaffold | Rename |
+| `symbol-overlay-count` | :orange_circle: Scaffold | Count |
+| `highlight-symbol-mode` | :orange_circle: Scaffold | Toggle mode |
+| `highlight-symbol-nav` | :orange_circle: Scaffold | Nav mode |
+| `tree-sitter-hl-mode` | :orange_circle: Scaffold | Highlight mode |
+
+### Round 676 — Inf-Clojure, Dante, SLY & EROS
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `inf-clojure` | :orange_circle: Scaffold | Start REPL |
+| `inf-clojure-eval-defun` | :orange_circle: Scaffold | Eval defun |
+| `inf-clojure-eval-buffer` | :orange_circle: Scaffold | Eval buffer |
+| `dante-mode` | :orange_circle: Scaffold | Toggle mode |
+| `dante-eval-block` | :orange_circle: Scaffold | Eval block |
+| `dante-type-at` | :orange_circle: Scaffold | Type at point |
+| `lsp-haskell-imports-action` | :orange_circle: Scaffold | Imports action |
+| `sly-compile-file` | :orange_circle: Scaffold | Compile file |
+| `eros-eval-defun` | :orange_circle: Scaffold | Eval defun inline |
+| `purescript-indent` | :orange_circle: Scaffold | Indent |
+
+### Round 677 — YASnippet ext, Tempel ext & Search ext
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `yas-insert-snippet` | :orange_circle: Scaffold | Insert snippet |
+| `yas-new-snippet` | :orange_circle: Scaffold | New snippet |
+| `auto-yasnippet` | :orange_circle: Scaffold | Auto yasnippet |
+| `aya-create` | :orange_circle: Scaffold | Create snippet |
+| `aya-expand` | :orange_circle: Scaffold | Expand snippet |
+| `tempel-region` | :orange_circle: Scaffold | Wrap region |
+| `tempel-defun` | :orange_circle: Scaffold | Template defun |
+| `tempel-toggle` | :orange_circle: Scaffold | Toggle active |
+| `isearch-mb-mode` | :orange_circle: Scaffold | Minibuffer isearch |
+| `phi-replace-query` | :orange_circle: Scaffold | Replace query |
+
+### Round 678 — Proof Assistants (Lean, Coq, OCaml)
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `lean-mode` | :orange_circle: Scaffold | Toggle Lean mode |
+| `lean-server-restart` | :orange_circle: Scaffold | Restart server |
+| `coq-mode` | :orange_circle: Scaffold | Toggle Coq mode |
+| `proof-goto-end-of-locked` | :orange_circle: Scaffold | Goto end of locked |
+| `proof-shell-start` | :orange_circle: Scaffold | Start proof shell |
+| `agda-goal-type` | :orange_circle: Scaffold | Goal type |
+| `tuareg-mode` | :orange_circle: Scaffold | Toggle OCaml mode |
+| `merlin-mode` | :orange_circle: Scaffold | Toggle Merlin |
+| `merlin-document` | :orange_circle: Scaffold | Document |
+| `utop-eval-buffer` | :orange_circle: Scaffold | Eval buffer |
+
+### Round 679 — Vundo & Drag-stuff
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `vundo` | :orange_circle: Scaffold | Visual undo tree |
+| `vundo-forward` | :orange_circle: Scaffold | Forward |
+| `vundo-backward` | :orange_circle: Scaffold | Backward |
+| `vundo-stem-root` | :orange_circle: Scaffold | Stem root |
+| `vundo-stem-end` | :orange_circle: Scaffold | Stem end |
+| `drag-stuff-up` | :orange_circle: Scaffold | Drag up |
+| `drag-stuff-down` | :orange_circle: Scaffold | Drag down |
+| `drag-stuff-left` | :orange_circle: Scaffold | Drag left |
+| `drag-stuff-right` | :orange_circle: Scaffold | Drag right |
+| `anzu-replace-cursor` | :orange_circle: Scaffold | Replace at cursor |
+
+### Round 680 — Modal Editors ext (Objed, Modalka, Devil)
+
+| Feature | Status | Notes |
+|---------|--------|-------|
+| `utop-eval-phrase` | :orange_circle: Scaffold | Eval phrase |
+| `kakoune-mode` | :orange_circle: Scaffold | Toggle Kakoune |
+| `boon-insert-state` | :orange_circle: Scaffold | Insert state |
+| `objed-mode` | :orange_circle: Scaffold | Text object editing |
+| `objed-expand` | :orange_circle: Scaffold | Expand object |
+| `objed-next-object` | :orange_circle: Scaffold | Next object |
+| `modalka-mode` | :orange_circle: Scaffold | Toggle Modalka |
+| `ryo-modal-mode` | :orange_circle: Scaffold | Toggle RYO |
+| `fingers-mode` | :orange_circle: Scaffold | Toggle Fingers |
+| `devil-mode` | :orange_circle: Scaffold | Toggle Devil |
 ### Round 631 — Process Calculi (Pi-calculus, CSP)
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index d04b328..9b33b46 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -34773,3 +34773,58 @@
 (def (cmd-bug-reference-prog app) (let* ((echo (app-state-echo app))) (echo-message! echo "Bug Reference: prog mode")))
 (def (cmd-lsp-restart-workspace app) (let* ((echo (app-state-echo app))) (echo-message! echo "LSP: restart workspace")))
 (def (cmd-vterm-new-session app) (let* ((echo (app-state-echo app))) (echo-message! echo "VTerm: new session")))
+;; Round 672: String Inflection, Hungry Delete, Electric
+(def (cmd-string-inflection-toggle app) (let* ((echo (app-state-echo app))) (echo-message! echo "String Inflection: toggle")))
+(def (cmd-string-inflection-underscore app) (let* ((echo (app-state-echo app))) (echo-message! echo "String Inflection: underscore")))
+(def (cmd-string-inflection-kebab app) (let* ((echo (app-state-echo app))) (echo-message! echo "String Inflection: kebab-case")))
+(def (cmd-string-inflection-lower app) (let* ((echo (app-state-echo app))) (echo-message! echo "String Inflection: lower camelCase")))
+(def (cmd-hungry-delete-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hungry Delete: toggle mode")))
+(def (cmd-hungry-delete-forward app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hungry Delete: forward")))
+(def (cmd-hungry-delete-backward app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hungry Delete: backward")))
+(def (cmd-electric-operator-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Electric Operator: toggle mode")))
+(def (cmd-prettier-js-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Prettier: toggle mode")))
+(def (cmd-reformatter-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Reformatter: toggle mode")))
+;; Round 674: EditorConfig ext, WS-Butler ext, Aggressive Indent
+(def (cmd-editorconfig-apply app) (let* ((echo (app-state-echo app))) (echo-message! echo "EditorConfig: apply")))
+(def (cmd-editorconfig-format app) (let* ((echo (app-state-echo app))) (echo-message! echo "EditorConfig: format buffer")))
+(def (cmd-ws-butler-trim-eob app) (let* ((echo (app-state-echo app))) (echo-message! echo "WS-Butler: trim end of buffer")))
+(def (cmd-aggressive-indent-toggle app) (let* ((echo (app-state-echo app))) (echo-message! echo "Aggressive Indent: toggle")))
+(def (cmd-fancy-compilation-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Fancy Compilation: toggle mode")))
+(def (cmd-multi-compile-run app) (let* ((echo (app-state-echo app))) (echo-message! echo "Multi-compile: run")))
+(def (cmd-quickrun-region app) (let* ((echo (app-state-echo app))) (echo-message! echo "Quickrun: run region")))
+(def (cmd-quickrun-with-arg app) (let* ((echo (app-state-echo app))) (echo-message! echo "Quickrun: run with arg")))
+(def (cmd-nrepl-connect app) (let* ((echo (app-state-echo app))) (echo-message! echo "nREPL: connect")))
+(def (cmd-nrepl-close app) (let* ((echo (app-state-echo app))) (echo-message! echo "nREPL: close")))
+;; Round 676: Inf-Clojure, Dante, Haskell ext
+(def (cmd-inf-clojure app) (let* ((echo (app-state-echo app))) (echo-message! echo "Inf-Clojure: start REPL")))
+(def (cmd-inf-clojure-eval-defun app) (let* ((echo (app-state-echo app))) (echo-message! echo "Inf-Clojure: eval defun")))
+(def (cmd-inf-clojure-eval-buffer app) (let* ((echo (app-state-echo app))) (echo-message! echo "Inf-Clojure: eval buffer")))
+(def (cmd-dante-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Dante: toggle mode")))
+(def (cmd-dante-eval-block app) (let* ((echo (app-state-echo app))) (echo-message! echo "Dante: eval block")))
+(def (cmd-dante-type-at app) (let* ((echo (app-state-echo app))) (echo-message! echo "Dante: type at point")))
+(def (cmd-lsp-haskell-imports-action app) (let* ((echo (app-state-echo app))) (echo-message! echo "LSP Haskell: imports action")))
+(def (cmd-sly-compile-file app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY: compile file")))
+(def (cmd-eros-eval-defun app) (let* ((echo (app-state-echo app))) (echo-message! echo "EROS: eval defun inline")))
+(def (cmd-purescript-indent app) (let* ((echo (app-state-echo app))) (echo-message! echo "PureScript: indent")))
+;; Round 678: Proof Assistants (Lean, Coq, Agda ext)
+(def (cmd-lean-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Lean: toggle mode")))
+(def (cmd-lean-server-restart app) (let* ((echo (app-state-echo app))) (echo-message! echo "Lean: restart server")))
+(def (cmd-coq-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Coq: toggle mode")))
+(def (cmd-proof-goto-end-of-locked app) (let* ((echo (app-state-echo app))) (echo-message! echo "Proof General: goto end of locked")))
+(def (cmd-proof-shell-start app) (let* ((echo (app-state-echo app))) (echo-message! echo "Proof General: start shell")))
+(def (cmd-agda-goal-type app) (let* ((echo (app-state-echo app))) (echo-message! echo "Agda: goal type")))
+(def (cmd-tuareg-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Tuareg: toggle OCaml mode")))
+(def (cmd-merlin-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Merlin: toggle mode")))
+(def (cmd-merlin-document app) (let* ((echo (app-state-echo app))) (echo-message! echo "Merlin: document")))
+(def (cmd-utop-eval-buffer app) (let* ((echo (app-state-echo app))) (echo-message! echo "utop: eval buffer")))
+;; Round 680: utop, Kakoune, Boon
+(def (cmd-utop-eval-phrase app) (let* ((echo (app-state-echo app))) (echo-message! echo "utop: eval phrase")))
+(def (cmd-kakoune-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Kakoune: toggle mode")))
+(def (cmd-boon-insert-state app) (let* ((echo (app-state-echo app))) (echo-message! echo "Boon: insert state")))
+(def (cmd-objed-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Objed: text object editing")))
+(def (cmd-objed-expand app) (let* ((echo (app-state-echo app))) (echo-message! echo "Objed: expand object")))
+(def (cmd-objed-next-object app) (let* ((echo (app-state-echo app))) (echo-message! echo "Objed: next object")))
+(def (cmd-modalka-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Modalka: toggle mode")))
+(def (cmd-ryo-modal-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "RYO Modal: toggle mode")))
+(def (cmd-fingers-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Fingers: toggle mode")))
+(def (cmd-devil-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Devil: toggle mode")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 29e8d37..37ea087 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -33997,3 +33997,58 @@
 (def (cmd-eyebrowse-create-config app) (let* ((echo (app-state-echo app))) (echo-message! echo "Eyebrowse: create config")))
 (def (cmd-eyebrowse-close-config app) (let* ((echo (app-state-echo app))) (echo-message! echo "Eyebrowse: close config")))
 (def (cmd-eyebrowse-rename-config app) (let* ((echo (app-state-echo app))) (echo-message! echo "Eyebrowse: rename config")))
+;; Round 671: Evil ext, Modal Editing
+(def (cmd-evil-surround app) (let* ((echo (app-state-echo app))) (echo-message! echo "Evil Surround: surround with")))
+(def (cmd-evil-snipe app) (let* ((echo (app-state-echo app))) (echo-message! echo "Evil Snipe: 2-char jump")))
+(def (cmd-evil-escape app) (let* ((echo (app-state-echo app))) (echo-message! echo "Evil Escape: quick escape")))
+(def (cmd-meow-motion app) (let* ((echo (app-state-echo app))) (echo-message! echo "Meow: motion state")))
+(def (cmd-meow-keypad app) (let* ((echo (app-state-echo app))) (echo-message! echo "Meow: keypad state")))
+(def (cmd-meow-beacon app) (let* ((echo (app-state-echo app))) (echo-message! echo "Meow: beacon state")))
+(def (cmd-meow-line app) (let* ((echo (app-state-echo app))) (echo-message! echo "Meow: select line")))
+(def (cmd-meow-kill app) (let* ((echo (app-state-echo app))) (echo-message! echo "Meow: kill")))
+(def (cmd-xah-fly-keys app) (let* ((echo (app-state-echo app))) (echo-message! echo "Xah Fly Keys: toggle")))
+(def (cmd-xah-fly-command app) (let* ((echo (app-state-echo app))) (echo-message! echo "Xah Fly Keys: command mode")))
+;; Round 673: Lispy, Lispyville, RG ext
+(def (cmd-xah-fly-insert app) (let* ((echo (app-state-echo app))) (echo-message! echo "Xah Fly Keys: insert mode")))
+(def (cmd-lispy-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Lispy: toggle mode")))
+(def (cmd-lispy-goto app) (let* ((echo (app-state-echo app))) (echo-message! echo "Lispy: goto symbol")))
+(def (cmd-lispyville-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Lispyville: toggle mode")))
+(def (cmd-rg-dwim app) (let* ((echo (app-state-echo app))) (echo-message! echo "RG: do what I mean")))
+(def (cmd-rg-project app) (let* ((echo (app-state-echo app))) (echo-message! echo "RG: search project")))
+(def (cmd-rg-literal app) (let* ((echo (app-state-echo app))) (echo-message! echo "RG: literal search")))
+(def (cmd-ace-jump-char app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ace Jump: char mode")))
+(def (cmd-ace-jump-line app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ace Jump: line mode")))
+(def (cmd-avy-goto-char-in-line app) (let* ((echo (app-state-echo app))) (echo-message! echo "Avy: goto char in line")))
+;; Round 675: Combobulate & Symbol Overlay ext
+(def (cmd-combobulate-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Combobulate: toggle mode")))
+(def (cmd-combobulate-nav-next app) (let* ((echo (app-state-echo app))) (echo-message! echo "Combobulate: navigate next")))
+(def (cmd-combobulate-nav-prev app) (let* ((echo (app-state-echo app))) (echo-message! echo "Combobulate: navigate previous")))
+(def (cmd-combobulate-raise app) (let* ((echo (app-state-echo app))) (echo-message! echo "Combobulate: raise node")))
+(def (cmd-combobulate-clone app) (let* ((echo (app-state-echo app))) (echo-message! echo "Combobulate: clone node")))
+(def (cmd-symbol-overlay-rename app) (let* ((echo (app-state-echo app))) (echo-message! echo "Symbol Overlay: rename")))
+(def (cmd-symbol-overlay-count app) (let* ((echo (app-state-echo app))) (echo-message! echo "Symbol Overlay: count")))
+(def (cmd-highlight-symbol-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Highlight Symbol: toggle mode")))
+(def (cmd-highlight-symbol-nav app) (let* ((echo (app-state-echo app))) (echo-message! echo "Highlight Symbol: nav mode")))
+(def (cmd-tree-sitter-hl-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Tree-sitter: highlight mode")))
+;; Round 677: YASnippet ext, Auto-yasnippet
+(def (cmd-yas-insert-snippet app) (let* ((echo (app-state-echo app))) (echo-message! echo "YASnippet: insert snippet")))
+(def (cmd-yas-new-snippet app) (let* ((echo (app-state-echo app))) (echo-message! echo "YASnippet: new snippet")))
+(def (cmd-auto-yasnippet app) (let* ((echo (app-state-echo app))) (echo-message! echo "Auto-YASnippet: create")))
+(def (cmd-aya-create app) (let* ((echo (app-state-echo app))) (echo-message! echo "AYA: create snippet")))
+(def (cmd-aya-expand app) (let* ((echo (app-state-echo app))) (echo-message! echo "AYA: expand snippet")))
+(def (cmd-tempel-region app) (let* ((echo (app-state-echo app))) (echo-message! echo "Tempel: wrap region")))
+(def (cmd-tempel-defun app) (let* ((echo (app-state-echo app))) (echo-message! echo "Tempel: template defun")))
+(def (cmd-tempel-toggle app) (let* ((echo (app-state-echo app))) (echo-message! echo "Tempel: toggle active")))
+(def (cmd-isearch-mb-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Isearch MB: minibuffer mode")))
+(def (cmd-phi-replace-query app) (let* ((echo (app-state-echo app))) (echo-message! echo "Phi: replace query")))
+;; Round 679: Vundo & Drag-stuff
+(def (cmd-vundo app) (let* ((echo (app-state-echo app))) (echo-message! echo "Vundo: visual undo tree")))
+(def (cmd-vundo-forward app) (let* ((echo (app-state-echo app))) (echo-message! echo "Vundo: forward")))
+(def (cmd-vundo-backward app) (let* ((echo (app-state-echo app))) (echo-message! echo "Vundo: backward")))
+(def (cmd-vundo-stem-root app) (let* ((echo (app-state-echo app))) (echo-message! echo "Vundo: stem root")))
+(def (cmd-vundo-stem-end app) (let* ((echo (app-state-echo app))) (echo-message! echo "Vundo: stem end")))
+(def (cmd-drag-stuff-up app) (let* ((echo (app-state-echo app))) (echo-message! echo "Drag Stuff: up")))
+(def (cmd-drag-stuff-down app) (let* ((echo (app-state-echo app))) (echo-message! echo "Drag Stuff: down")))
+(def (cmd-drag-stuff-left app) (let* ((echo (app-state-echo app))) (echo-message! echo "Drag Stuff: left")))
+(def (cmd-drag-stuff-right app) (let* ((echo (app-state-echo app))) (echo-message! echo "Drag Stuff: right")))
+(def (cmd-anzu-replace-cursor app) (let* ((echo (app-state-echo app))) (echo-message! echo "Anzu: replace at cursor")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 37167de..6bfaff8 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -13204,4 +13204,35 @@
   ;; Round 670: Which-key, Doom, Icons, Misc
   (register-command! 'which-key-mode cmd-which-key-mode) (register-command! 'doom-themes-toggle cmd-doom-themes-toggle) (register-command! 'doom-modeline-toggle cmd-doom-modeline-toggle) (register-command! 'all-the-icons-install cmd-all-the-icons-install) (register-command! 'imenu-list-toggle cmd-imenu-list-toggle)
   (register-command! 'whitespace-toggle-options cmd-whitespace-toggle-options) (register-command! 'goto-address-prog cmd-goto-address-prog) (register-command! 'bug-reference-prog cmd-bug-reference-prog) (register-command! 'lsp-restart-workspace cmd-lsp-restart-workspace) (register-command! 'vterm-new-session cmd-vterm-new-session)
+
+  ;; Round 671: Evil ext, Modal
+  (register-command! 'evil-surround cmd-evil-surround) (register-command! 'evil-snipe cmd-evil-snipe) (register-command! 'evil-escape cmd-evil-escape) (register-command! 'meow-motion cmd-meow-motion) (register-command! 'meow-keypad cmd-meow-keypad)
+  (register-command! 'meow-beacon cmd-meow-beacon) (register-command! 'meow-line cmd-meow-line) (register-command! 'meow-kill cmd-meow-kill) (register-command! 'xah-fly-keys cmd-xah-fly-keys) (register-command! 'xah-fly-command cmd-xah-fly-command)
+  ;; Round 672: String Inflection, Hungry Delete, Electric
+  (register-command! 'string-inflection-toggle cmd-string-inflection-toggle) (register-command! 'string-inflection-underscore cmd-string-inflection-underscore) (register-command! 'string-inflection-kebab cmd-string-inflection-kebab) (register-command! 'string-inflection-lower cmd-string-inflection-lower) (register-command! 'hungry-delete-mode cmd-hungry-delete-mode)
+  (register-command! 'hungry-delete-forward cmd-hungry-delete-forward) (register-command! 'hungry-delete-backward cmd-hungry-delete-backward) (register-command! 'electric-operator-mode cmd-electric-operator-mode) (register-command! 'prettier-js-mode cmd-prettier-js-mode) (register-command! 'reformatter-mode cmd-reformatter-mode)
+  ;; Round 673: Lispy, Lispyville, RG, Ace Jump, Avy ext
+  (register-command! 'xah-fly-insert cmd-xah-fly-insert) (register-command! 'lispy-mode cmd-lispy-mode) (register-command! 'lispy-goto cmd-lispy-goto) (register-command! 'lispyville-mode cmd-lispyville-mode) (register-command! 'rg-dwim cmd-rg-dwim)
+  (register-command! 'rg-project cmd-rg-project) (register-command! 'rg-literal cmd-rg-literal) (register-command! 'ace-jump-char cmd-ace-jump-char) (register-command! 'ace-jump-line cmd-ace-jump-line) (register-command! 'avy-goto-char-in-line cmd-avy-goto-char-in-line)
+  ;; Round 674: EditorConfig ext, WS-Butler, Build tools
+  (register-command! 'editorconfig-apply cmd-editorconfig-apply) (register-command! 'editorconfig-format cmd-editorconfig-format) (register-command! 'ws-butler-trim-eob cmd-ws-butler-trim-eob) (register-command! 'aggressive-indent-toggle cmd-aggressive-indent-toggle) (register-command! 'fancy-compilation-mode cmd-fancy-compilation-mode)
+  (register-command! 'multi-compile-run cmd-multi-compile-run) (register-command! 'quickrun-region cmd-quickrun-region) (register-command! 'quickrun-with-arg cmd-quickrun-with-arg) (register-command! 'nrepl-connect cmd-nrepl-connect) (register-command! 'nrepl-close cmd-nrepl-close)
+  ;; Round 675: Combobulate, Symbol Overlay, Tree-sitter ext
+  (register-command! 'combobulate-mode cmd-combobulate-mode) (register-command! 'combobulate-nav-next cmd-combobulate-nav-next) (register-command! 'combobulate-nav-prev cmd-combobulate-nav-prev) (register-command! 'combobulate-raise cmd-combobulate-raise) (register-command! 'combobulate-clone cmd-combobulate-clone)
+  (register-command! 'symbol-overlay-rename cmd-symbol-overlay-rename) (register-command! 'symbol-overlay-count cmd-symbol-overlay-count) (register-command! 'highlight-symbol-mode cmd-highlight-symbol-mode) (register-command! 'highlight-symbol-nav cmd-highlight-symbol-nav) (register-command! 'tree-sitter-hl-mode cmd-tree-sitter-hl-mode)
+  ;; Round 676: Inf-Clojure, Dante, SLY, EROS
+  (register-command! 'inf-clojure cmd-inf-clojure) (register-command! 'inf-clojure-eval-defun cmd-inf-clojure-eval-defun) (register-command! 'inf-clojure-eval-buffer cmd-inf-clojure-eval-buffer) (register-command! 'dante-mode cmd-dante-mode) (register-command! 'dante-eval-block cmd-dante-eval-block)
+  (register-command! 'dante-type-at cmd-dante-type-at) (register-command! 'lsp-haskell-imports-action cmd-lsp-haskell-imports-action) (register-command! 'sly-compile-file cmd-sly-compile-file) (register-command! 'eros-eval-defun cmd-eros-eval-defun) (register-command! 'purescript-indent cmd-purescript-indent)
+  ;; Round 677: YASnippet ext, Tempel ext, Search ext
+  (register-command! 'yas-insert-snippet cmd-yas-insert-snippet) (register-command! 'yas-new-snippet cmd-yas-new-snippet) (register-command! 'auto-yasnippet cmd-auto-yasnippet) (register-command! 'aya-create cmd-aya-create) (register-command! 'aya-expand cmd-aya-expand)
+  (register-command! 'tempel-region cmd-tempel-region) (register-command! 'tempel-defun cmd-tempel-defun) (register-command! 'tempel-toggle cmd-tempel-toggle) (register-command! 'isearch-mb-mode cmd-isearch-mb-mode) (register-command! 'phi-replace-query cmd-phi-replace-query)
+  ;; Round 678: Proof Assistants
+  (register-command! 'lean-mode cmd-lean-mode) (register-command! 'lean-server-restart cmd-lean-server-restart) (register-command! 'coq-mode cmd-coq-mode) (register-command! 'proof-goto-end-of-locked cmd-proof-goto-end-of-locked) (register-command! 'proof-shell-start cmd-proof-shell-start)
+  (register-command! 'agda-goal-type cmd-agda-goal-type) (register-command! 'tuareg-mode cmd-tuareg-mode) (register-command! 'merlin-mode cmd-merlin-mode) (register-command! 'merlin-document cmd-merlin-document) (register-command! 'utop-eval-buffer cmd-utop-eval-buffer)
+  ;; Round 679: Vundo, Drag-stuff, Anzu ext
+  (register-command! 'vundo cmd-vundo) (register-command! 'vundo-forward cmd-vundo-forward) (register-command! 'vundo-backward cmd-vundo-backward) (register-command! 'vundo-stem-root cmd-vundo-stem-root) (register-command! 'vundo-stem-end cmd-vundo-stem-end)
+  (register-command! 'drag-stuff-up cmd-drag-stuff-up) (register-command! 'drag-stuff-down cmd-drag-stuff-down) (register-command! 'drag-stuff-left cmd-drag-stuff-left) (register-command! 'drag-stuff-right cmd-drag-stuff-right) (register-command! 'anzu-replace-cursor cmd-anzu-replace-cursor)
+  ;; Round 680: Modal editors ext
+  (register-command! 'utop-eval-phrase cmd-utop-eval-phrase) (register-command! 'kakoune-mode cmd-kakoune-mode) (register-command! 'boon-insert-state cmd-boon-insert-state) (register-command! 'objed-mode cmd-objed-mode) (register-command! 'objed-expand cmd-objed-expand)
+  (register-command! 'objed-next-object cmd-objed-next-object) (register-command! 'modalka-mode cmd-modalka-mode) (register-command! 'ryo-modal-mode cmd-ryo-modal-mode) (register-command! 'fingers-mode cmd-fingers-mode) (register-command! 'devil-mode cmd-devil-mode)
 )