Round 212: Evil extensions (20 commands)

ober

238b296bfadf3644227d7b12ac0dada768955a9b

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 52b1259..c24ba6e 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 212 — Evil extensions
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| evil-collection-translate-key | :orange_circle: | Translate key in evil collection |
+| evil-collection-swap-key | :orange_circle: | Swap keys in evil collection |
+| evil-surround-edit | :orange_circle: | Edit surround pair |
+| evil-commentary-yank-line | :orange_circle: | Yank and comment line |
+| evil-matchit-jump | :orange_circle: | Jump to matching item |
+| evil-matchit-jump-items | :orange_circle: | Jump between matching items |
+| evil-numbers-increase | :orange_circle: | Increase number at point |
+| evil-numbers-decrease | :orange_circle: | Decrease number at point |
+| evil-owl-goto-char | :orange_circle: | Owl goto char with hints |
+| evil-owl-goto-char-2 | :orange_circle: | Owl goto 2-char with hints |
+| evil-textobj-tree-sitter-goto-node | :orange_circle: | Goto tree-sitter node |
+| evil-textobj-tree-sitter-select-node | :orange_circle: | Select tree-sitter node |
+| evil-args-forward | :orange_circle: | Move to next argument |
+| evil-args-backward | :orange_circle: | Move to previous argument |
+| evil-args-insert | :orange_circle: | Insert argument |
+| evil-args-delete | :orange_circle: | Delete argument |
+| evil-indent-plus-indent | :orange_circle: | Indent at same level |
+| evil-indent-plus-indent-up | :orange_circle: | Indent at upper level |
+| evil-quick-diff | :orange_circle: | Start quick diff |
+| evil-quick-diff-cancel | :orange_circle: | Cancel quick diff |
+
 ### Round 211 — Treemacs ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index e2b218b..e5e97b8 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -18772,3 +18772,45 @@
 (def (cmd-treemacs-finish-edit app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Treemacs: finished workspace edit")))
+
+;;; Round 212 — Evil extensions (batch 2)
+
+(def (cmd-evil-textobj-tree-sitter-goto-node app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: goto tree-sitter node")))
+
+(def (cmd-evil-textobj-tree-sitter-select-node app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: selected tree-sitter node")))
+
+(def (cmd-evil-args-forward app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: moved to next argument")))
+
+(def (cmd-evil-args-backward app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: moved to previous argument")))
+
+(def (cmd-evil-args-insert app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: inserting argument")))
+
+(def (cmd-evil-args-delete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: deleted argument")))
+
+(def (cmd-evil-indent-plus-indent app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: indented at same level")))
+
+(def (cmd-evil-indent-plus-indent-up app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: indented at upper level")))
+
+(def (cmd-evil-quick-diff app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: started quick diff")))
+
+(def (cmd-evil-quick-diff-cancel app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: cancelled quick diff")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 4b6090c..f1fdbfa 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -19381,3 +19381,53 @@
     (if (mode-enabled? app 'treemacs-gap-between-roots)
       (echo-message! echo "Treemacs: gap between roots enabled")
       (echo-message! echo "Treemacs: gap between roots disabled"))))
+
+;;; Round 212 — Evil extensions (batch 1)
+
+(def (cmd-evil-collection-translate-key app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Translate key: "
+      (lambda (key)
+        (echo-message! echo (str "Evil: translated key " key))))))
+
+(def (cmd-evil-collection-swap-key app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Swap key: "
+      (lambda (key)
+        (echo-message! echo (str "Evil: swapped key " key))))))
+
+(def (cmd-evil-surround-edit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: editing surround")))
+
+(def (cmd-evil-commentary-yank-line app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: yanked and commented line")))
+
+(def (cmd-evil-matchit-jump app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: jumped to matching item")))
+
+(def (cmd-evil-matchit-jump-items app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: jumped between matching items")))
+
+(def (cmd-evil-numbers-increase app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: increased number at point")))
+
+(def (cmd-evil-numbers-decrease app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Evil: decreased number at point")))
+
+(def (cmd-evil-owl-goto-char app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Char: "
+      (lambda (ch)
+        (echo-message! echo (str "Evil: owl goto char " ch))))))
+
+(def (cmd-evil-owl-goto-char-2 app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Chars: "
+      (lambda (chs)
+        (echo-message! echo (str "Evil: owl goto 2-char " chs))))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 7ff61fc..568f330 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5885,4 +5885,25 @@
   (register-command! 'treemacs-previous-workspace cmd-treemacs-previous-workspace)
   (register-command! 'treemacs-remove-workspace cmd-treemacs-remove-workspace)
   (register-command! 'treemacs-finish-edit cmd-treemacs-finish-edit)
+  ;; Round 212
+  (register-command! 'evil-collection-translate-key cmd-evil-collection-translate-key)
+  (register-command! 'evil-collection-swap-key cmd-evil-collection-swap-key)
+  (register-command! 'evil-surround-edit cmd-evil-surround-edit)
+  (register-command! 'evil-commentary-yank-line cmd-evil-commentary-yank-line)
+  (register-command! 'evil-matchit-jump cmd-evil-matchit-jump)
+  (register-command! 'evil-matchit-jump-items cmd-evil-matchit-jump-items)
+  (register-command! 'evil-numbers-increase cmd-evil-numbers-increase)
+  (register-command! 'evil-numbers-decrease cmd-evil-numbers-decrease)
+  (register-command! 'evil-owl-goto-char cmd-evil-owl-goto-char)
+  (register-command! 'evil-owl-goto-char-2 cmd-evil-owl-goto-char-2)
+  (register-command! 'evil-textobj-tree-sitter-goto-node cmd-evil-textobj-tree-sitter-goto-node)
+  (register-command! 'evil-textobj-tree-sitter-select-node cmd-evil-textobj-tree-sitter-select-node)
+  (register-command! 'evil-args-forward cmd-evil-args-forward)
+  (register-command! 'evil-args-backward cmd-evil-args-backward)
+  (register-command! 'evil-args-insert cmd-evil-args-insert)
+  (register-command! 'evil-args-delete cmd-evil-args-delete)
+  (register-command! 'evil-indent-plus-indent cmd-evil-indent-plus-indent)
+  (register-command! 'evil-indent-plus-indent-up cmd-evil-indent-plus-indent-up)
+  (register-command! 'evil-quick-diff cmd-evil-quick-diff)
+  (register-command! 'evil-quick-diff-cancel cmd-evil-quick-diff-cancel)
 )