Round 198: ERC-ext, EMMS, Bongo media player commands

ober

1b9208c3a6246b72819dbd60db9c4ec6fd85dc86

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index bf6a795..763ce9b 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 198 — ERC-ext, EMMS, Bongo
+
+| Feature | Status | Notes |
+|---|---|---|
+| erc-track-switch-buffer | :orange_circle: | Switch to tracked ERC buffer |
+| emms-play-playlist | :orange_circle: | Play EMMS playlist |
+| emms-play-directory-tree | :orange_circle: | Play directory tree |
+| emms-toggle-random-playlist | :orange_circle: | Toggle random playlist |
+| emms-seek-forward | :orange_circle: | Seek forward in track |
+| emms-seek-backward | :orange_circle: | Seek backward in track |
+| emms-browser | :orange_circle: | Open EMMS browser |
+| emms-metaplaylist-mode | :orange_circle: | Toggle metaplaylist mode |
+| emms-bookmarks-add | :orange_circle: | Add EMMS bookmark |
+| emms-bookmarks-next | :orange_circle: | Jump to next EMMS bookmark |
+| emms-lyrics-mode | :orange_circle: | Toggle EMMS lyrics mode |
+| emms-tag-editor-edit | :orange_circle: | Edit track tags |
+| emms-streams | :orange_circle: | Show EMMS streams |
+| emms-mark-all | :orange_circle: | Mark all tracks |
+| emms-score-up-playing | :orange_circle: | Score up current track |
+| emms-history-save | :orange_circle: | Save EMMS play history |
+| bongo-start | :orange_circle: | Start Bongo playback |
+| bongo-stop | :orange_circle: | Stop Bongo playback |
+| bongo-pause-resume | :orange_circle: | Toggle Bongo pause/resume |
+| bongo-next | :orange_circle: | Play next Bongo track |
+
 ### Round 197 — Copilot-ext, GPTel-ext, LLM, Aider, Codeium, Sourcegraph, ChatGPT, Whisper
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 20e25d2..a67dca5 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -18084,3 +18084,47 @@
     (echo-read-string echo "Org-AI prompt: "
       (lambda (p)
         (echo-message! echo (str "Org-AI: " p))))))
+
+;; Round 198 — EMMS-ext, Bongo
+(def (cmd-emms-lyrics-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'emms-lyrics)
+    (if (mode-enabled? app 'emms-lyrics)
+      (echo-message! echo "EMMS lyrics mode enabled")
+      (echo-message! echo "EMMS lyrics mode disabled"))))
+
+(def (cmd-emms-tag-editor-edit app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: editing tags")))
+
+(def (cmd-emms-streams app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: showing streams")))
+
+(def (cmd-emms-mark-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: marked all tracks")))
+
+(def (cmd-emms-score-up-playing app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: scored up current track")))
+
+(def (cmd-emms-history-save app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: saved play history")))
+
+(def (cmd-bongo-start app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bongo: started playback")))
+
+(def (cmd-bongo-stop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bongo: stopped playback")))
+
+(def (cmd-bongo-pause-resume app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bongo: toggled pause/resume")))
+
+(def (cmd-bongo-next app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Bongo: playing next track")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 8601ae8..c0fcffe 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -18729,3 +18729,51 @@
     (echo-read-string echo "Architect prompt: "
       (lambda (p)
         (echo-message! echo (str "Aider: architect mode '" p "'"))))))
+
+;; Round 198 — ERC-ext, EMMS
+(def (cmd-erc-track-switch-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ERC: switched to tracked buffer")))
+
+(def (cmd-emms-play-playlist app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Playlist file: "
+      (lambda (f)
+        (echo-message! echo (str "EMMS: playing playlist " f))))))
+
+(def (cmd-emms-play-directory-tree app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Directory: "
+      (lambda (dir)
+        (echo-message! echo (str "EMMS: playing directory tree " dir))))))
+
+(def (cmd-emms-toggle-random-playlist app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: toggled random playlist")))
+
+(def (cmd-emms-seek-forward app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: seeked forward")))
+
+(def (cmd-emms-seek-backward app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: seeked backward")))
+
+(def (cmd-emms-browser app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: opened browser")))
+
+(def (cmd-emms-metaplaylist-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'emms-metaplaylist)
+    (if (mode-enabled? app 'emms-metaplaylist)
+      (echo-message! echo "EMMS metaplaylist mode enabled")
+      (echo-message! echo "EMMS metaplaylist mode disabled"))))
+
+(def (cmd-emms-bookmarks-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: added bookmark at current position")))
+
+(def (cmd-emms-bookmarks-next app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: jumped to next bookmark")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index c16e9f1..955aecc 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5591,4 +5591,25 @@
   (register-command! 'dall-e-shell-prompt cmd-dall-e-shell-prompt)
   (register-command! 'whisper-transcribe cmd-whisper-transcribe)
   (register-command! 'org-ai-prompt cmd-org-ai-prompt)
+  ;; Round 198
+  (register-command! 'erc-track-switch-buffer cmd-erc-track-switch-buffer)
+  (register-command! 'emms-play-playlist cmd-emms-play-playlist)
+  (register-command! 'emms-play-directory-tree cmd-emms-play-directory-tree)
+  (register-command! 'emms-toggle-random-playlist cmd-emms-toggle-random-playlist)
+  (register-command! 'emms-seek-forward cmd-emms-seek-forward)
+  (register-command! 'emms-seek-backward cmd-emms-seek-backward)
+  (register-command! 'emms-browser cmd-emms-browser)
+  (register-command! 'emms-metaplaylist-mode cmd-emms-metaplaylist-mode)
+  (register-command! 'emms-bookmarks-add cmd-emms-bookmarks-add)
+  (register-command! 'emms-bookmarks-next cmd-emms-bookmarks-next)
+  (register-command! 'emms-lyrics-mode cmd-emms-lyrics-mode)
+  (register-command! 'emms-tag-editor-edit cmd-emms-tag-editor-edit)
+  (register-command! 'emms-streams cmd-emms-streams)
+  (register-command! 'emms-mark-all cmd-emms-mark-all)
+  (register-command! 'emms-score-up-playing cmd-emms-score-up-playing)
+  (register-command! 'emms-history-save cmd-emms-history-save)
+  (register-command! 'bongo-start cmd-bongo-start)
+  (register-command! 'bongo-stop cmd-bongo-stop)
+  (register-command! 'bongo-pause-resume cmd-bongo-pause-resume)
+  (register-command! 'bongo-next cmd-bongo-next)
 )