Round 801-810: Eat-eshell/Comint, Nushell/Xonsh, Ztree/Ranger, Neotree/Treemacs-icons, Ediff/Emerge, Magit-todos/Git-messenger, SMerge/Ediff-trees, Blamer/Git-timemachine, Hexl, Sly-asdf/Sly-quicklisp (100 commands)

ober

e7f91fe89db48d95c6f4e557554c47f546f1f202

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 9bb1216..68c5bbb 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -7208,6 +7208,156 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | `hydra-repeat` | :orange_circle: | `hydra-repeat` |
 | `hydra-set-property` | :orange_circle: | `hydra-set-property` |
 | `hydra-idle-message` | :orange_circle: | `hydra-idle-message` |
+
+### Round 801: Eat-eshell ext / Comint ext 3
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `eat-eshell-exec-hook` | :orange_circle: | `eat-eshell-exec-hook` |
+| `eat-eshell-visual-command-mode` | :orange_circle: | `eat-eshell-visual-command-mode` |
+| `eat-eshell-mode-map-toggle` | :orange_circle: | `eat-eshell-mode-map-toggle` |
+| `eat-eshell-history` | :orange_circle: | `eat-eshell-history` |
+| `eat-eshell-prompt-function` | :orange_circle: | `eat-eshell-prompt-set` |
+| `comint-dynamic-list-input-ring` | :orange_circle: | `comint-dynamic-list-input-ring` |
+| `comint-kill-input` | :orange_circle: | `comint-kill-input` |
+| `comint-strip-ctrl-m` | :orange_circle: | `comint-strip-ctrl-m` |
+| `comint-clear-buffer` | :orange_circle: | `comint-clear-buffer-on-next-output` |
+| `comint-password-prompt-regexp` | :orange_circle: | `comint-watch-for-password-prompt-hook` |
+
+### Round 802: Nushell / Xonsh (modern shells)
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `nushell-mode` | :orange_circle: | `nushell-mode` |
+| `nushell-send-command` | :orange_circle: | `nushell-send-command` |
+| `nushell-send-region` | :orange_circle: | `nushell-send-region` |
+| `nushell-describe-type` | :orange_circle: | `nushell-describe-type` |
+| `nushell-list-commands` | :orange_circle: | `nushell-list-commands` |
+| `xonsh-mode` | :orange_circle: | `xonsh-mode` |
+| `xonsh-send-command` | :orange_circle: | `xonsh-send-command` |
+| `xonsh-send-region` | :orange_circle: | `xonsh-send-region` |
+| `xonsh-show-history` | :orange_circle: | `xonsh-show-history` |
+| `xonsh-toggle-foreign-aliases` | :orange_circle: | `xonsh-toggle-foreign-aliases` |
+
+### Round 803: Ztree / Ranger-mode
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `ztree-diff` | :orange_circle: | `ztree-diff` |
+| `ztree-dir` | :orange_circle: | `ztree-dir` |
+| `ztree-toggle-expand-subtree` | :orange_circle: | `ztree-toggle-expand` |
+| `ztree-refresh-buffer` | :orange_circle: | `ztree-refresh` |
+| `ztree-diff-partial-rescan` | :orange_circle: | `ztree-hard-diff` |
+| `ranger` | :orange_circle: | `ranger-mode` |
+| `ranger-close` | :orange_circle: | `ranger-close` |
+| `ranger-toggle-dotfiles` | :orange_circle: | `ranger-toggle-dotfiles` |
+| `ranger-show-file-details` | :orange_circle: | `ranger-show-file-details` |
+| `ranger-sort-criteria` | :orange_circle: | `ranger-sort-criteria` |
+
+### Round 804: Neotree ext 2 / Treemacs-icons ext
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `neotree-hidden-file-toggle` | :orange_circle: | `neotree-show-hidden-toggle` |
+| `neotree-select-up-node` | :orange_circle: | `neotree-dir-up` |
+| `neotree-quick-look` | :orange_circle: | `neotree-quick-look` |
+| `neotree-select-window` | :orange_circle: | `neotree-select-window` |
+| `neotree-copy-filepath-to-yank-ring` | :orange_circle: | `neotree-copy-filepath` |
+| `treemacs-icons-dired-mode` | :orange_circle: | `treemacs-icons-dired-enable` |
+| `treemacs-icons-custom-display` | :orange_circle: | `treemacs-icons-display-custom` |
+| `treemacs-icons-user-theme` | :orange_circle: | `treemacs-icons-user-theme` |
+| `treemacs-icons-color` | :orange_circle: | `treemacs-icons-color` |
+| `treemacs-icons-refresh` | :orange_circle: | `treemacs-icons-refresh` |
+
+### Round 805: Ediff ext 2 / Emerge ext
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `ediff-copy-both-to-C` | :orange_circle: | `ediff-copy-both-to-C` |
+| `ediff-revert-buffers-then-recompute-diffs` | :orange_circle: | `ediff-revert-buffers` |
+| `ediff-toggle-help` | :orange_circle: | `ediff-prefer-long-help` |
+| `ediff-make-fine-diffs` | :orange_circle: | `ediff-fine-diff` |
+| `ediff-combine-diffs` | :orange_circle: | `ediff-combine-diffs` |
+| `emerge-files-with-ancestor-command` | :orange_circle: | `emerge-revision` |
+| `emerge-quit` | :orange_circle: | `emerge-quit` |
+| `emerge-select-A` | :orange_circle: | `emerge-select-a` |
+| `emerge-select-B` | :orange_circle: | `emerge-select-b` |
+| `emerge-keep-both` | :orange_circle: | `emerge-keep-both` |
+
+### Round 806: Magit-todos ext 2 / Git-messenger ext 2
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `magit-todos-list` | :orange_circle: | `magit-todos-list-internal` |
+| `magit-todos-jump-to-item` | :orange_circle: | `magit-todos-jump-to-item` |
+| `magit-todos-mode` (toggle) | :orange_circle: | `magit-todos-mode-toggle` |
+| `magit-todos-branch-list` | :orange_circle: | `magit-todos-branch-list` |
+| `magit-todos-section-toggle` | :orange_circle: | `magit-todos-section-toggle` |
+| `git-messenger:copy-message` | :orange_circle: | `git-messenger-copy-message` |
+| `git-messenger:copy-commit-id` | :orange_circle: | `git-messenger-copy-commit-id` |
+| `git-messenger:popup-show-with-magit` | :orange_circle: | `git-messenger-show-with-magit` |
+| `git-messenger:show-parent` | :orange_circle: | `git-messenger-show-parent` |
+| `git-messenger:popup-diff` | :orange_circle: | `git-messenger-toggle-diff` |
+
+### Round 807: SMerge ext 2 / Ediff-trees
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `smerge-keep-upper` | :orange_circle: | `smerge-keep-upper` |
+| `smerge-keep-lower` | :orange_circle: | `smerge-keep-lower` |
+| `smerge-keep-current` | :orange_circle: | `smerge-keep-current` |
+| `smerge-swap` | :orange_circle: | `smerge-swap` |
+| `smerge-diff-base-mine` | :orange_circle: | `smerge-diff-base-mine` |
+| `ediff-directories` | :orange_circle: | `ediff-trees` |
+| `ediff-directories-recursively` | :orange_circle: | `ediff-trees-recursive` |
+| `ediff-directories-ignore` | :orange_circle: | `ediff-trees-ignore-pattern` |
+| `ediff-trees-report` | :orange_circle: | `ediff-trees-report` |
+| `ediff-trees-sync` | :orange_circle: | `ediff-trees-sync` |
+
+### Round 808: Blamer ext 2 / Git-timemachine ext 2
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `blamer-show-commit-info` (toggle) | :orange_circle: | `blamer-toggle-show` |
+| `blamer-copy-commit-hash` | :orange_circle: | `blamer-copy-hash` |
+| `blamer-show-posframe-commit-info` | :orange_circle: | `blamer-show-popup` |
+| `blamer-mode-line-display` | :orange_circle: | `blamer-mode-line` |
+| `blamer-pretty-print` | :orange_circle: | `blamer-pretty-show` |
+| `git-timemachine-show-revision-fuzzy` | :orange_circle: | `git-timemachine-show-revision-fuzzy` |
+| `git-timemachine-show-current-revision` | :orange_circle: | `git-timemachine-show-commit` |
+| `git-timemachine-show-nth-revision` | :orange_circle: | `git-timemachine-show-nth-revision` |
+| `git-timemachine-switch-branch` | :orange_circle: | `git-timemachine-switch-branch` |
+| `git-timemachine-quit` | :orange_circle: | `git-timemachine-quit-and-blame` |
+
+### Round 809: Hexl ext 2
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `hexl-octal-string` | :orange_circle: | `hexl-octal-string` |
+| `hexl-decimal-string` | :orange_circle: | `hexl-decimal-string` |
+| `hexl-hex-string` | :orange_circle: | `hexl-hex-string` |
+| `hexl-insert-octal-char` | :orange_circle: | `hexl-insert-octal-char` |
+| `hexl-insert-hex-char` | :orange_circle: | `hexl-insert-hex-char` |
+| `hexl-ruler-mode` | :orange_circle: | `hexl-mode-ruler` |
+| `hexl-follow-ascii` | :orange_circle: | `hexl-follow-ascii` |
+| `hexl-bits-mode` | :orange_circle: | `hexl-bits-mode` |
+| `hexl-quoted-insert` | :orange_circle: | `hexl-quoted-insert` |
+| `hexl-set-address` | :orange_circle: | `hexl-set-address` |
+
+### Round 810: Sly-asdf / Sly-quicklisp
+
+| Emacs Feature | Status | jemacs Command |
+|---|---|---|
+| `sly-asdf-load-system` | :orange_circle: | `sly-asdf-load-system` |
+| `sly-asdf-browse-system` | :orange_circle: | `sly-asdf-browse-system` |
+| `sly-asdf-compile-system` | :orange_circle: | `sly-asdf-compile-system` |
+| `sly-asdf-test-system` | :orange_circle: | `sly-asdf-test-system` |
+| `sly-asdf-reload-system` | :orange_circle: | `sly-asdf-reload-system` |
+| `sly-quicklisp-quickload` | :orange_circle: | `sly-quicklisp-install` |
+| `sly-quicklisp-update-dist` | :orange_circle: | `sly-quicklisp-update` |
+| `sly-quicklisp-systems` | :orange_circle: | `sly-quicklisp-list` |
+| `sly-quicklisp-system-apropos` | :orange_circle: | `sly-quicklisp-search` |
+| `sly-quicklisp-uninstall-dist` | :orange_circle: | `sly-quicklisp-uninstall` |
 ### 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 175f01e..66cafe9 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -35513,3 +35513,63 @@
 (def (cmd-hydra-repeat app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hydra: repeat")))
 (def (cmd-hydra-set-property app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hydra: set property")))
 (def (cmd-hydra-idle-message app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hydra: idle message")))
+
+;; Round 802: Nushell / Xonsh (modern shells)
+(def (cmd-nushell-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Nushell: mode")))
+(def (cmd-nushell-send-command app) (let* ((echo (app-state-echo app))) (echo-message! echo "Nushell: send command")))
+(def (cmd-nushell-send-region app) (let* ((echo (app-state-echo app))) (echo-message! echo "Nushell: send region")))
+(def (cmd-nushell-describe-type app) (let* ((echo (app-state-echo app))) (echo-message! echo "Nushell: describe type")))
+(def (cmd-nushell-list-commands app) (let* ((echo (app-state-echo app))) (echo-message! echo "Nushell: list commands")))
+(def (cmd-xonsh-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Xonsh: mode")))
+(def (cmd-xonsh-send-command app) (let* ((echo (app-state-echo app))) (echo-message! echo "Xonsh: send command")))
+(def (cmd-xonsh-send-region app) (let* ((echo (app-state-echo app))) (echo-message! echo "Xonsh: send region")))
+(def (cmd-xonsh-show-history app) (let* ((echo (app-state-echo app))) (echo-message! echo "Xonsh: show history")))
+(def (cmd-xonsh-toggle-foreign-aliases app) (let* ((echo (app-state-echo app))) (echo-message! echo "Xonsh: toggle foreign aliases")))
+
+;; Round 804: Neotree ext 2 / Treemacs-icons ext
+(def (cmd-neotree-show-hidden-toggle app) (let* ((echo (app-state-echo app))) (echo-message! echo "Neotree: show hidden toggle")))
+(def (cmd-neotree-dir-up app) (let* ((echo (app-state-echo app))) (echo-message! echo "Neotree: dir up")))
+(def (cmd-neotree-quick-look app) (let* ((echo (app-state-echo app))) (echo-message! echo "Neotree: quick look")))
+(def (cmd-neotree-select-window app) (let* ((echo (app-state-echo app))) (echo-message! echo "Neotree: select window")))
+(def (cmd-neotree-copy-filepath app) (let* ((echo (app-state-echo app))) (echo-message! echo "Neotree: copy filepath")))
+(def (cmd-treemacs-icons-dired-enable app) (let* ((echo (app-state-echo app))) (echo-message! echo "Treemacs-icons: dired enable")))
+(def (cmd-treemacs-icons-display-custom app) (let* ((echo (app-state-echo app))) (echo-message! echo "Treemacs-icons: display custom")))
+(def (cmd-treemacs-icons-user-theme app) (let* ((echo (app-state-echo app))) (echo-message! echo "Treemacs-icons: user theme")))
+(def (cmd-treemacs-icons-color app) (let* ((echo (app-state-echo app))) (echo-message! echo "Treemacs-icons: color")))
+(def (cmd-treemacs-icons-refresh app) (let* ((echo (app-state-echo app))) (echo-message! echo "Treemacs-icons: refresh")))
+
+;; Round 806: Magit-todos ext 2 / Git-messenger ext 2
+(def (cmd-magit-todos-list-internal app) (let* ((echo (app-state-echo app))) (echo-message! echo "Magit-todos: list internal")))
+(def (cmd-magit-todos-jump-to-item app) (let* ((echo (app-state-echo app))) (echo-message! echo "Magit-todos: jump to item")))
+(def (cmd-magit-todos-mode-toggle app) (let* ((echo (app-state-echo app))) (echo-message! echo "Magit-todos: mode toggle")))
+(def (cmd-magit-todos-branch-list app) (let* ((echo (app-state-echo app))) (echo-message! echo "Magit-todos: branch list")))
+(def (cmd-magit-todos-section-toggle app) (let* ((echo (app-state-echo app))) (echo-message! echo "Magit-todos: section toggle")))
+(def (cmd-git-messenger-copy-message app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-messenger: copy message")))
+(def (cmd-git-messenger-copy-commit-id app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-messenger: copy commit ID")))
+(def (cmd-git-messenger-show-with-magit app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-messenger: show with magit")))
+(def (cmd-git-messenger-show-parent app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-messenger: show parent")))
+(def (cmd-git-messenger-toggle-diff app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-messenger: toggle diff")))
+
+;; Round 808: Blamer ext 2 / Git-timemachine ext 2
+(def (cmd-blamer-toggle-show app) (let* ((echo (app-state-echo app))) (echo-message! echo "Blamer: toggle show")))
+(def (cmd-blamer-copy-hash app) (let* ((echo (app-state-echo app))) (echo-message! echo "Blamer: copy hash")))
+(def (cmd-blamer-show-popup app) (let* ((echo (app-state-echo app))) (echo-message! echo "Blamer: show popup")))
+(def (cmd-blamer-mode-line app) (let* ((echo (app-state-echo app))) (echo-message! echo "Blamer: mode line")))
+(def (cmd-blamer-pretty-show app) (let* ((echo (app-state-echo app))) (echo-message! echo "Blamer: pretty show")))
+(def (cmd-git-timemachine-show-revision-fuzzy app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-timemachine: show revision fuzzy")))
+(def (cmd-git-timemachine-show-commit app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-timemachine: show commit")))
+(def (cmd-git-timemachine-show-nth-revision app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-timemachine: show nth revision")))
+(def (cmd-git-timemachine-switch-branch app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-timemachine: switch branch")))
+(def (cmd-git-timemachine-quit-and-blame app) (let* ((echo (app-state-echo app))) (echo-message! echo "Git-timemachine: quit and blame")))
+
+;; Round 810: Sly-asdf / Sly-quicklisp
+(def (cmd-sly-asdf-load-system app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-ASDF: load system")))
+(def (cmd-sly-asdf-browse-system app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-ASDF: browse system")))
+(def (cmd-sly-asdf-compile-system app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-ASDF: compile system")))
+(def (cmd-sly-asdf-test-system app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-ASDF: test system")))
+(def (cmd-sly-asdf-reload-system app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-ASDF: reload system")))
+(def (cmd-sly-quicklisp-install app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-Quicklisp: install")))
+(def (cmd-sly-quicklisp-update app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-Quicklisp: update")))
+(def (cmd-sly-quicklisp-list app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-Quicklisp: list")))
+(def (cmd-sly-quicklisp-search app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-Quicklisp: search")))
+(def (cmd-sly-quicklisp-uninstall app) (let* ((echo (app-state-echo app))) (echo-message! echo "SLY-Quicklisp: uninstall")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 86355e5..33d99a2 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -34737,3 +34737,63 @@
 (def (cmd-speechd-pause app) (let* ((echo (app-state-echo app))) (echo-message! echo "Speechd: pause")))
 (def (cmd-speechd-resume app) (let* ((echo (app-state-echo app))) (echo-message! echo "Speechd: resume")))
 (def (cmd-speechd-set-rate app) (let* ((echo (app-state-echo app))) (echo-message! echo "Speechd: set rate")))
+
+;; Round 801: Eat-eshell ext / Comint ext 3
+(def (cmd-eat-eshell-exec-hook app) (let* ((echo (app-state-echo app))) (echo-message! echo "Eat: eshell exec hook")))
+(def (cmd-eat-eshell-visual-command-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Eat: eshell visual command mode")))
+(def (cmd-eat-eshell-mode-map-toggle app) (let* ((echo (app-state-echo app))) (echo-message! echo "Eat: eshell mode map toggle")))
+(def (cmd-eat-eshell-history app) (let* ((echo (app-state-echo app))) (echo-message! echo "Eat: eshell history")))
+(def (cmd-eat-eshell-prompt-set app) (let* ((echo (app-state-echo app))) (echo-message! echo "Eat: eshell prompt set")))
+(def (cmd-comint-dynamic-list-input-ring app) (let* ((echo (app-state-echo app))) (echo-message! echo "Comint: dynamic list input ring")))
+(def (cmd-comint-kill-input app) (let* ((echo (app-state-echo app))) (echo-message! echo "Comint: kill input")))
+(def (cmd-comint-strip-ctrl-m app) (let* ((echo (app-state-echo app))) (echo-message! echo "Comint: strip ctrl-M")))
+(def (cmd-comint-clear-buffer-on-next-output app) (let* ((echo (app-state-echo app))) (echo-message! echo "Comint: clear buffer on next output")))
+(def (cmd-comint-watch-for-password-prompt-hook app) (let* ((echo (app-state-echo app))) (echo-message! echo "Comint: watch for password prompt hook")))
+
+;; Round 803: Ztree / Ranger-mode
+(def (cmd-ztree-diff app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ztree: diff")))
+(def (cmd-ztree-dir app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ztree: dir")))
+(def (cmd-ztree-toggle-expand app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ztree: toggle expand")))
+(def (cmd-ztree-refresh app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ztree: refresh")))
+(def (cmd-ztree-hard-diff app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ztree: hard diff")))
+(def (cmd-ranger-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ranger: mode")))
+(def (cmd-ranger-close app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ranger: close")))
+(def (cmd-ranger-toggle-dotfiles app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ranger: toggle dotfiles")))
+(def (cmd-ranger-show-file-details app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ranger: show file details")))
+(def (cmd-ranger-sort-criteria app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ranger: sort criteria")))
+
+;; Round 805: Ediff ext 2 / Emerge ext
+(def (cmd-ediff-copy-both-to-C app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff: copy both to C")))
+(def (cmd-ediff-revert-buffers app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff: revert buffers")))
+(def (cmd-ediff-prefer-long-help app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff: prefer long help")))
+(def (cmd-ediff-fine-diff app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff: fine diff")))
+(def (cmd-ediff-combine-diffs app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff: combine diffs")))
+(def (cmd-emerge-revision app) (let* ((echo (app-state-echo app))) (echo-message! echo "Emerge: revision")))
+(def (cmd-emerge-quit app) (let* ((echo (app-state-echo app))) (echo-message! echo "Emerge: quit")))
+(def (cmd-emerge-select-a app) (let* ((echo (app-state-echo app))) (echo-message! echo "Emerge: select A")))
+(def (cmd-emerge-select-b app) (let* ((echo (app-state-echo app))) (echo-message! echo "Emerge: select B")))
+(def (cmd-emerge-keep-both app) (let* ((echo (app-state-echo app))) (echo-message! echo "Emerge: keep both")))
+
+;; Round 807: SMerge ext 2 / Ediff-trees
+(def (cmd-smerge-keep-upper app) (let* ((echo (app-state-echo app))) (echo-message! echo "SMerge: keep upper")))
+(def (cmd-smerge-keep-lower app) (let* ((echo (app-state-echo app))) (echo-message! echo "SMerge: keep lower")))
+(def (cmd-smerge-keep-current app) (let* ((echo (app-state-echo app))) (echo-message! echo "SMerge: keep current")))
+(def (cmd-smerge-swap app) (let* ((echo (app-state-echo app))) (echo-message! echo "SMerge: swap")))
+(def (cmd-smerge-diff-base-mine app) (let* ((echo (app-state-echo app))) (echo-message! echo "SMerge: diff base vs mine")))
+(def (cmd-ediff-trees app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff-trees: compare")))
+(def (cmd-ediff-trees-recursive app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff-trees: recursive")))
+(def (cmd-ediff-trees-ignore-pattern app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff-trees: ignore pattern")))
+(def (cmd-ediff-trees-report app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff-trees: report")))
+(def (cmd-ediff-trees-sync app) (let* ((echo (app-state-echo app))) (echo-message! echo "Ediff-trees: sync")))
+
+;; Round 809: Hexl ext 2
+(def (cmd-hexl-octal-string app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: octal string")))
+(def (cmd-hexl-decimal-string app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: decimal string")))
+(def (cmd-hexl-hex-string app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: hex string")))
+(def (cmd-hexl-insert-octal-char app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: insert octal char")))
+(def (cmd-hexl-insert-hex-char app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: insert hex char")))
+(def (cmd-hexl-mode-ruler app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: mode ruler")))
+(def (cmd-hexl-follow-ascii app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: follow ASCII")))
+(def (cmd-hexl-bits-mode app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: bits mode")))
+(def (cmd-hexl-quoted-insert app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: quoted insert")))
+(def (cmd-hexl-set-address app) (let* ((echo (app-state-echo app))) (echo-message! echo "Hexl: set address")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index c024d14..686da2e 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -13607,4 +13607,35 @@
   ;; Round 800: Transient ext 2 / Hydra ext 2
   (register-command! 'transient-show-help cmd-transient-show-help) (register-command! 'transient-show-common cmd-transient-show-common) (register-command! 'transient-toggle-debug cmd-transient-toggle-debug) (register-command! 'transient-toggle-level-limits cmd-transient-toggle-level-limits) (register-command! 'transient-insert-suffix cmd-transient-insert-suffix)
   (register-command! 'hydra-toggle-body cmd-hydra-toggle-body) (register-command! 'hydra-keyboard-escape cmd-hydra-keyboard-escape) (register-command! 'hydra-repeat cmd-hydra-repeat) (register-command! 'hydra-set-property cmd-hydra-set-property) (register-command! 'hydra-idle-message cmd-hydra-idle-message)
+
+  ;; Round 801: Eat-eshell ext / Comint ext 3
+  (register-command! 'eat-eshell-exec-hook cmd-eat-eshell-exec-hook) (register-command! 'eat-eshell-visual-command-mode cmd-eat-eshell-visual-command-mode) (register-command! 'eat-eshell-mode-map-toggle cmd-eat-eshell-mode-map-toggle) (register-command! 'eat-eshell-history cmd-eat-eshell-history) (register-command! 'eat-eshell-prompt-set cmd-eat-eshell-prompt-set)
+  (register-command! 'comint-dynamic-list-input-ring cmd-comint-dynamic-list-input-ring) (register-command! 'comint-kill-input cmd-comint-kill-input) (register-command! 'comint-strip-ctrl-m cmd-comint-strip-ctrl-m) (register-command! 'comint-clear-buffer-on-next-output cmd-comint-clear-buffer-on-next-output) (register-command! 'comint-watch-for-password-prompt-hook cmd-comint-watch-for-password-prompt-hook)
+  ;; Round 802: Nushell / Xonsh
+  (register-command! 'nushell-mode cmd-nushell-mode) (register-command! 'nushell-send-command cmd-nushell-send-command) (register-command! 'nushell-send-region cmd-nushell-send-region) (register-command! 'nushell-describe-type cmd-nushell-describe-type) (register-command! 'nushell-list-commands cmd-nushell-list-commands)
+  (register-command! 'xonsh-mode cmd-xonsh-mode) (register-command! 'xonsh-send-command cmd-xonsh-send-command) (register-command! 'xonsh-send-region cmd-xonsh-send-region) (register-command! 'xonsh-show-history cmd-xonsh-show-history) (register-command! 'xonsh-toggle-foreign-aliases cmd-xonsh-toggle-foreign-aliases)
+  ;; Round 803: Ztree / Ranger-mode
+  (register-command! 'ztree-diff cmd-ztree-diff) (register-command! 'ztree-dir cmd-ztree-dir) (register-command! 'ztree-toggle-expand cmd-ztree-toggle-expand) (register-command! 'ztree-refresh cmd-ztree-refresh) (register-command! 'ztree-hard-diff cmd-ztree-hard-diff)
+  (register-command! 'ranger-mode cmd-ranger-mode) (register-command! 'ranger-close cmd-ranger-close) (register-command! 'ranger-toggle-dotfiles cmd-ranger-toggle-dotfiles) (register-command! 'ranger-show-file-details cmd-ranger-show-file-details) (register-command! 'ranger-sort-criteria cmd-ranger-sort-criteria)
+  ;; Round 804: Neotree ext 2 / Treemacs-icons ext
+  (register-command! 'neotree-show-hidden-toggle cmd-neotree-show-hidden-toggle) (register-command! 'neotree-dir-up cmd-neotree-dir-up) (register-command! 'neotree-quick-look cmd-neotree-quick-look) (register-command! 'neotree-select-window cmd-neotree-select-window) (register-command! 'neotree-copy-filepath cmd-neotree-copy-filepath)
+  (register-command! 'treemacs-icons-dired-enable cmd-treemacs-icons-dired-enable) (register-command! 'treemacs-icons-display-custom cmd-treemacs-icons-display-custom) (register-command! 'treemacs-icons-user-theme cmd-treemacs-icons-user-theme) (register-command! 'treemacs-icons-color cmd-treemacs-icons-color) (register-command! 'treemacs-icons-refresh cmd-treemacs-icons-refresh)
+  ;; Round 805: Ediff ext 2 / Emerge ext
+  (register-command! 'ediff-copy-both-to-C cmd-ediff-copy-both-to-C) (register-command! 'ediff-revert-buffers cmd-ediff-revert-buffers) (register-command! 'ediff-prefer-long-help cmd-ediff-prefer-long-help) (register-command! 'ediff-fine-diff cmd-ediff-fine-diff) (register-command! 'ediff-combine-diffs cmd-ediff-combine-diffs)
+  (register-command! 'emerge-revision cmd-emerge-revision) (register-command! 'emerge-quit cmd-emerge-quit) (register-command! 'emerge-select-a cmd-emerge-select-a) (register-command! 'emerge-select-b cmd-emerge-select-b) (register-command! 'emerge-keep-both cmd-emerge-keep-both)
+  ;; Round 806: Magit-todos ext 2 / Git-messenger ext 2
+  (register-command! 'magit-todos-list-internal cmd-magit-todos-list-internal) (register-command! 'magit-todos-jump-to-item cmd-magit-todos-jump-to-item) (register-command! 'magit-todos-mode-toggle cmd-magit-todos-mode-toggle) (register-command! 'magit-todos-branch-list cmd-magit-todos-branch-list) (register-command! 'magit-todos-section-toggle cmd-magit-todos-section-toggle)
+  (register-command! 'git-messenger-copy-message cmd-git-messenger-copy-message) (register-command! 'git-messenger-copy-commit-id cmd-git-messenger-copy-commit-id) (register-command! 'git-messenger-show-with-magit cmd-git-messenger-show-with-magit) (register-command! 'git-messenger-show-parent cmd-git-messenger-show-parent) (register-command! 'git-messenger-toggle-diff cmd-git-messenger-toggle-diff)
+  ;; Round 807: SMerge ext 2 / Ediff-trees
+  (register-command! 'smerge-keep-upper cmd-smerge-keep-upper) (register-command! 'smerge-keep-lower cmd-smerge-keep-lower) (register-command! 'smerge-keep-current cmd-smerge-keep-current) (register-command! 'smerge-swap cmd-smerge-swap) (register-command! 'smerge-diff-base-mine cmd-smerge-diff-base-mine)
+  (register-command! 'ediff-trees cmd-ediff-trees) (register-command! 'ediff-trees-recursive cmd-ediff-trees-recursive) (register-command! 'ediff-trees-ignore-pattern cmd-ediff-trees-ignore-pattern) (register-command! 'ediff-trees-report cmd-ediff-trees-report) (register-command! 'ediff-trees-sync cmd-ediff-trees-sync)
+  ;; Round 808: Blamer ext 2 / Git-timemachine ext 2
+  (register-command! 'blamer-toggle-show cmd-blamer-toggle-show) (register-command! 'blamer-copy-hash cmd-blamer-copy-hash) (register-command! 'blamer-show-popup cmd-blamer-show-popup) (register-command! 'blamer-mode-line cmd-blamer-mode-line) (register-command! 'blamer-pretty-show cmd-blamer-pretty-show)
+  (register-command! 'git-timemachine-show-revision-fuzzy cmd-git-timemachine-show-revision-fuzzy) (register-command! 'git-timemachine-show-commit cmd-git-timemachine-show-commit) (register-command! 'git-timemachine-show-nth-revision cmd-git-timemachine-show-nth-revision) (register-command! 'git-timemachine-switch-branch cmd-git-timemachine-switch-branch) (register-command! 'git-timemachine-quit-and-blame cmd-git-timemachine-quit-and-blame)
+  ;; Round 809: Hexl ext 2
+  (register-command! 'hexl-octal-string cmd-hexl-octal-string) (register-command! 'hexl-decimal-string cmd-hexl-decimal-string) (register-command! 'hexl-hex-string cmd-hexl-hex-string) (register-command! 'hexl-insert-octal-char cmd-hexl-insert-octal-char) (register-command! 'hexl-insert-hex-char cmd-hexl-insert-hex-char)
+  (register-command! 'hexl-mode-ruler cmd-hexl-mode-ruler) (register-command! 'hexl-follow-ascii cmd-hexl-follow-ascii) (register-command! 'hexl-bits-mode cmd-hexl-bits-mode) (register-command! 'hexl-quoted-insert cmd-hexl-quoted-insert) (register-command! 'hexl-set-address cmd-hexl-set-address)
+  ;; Round 810: Sly-asdf / Sly-quicklisp
+  (register-command! 'sly-asdf-load-system cmd-sly-asdf-load-system) (register-command! 'sly-asdf-browse-system cmd-sly-asdf-browse-system) (register-command! 'sly-asdf-compile-system cmd-sly-asdf-compile-system) (register-command! 'sly-asdf-test-system cmd-sly-asdf-test-system) (register-command! 'sly-asdf-reload-system cmd-sly-asdf-reload-system)
+  (register-command! 'sly-quicklisp-install cmd-sly-quicklisp-install) (register-command! 'sly-quicklisp-update cmd-sly-quicklisp-update) (register-command! 'sly-quicklisp-list cmd-sly-quicklisp-list) (register-command! 'sly-quicklisp-search cmd-sly-quicklisp-search) (register-command! 'sly-quicklisp-uninstall cmd-sly-quicklisp-uninstall)
 )