Round 146: Add 20 ERC extended, Rcirc, SX, Debbugs, Bug-hunter commands

ober

bde3e09888a12724d8e2b29358f48e8d85584618

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 2db5476..7fe4832 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 146 — ERC Extended, Rcirc, SX, Debbugs, Bug-hunter, Misc
+
+| Feature | Status | Notes |
+|---|---|---|
+| `erc-stamp-mode` | :orange_circle: | ERC timestamp mode |
+| `erc-services-mode` | :orange_circle: | NickServ auto-identify |
+| `erc-truncate-mode` | :orange_circle: | Truncate long buffers |
+| `erc-netsplit-mode` | :orange_circle: | Netsplit detection |
+| `erc-ring-mode` | :orange_circle: | Input history ring |
+| `erc-pcomplete-mode` | :orange_circle: | Programmable completion |
+| `erc-move-to-prompt-mode` | :orange_circle: | Auto-move to prompt |
+| `erc-noncommands-mode` | :orange_circle: | Hide non-commands |
+| `erc-readonly-mode` | :orange_circle: | Read-only channel buffers |
+| `erc-irccontrols-mode` | :orange_circle: | IRC control codes |
+| `rcirc-track-minor-mode` | :orange_circle: | Track rcirc activity |
+| `rcirc-multiline-minor-mode` | :orange_circle: | Multiline input |
+| `sx-ask` | :orange_circle: | Ask on Stack Exchange |
+| `sx-inbox` | :orange_circle: | SX inbox notifications |
+| `debbugs-gnu-search` | :orange_circle: | Search GNU bug tracker |
+| `bug-hunter-init-file` | :orange_circle: | Bisect init file |
+| `bug-hunter-file` | :orange_circle: | Bisect arbitrary file |
+| `explain-pause-mode` | :orange_circle: | Profile slow commands |
+| `explain-pause-top` | :orange_circle: | Show top slow commands |
+| `clm-open-command-log-buffer` | :orange_circle: | Open command log buffer |
+
 ### Round 145 — BBDB, Message Mode, Newsticker, SMTP
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index fc1301c..4e8b911 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -15498,3 +15498,74 @@
 (def (cmd-smtpmail-send-queued-mail app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "SMTPmail: sending queued mail")))
