Round 243: Git ext, Calc ext (20 commands, gerbil-emacs parity)

ober

34ed9a1eaebebfcf9229bb6670e76c4597c5ff2a

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index a195bdd..29e9d4f 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 243 — Git ext, Calc ext (gerbil-emacs parity)
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| git-bisect-start | :orange_circle: | Start git bisect |
+| git-bisect-good | :orange_circle: | Mark commit as good |
+| git-bisect-bad | :orange_circle: | Mark commit as bad |
+| git-bisect-reset | :orange_circle: | Reset git bisect |
+| git-bisect-log | :orange_circle: | Show bisect log |
+| git-diff-buffer | :orange_circle: | Diff current buffer |
+| git-diff-stat | :orange_circle: | Show diff stat |
+| git-shortlog | :orange_circle: | Show git shortlog |
+| git-submodule-status | :orange_circle: | Show submodule status |
+| git-submodule-update | :orange_circle: | Update git submodules |
+| git-timemachine-blame | :orange_circle: | Show blame in timemachine |
+| git-timemachine-copy-hash | :orange_circle: | Copy commit hash |
+| git-timemachine-goto | :orange_circle: | Go to specific revision |
+| git-timemachine-quit | :orange_circle: | Quit timemachine |
+| git-timemachine-show-diff | :orange_circle: | Show diff in timemachine |
+| git-worktree-add | :orange_circle: | Add git worktree |
+| git-worktree-list | :orange_circle: | List git worktrees |
+| git-worktree-remove | :orange_circle: | Remove git worktree |
+| calc-eval-line | :orange_circle: | Evaluate current line in calc |
+| calc-sum-region | :orange_circle: | Sum numbers in region |
+
 ### Round 242 — Org-roam, Artist-mode (gerbil-emacs parity)
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 9bde111..d8220ac 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -20194,3 +20194,50 @@
     (echo-read-string echo "URL format: "
       (lambda (fmt)
         (echo-message! echo (str "Bug reference: URL format set to " fmt))))))
+
+;; Round 243 — Git timemachine, Worktree, Calc, HL-todo (10 in final)
+(def (cmd-git-timemachine-blame app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git timemachine: showing blame")))
+
+(def (cmd-git-timemachine-copy-hash app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git timemachine: copied commit hash")))
+
+(def (cmd-git-timemachine-goto app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Revision: "
+      (lambda (rev)
+        (echo-message! echo (str "Git timemachine: jumped to " rev))))))
+
+(def (cmd-git-timemachine-quit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git timemachine: quit")))
+
+(def (cmd-git-timemachine-show-diff app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git timemachine: showing diff")))
+
+(def (cmd-git-worktree-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Worktree path: "
+      (lambda (path)
+        (echo-message! echo (str "Git: added worktree at " path))))))
+
+(def (cmd-git-worktree-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: listing worktrees")))
+
+(def (cmd-git-worktree-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Remove worktree: "
+      (lambda (path)
+        (echo-message! echo (str "Git: removed worktree " path))))))
+
+(def (cmd-calc-eval-line app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Calc: evaluated current line")))
+
+(def (cmd-calc-sum-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Calc: summed region")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 76a802d..12e12b9 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -20849,3 +20849,44 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Artist: draw line mode")))
 
+;; Round 243 — Git ext, Calc ext, HL-todo ext (10 in modes)
+(def (cmd-git-bisect-start app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: bisect started")))
+
+(def (cmd-git-bisect-good app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: marked current commit as good")))
+
+(def (cmd-git-bisect-bad app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: marked current commit as bad")))
+
+(def (cmd-git-bisect-reset app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: bisect reset")))
+
+(def (cmd-git-bisect-log app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: showing bisect log")))
+
+(def (cmd-git-diff-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: diff of current buffer")))
+
+(def (cmd-git-diff-stat app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: showing diff stat")))
+
+(def (cmd-git-shortlog app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: showing shortlog")))
+
+(def (cmd-git-submodule-status app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: submodule status")))
+
+(def (cmd-git-submodule-update app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Git: updating submodules")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index ac51787..2e2361d 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6536,4 +6536,25 @@
   (register-command! 'bug-reference-list cmd-bug-reference-list)
   (register-command! 'bug-reference-set-project cmd-bug-reference-set-project)
   (register-command! 'bug-reference-set-url-format cmd-bug-reference-set-url-format)
+  ;; Round 243 — Git ext, Calc ext, HL-todo ext
+  (register-command! 'git-bisect-start cmd-git-bisect-start)
+  (register-command! 'git-bisect-good cmd-git-bisect-good)
+  (register-command! 'git-bisect-bad cmd-git-bisect-bad)
+  (register-command! 'git-bisect-reset cmd-git-bisect-reset)
+  (register-command! 'git-bisect-log cmd-git-bisect-log)
+  (register-command! 'git-diff-buffer cmd-git-diff-buffer)
+  (register-command! 'git-diff-stat cmd-git-diff-stat)
+  (register-command! 'git-shortlog cmd-git-shortlog)
+  (register-command! 'git-submodule-status cmd-git-submodule-status)
+  (register-command! 'git-submodule-update cmd-git-submodule-update)
+  (register-command! 'git-timemachine-blame cmd-git-timemachine-blame)
+  (register-command! 'git-timemachine-copy-hash cmd-git-timemachine-copy-hash)
+  (register-command! 'git-timemachine-goto cmd-git-timemachine-goto)
+  (register-command! 'git-timemachine-quit cmd-git-timemachine-quit)
+  (register-command! 'git-timemachine-show-diff cmd-git-timemachine-show-diff)
+  (register-command! 'git-worktree-add cmd-git-worktree-add)
+  (register-command! 'git-worktree-list cmd-git-worktree-list)
+  (register-command! 'git-worktree-remove cmd-git-worktree-remove)
+  (register-command! 'calc-eval-line cmd-calc-eval-line)
+  (register-command! 'calc-sum-region cmd-calc-sum-region)
 )