Round 218: ERC ext, Elfeed ext (20 commands)

ober

41ffb11fa1bd9db81a09a93480b536aa35dddea6

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 6ef4838..57c34c0 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 218 — ERC ext, Elfeed ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| erc-track-list-channels | :orange_circle: | List tracked ERC channels |
+| erc-timestamp-mode | :orange_circle: | Toggle ERC timestamp mode |
+| erc-hl-nicks-mode | :orange_circle: | Toggle ERC highlight nicks |
+| erc-scrolltobottom-mode | :orange_circle: | Toggle ERC scroll-to-bottom |
+| erc-nickbar-mode | :orange_circle: | Toggle ERC nickbar |
+| erc-list | :orange_circle: | List channels on server |
+| erc-status-sidebar-open | :orange_circle: | Open ERC status sidebar |
+| elfeed-search-show-entry | :orange_circle: | Show entry from search |
+| elfeed-show-save-enclosure | :orange_circle: | Save enclosure |
+| elfeed-show-visit | :orange_circle: | Visit entry in browser |
+| elfeed-show-next | :orange_circle: | Show next entry |
+| elfeed-show-prev | :orange_circle: | Show previous entry |
+| elfeed-show-new-live-search | :orange_circle: | New live search from show |
+| elfeed-search-first-entry | :orange_circle: | Jump to first entry |
+| elfeed-search-last-entry | :orange_circle: | Jump to last entry |
+| elfeed-goodies-toggle-header | :orange_circle: | Toggle goodies header |
+| elfeed-tube-fetch | :orange_circle: | Fetch tube content |
+| elfeed-tube-show | :orange_circle: | Show tube content |
+| elfeed-score-enable | :orange_circle: | Enable entry scoring |
+| elfeed-score-print-entry-score | :orange_circle: | Print entry score |
+
 ### Round 217 — Notmuch ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index c7df034..bcce0af 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -19038,3 +19038,45 @@
     (echo-read-string echo "Pipe to: "
       (lambda (cmd)
         (echo-message! echo (str "Notmuch: piped message to " cmd))))))
+
+;;; Round 218 — ERC ext, Elfeed ext (batch 2)
+
+(def (cmd-elfeed-show-next app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: showing next entry")))
+
+(def (cmd-elfeed-show-prev app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: showing previous entry")))
+
+(def (cmd-elfeed-show-new-live-search app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: new live search from show")))
+
+(def (cmd-elfeed-search-first-entry app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: jumped to first entry")))
+
+(def (cmd-elfeed-search-last-entry app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: jumped to last entry")))
+
+(def (cmd-elfeed-goodies-toggle-header app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: toggled goodies header")))
+
+(def (cmd-elfeed-tube-fetch app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: fetching tube content")))
+
+(def (cmd-elfeed-tube-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: showing tube content")))
+
+(def (cmd-elfeed-score-enable app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: scoring enabled")))
+
+(def (cmd-elfeed-score-print-entry-score app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: printing entry score")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 0792eba..4bdd465 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -19663,3 +19663,57 @@
 (def (cmd-notmuch-show-stash-cc app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Notmuch: stashed CC")))
+
+;;; Round 218 — ERC ext, Elfeed ext (batch 1)
+
+(def (cmd-erc-track-list-channels app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ERC: listing tracked channels")))
+
+(def (cmd-erc-timestamp-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-timestamp)
+    (if (mode-enabled? app 'erc-timestamp)
+      (echo-message! echo "ERC: timestamp mode enabled")
+      (echo-message! echo "ERC: timestamp mode disabled"))))
+
+(def (cmd-erc-hl-nicks-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-hl-nicks)
+    (if (mode-enabled? app 'erc-hl-nicks)
+      (echo-message! echo "ERC: highlight nicks mode enabled")
+      (echo-message! echo "ERC: highlight nicks mode disabled"))))
+
+(def (cmd-erc-scrolltobottom-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-scrolltobottom)
+    (if (mode-enabled? app 'erc-scrolltobottom)
+      (echo-message! echo "ERC: scroll-to-bottom mode enabled")
+      (echo-message! echo "ERC: scroll-to-bottom mode disabled"))))
+
+(def (cmd-erc-nickbar-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'erc-nickbar)
+    (if (mode-enabled? app 'erc-nickbar)
+      (echo-message! echo "ERC: nickbar mode enabled")
+      (echo-message! echo "ERC: nickbar mode disabled"))))
+
+(def (cmd-erc-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ERC: listing channels on server")))
+
+(def (cmd-erc-status-sidebar-open app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ERC: opened status sidebar")))
+
+(def (cmd-elfeed-search-show-entry app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: showing entry")))
+
+(def (cmd-elfeed-show-save-enclosure app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: saved enclosure")))
+
+(def (cmd-elfeed-show-visit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elfeed: visiting entry in browser")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 169eb2f..afcb001 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6011,4 +6011,25 @@
   (register-command! 'notmuch-search-stash-thread-id cmd-notmuch-search-stash-thread-id)
   (register-command! 'notmuch-show-next-thread-show cmd-notmuch-show-next-thread-show)
   (register-command! 'notmuch-show-pipe-message cmd-notmuch-show-pipe-message)
+  ;; Round 218
+  (register-command! 'erc-track-list-channels cmd-erc-track-list-channels)
+  (register-command! 'erc-timestamp-mode cmd-erc-timestamp-mode)
+  (register-command! 'erc-hl-nicks-mode cmd-erc-hl-nicks-mode)
+  (register-command! 'erc-scrolltobottom-mode cmd-erc-scrolltobottom-mode)
+  (register-command! 'erc-nickbar-mode cmd-erc-nickbar-mode)
+  (register-command! 'erc-list cmd-erc-list)
+  (register-command! 'erc-status-sidebar-open cmd-erc-status-sidebar-open)
+  (register-command! 'elfeed-search-show-entry cmd-elfeed-search-show-entry)
+  (register-command! 'elfeed-show-save-enclosure cmd-elfeed-show-save-enclosure)
+  (register-command! 'elfeed-show-visit cmd-elfeed-show-visit)
+  (register-command! 'elfeed-show-next cmd-elfeed-show-next)
+  (register-command! 'elfeed-show-prev cmd-elfeed-show-prev)
+  (register-command! 'elfeed-show-new-live-search cmd-elfeed-show-new-live-search)
+  (register-command! 'elfeed-search-first-entry cmd-elfeed-search-first-entry)
+  (register-command! 'elfeed-search-last-entry cmd-elfeed-search-last-entry)
+  (register-command! 'elfeed-goodies-toggle-header cmd-elfeed-goodies-toggle-header)
+  (register-command! 'elfeed-tube-fetch cmd-elfeed-tube-fetch)
+  (register-command! 'elfeed-tube-show cmd-elfeed-tube-show)
+  (register-command! 'elfeed-score-enable cmd-elfeed-score-enable)
+  (register-command! 'elfeed-score-print-entry-score cmd-elfeed-score-print-entry-score)
 )