+
+;; ============================================================
+;; Round 146 — ERC extended, Rcirc, SX (batch 2)
+;; ============================================================
+
+(def (cmd-erc-netsplit-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-netsplit)
+    (if (mode-enabled? app 'erc-netsplit)
+      (echo-message! echo "ERC netsplit mode enabled")
+      (echo-message! echo "ERC netsplit mode disabled"))))
+
+(def (cmd-erc-ring-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-ring)
+    (if (mode-enabled? app 'erc-ring)
+      (echo-message! echo "ERC ring mode enabled (input history)")
+      (echo-message! echo "ERC ring mode disabled"))))
+
+(def (cmd-erc-pcomplete-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-pcomplete)
+    (if (mode-enabled? app 'erc-pcomplete)
+      (echo-message! echo "ERC pcomplete mode enabled")
+      (echo-message! echo "ERC pcomplete mode disabled"))))
+
+(def (cmd-erc-move-to-prompt-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-move-to-prompt)
+    (if (mode-enabled? app 'erc-move-to-prompt)
+      (echo-message! echo "ERC move-to-prompt mode enabled")
+      (echo-message! echo "ERC move-to-prompt mode disabled"))))
+
+(def (cmd-erc-noncommands-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-noncommands)
+    (if (mode-enabled? app 'erc-noncommands)
+      (echo-message! echo "ERC noncommands mode enabled")
+      (echo-message! echo "ERC noncommands mode disabled"))))
+
+(def (cmd-erc-readonly-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-readonly)
+    (if (mode-enabled? app 'erc-readonly)
+      (echo-message! echo "ERC readonly mode enabled")
+      (echo-message! echo "ERC readonly mode disabled"))))
+
+(def (cmd-erc-irccontrols-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-irccontrols)
+    (if (mode-enabled? app 'erc-irccontrols)
+      (echo-message! echo "ERC IRC controls mode enabled")
+      (echo-message! echo "ERC IRC controls mode disabled"))))
+
+(def (cmd-rcirc-track-minor-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'rcirc-track)
+    (if (mode-enabled? app 'rcirc-track)
+      (echo-message! echo "Rcirc track minor mode enabled")
+      (echo-message! echo "Rcirc track minor mode disabled"))))
+
+(def (cmd-rcirc-multiline-minor-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'rcirc-multiline)
+    (if (mode-enabled? app 'rcirc-multiline)
+      (echo-message! echo "Rcirc multiline minor mode enabled")
+      (echo-message! echo "Rcirc multiline minor mode disabled"))))
+
+(def (cmd-sx-inbox app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "SX: showing inbox notifications")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index f5a1ea6..e2eeeeb 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -16124,3 +16124,65 @@
 (def (cmd-message-send app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Message: sending...")))
+
+;; ============================================================
+;; Round 146 — ERC extended, SX, Debbugs, Bug-hunter, Misc (batch 1)
+;; ============================================================
+
+(def (cmd-erc-stamp-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-stamp)
+    (if (mode-enabled? app 'erc-stamp)
+      (echo-message! echo "ERC stamp mode enabled")
+      (echo-message! echo "ERC stamp mode disabled"))))
+
+(def (cmd-erc-services-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-services)
+    (if (mode-enabled? app 'erc-services)
+      (echo-message! echo "ERC services mode enabled (NickServ auto-identify)")
+      (echo-message! echo "ERC services mode disabled"))))
+
+(def (cmd-erc-truncate-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-truncate)
+    (if (mode-enabled? app 'erc-truncate)
+      (echo-message! echo "ERC truncate mode enabled")
+      (echo-message! echo "ERC truncate mode disabled"))))
+
+(def (cmd-sx-ask app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Ask on Stack Exchange: "
+      (lambda (q)
+        (echo-message! echo (str "SX: composing question '" q "'"))))))
+
+(def (cmd-debbugs-gnu-search app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Search Debbugs: "
+      (lambda (q)
+        (echo-message! echo (str "Debbugs: searching for '" q "'"))))))
+
+(def (cmd-bug-hunter-init-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bug Hunter: bisecting init file for errors")))
+
+(def (cmd-bug-hunter-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File to bisect: "
+      (lambda (f)
+        (echo-message! echo (str "Bug Hunter: bisecting " f))))))
+
+(def (cmd-explain-pause-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'explain-pause)
+    (if (mode-enabled? app 'explain-pause)
+      (echo-message! echo "Explain-pause mode enabled")
+      (echo-message! echo "Explain-pause mode disabled"))))
+
+(def (cmd-explain-pause-top app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Explain-pause: showing top slow commands")))
+
+(def (cmd-clm-open-command-log-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Command Log: opened log buffer")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 9c758bc..a8fa4b3 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -4499,4 +4499,25 @@
   (register-command! 'newsticker-browse-url cmd-newsticker-browse-url)
   (register-command! 'smtp-send-it cmd-smtp-send-it)
   (register-command! 'smtpmail-send-queued-mail cmd-smtpmail-send-queued-mail)
+  ;; Round 146
+  (register-command! 'erc-stamp-mode cmd-erc-stamp-mode)
+  (register-command! 'erc-services-mode cmd-erc-services-mode)
+  (register-command! 'erc-truncate-mode cmd-erc-truncate-mode)
+  (register-command! 'sx-ask cmd-sx-ask)
+  (register-command! 'debbugs-gnu-search cmd-debbugs-gnu-search)
+  (register-command! 'bug-hunter-init-file cmd-bug-hunter-init-file)
+  (register-command! 'bug-hunter-file cmd-bug-hunter-file)
+  (register-command! 'explain-pause-mode cmd-explain-pause-mode)
+  (register-command! 'explain-pause-top cmd-explain-pause-top)
+  (register-command! 'clm-open-command-log-buffer cmd-clm-open-command-log-buffer)
+  (register-command! 'erc-netsplit-mode cmd-erc-netsplit-mode)
+  (register-command! 'erc-ring-mode cmd-erc-ring-mode)
+  (register-command! 'erc-pcomplete-mode cmd-erc-pcomplete-mode)
+  (register-command! 'erc-move-to-prompt-mode cmd-erc-move-to-prompt-mode)
+  (register-command! 'erc-noncommands-mode cmd-erc-noncommands-mode)
+  (register-command! 'erc-readonly-mode cmd-erc-readonly-mode)
+  (register-command! 'erc-irccontrols-mode cmd-erc-irccontrols-mode)
+  (register-command! 'rcirc-track-minor-mode cmd-rcirc-track-minor-mode)
+  (register-command! 'rcirc-multiline-minor-mode cmd-rcirc-multiline-minor-mode)
+  (register-command! 'sx-inbox cmd-sx-inbox)
 )