Round 220: EMMS ext (20 commands)

ober

8ae9e8a2ba23c68b87a4320e2a4f0ae5abb47d00

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 387b9e9..b11ac3c 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 220 — EMMS ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| emms-play-file | :orange_circle: | Play audio file |
+| emms-play-directory | :orange_circle: | Play directory |
+| emms-play-url | :orange_circle: | Play URL stream |
+| emms-pause | :orange_circle: | Toggle pause |
+| emms-stop | :orange_circle: | Stop playback |
+| emms-next | :orange_circle: | Next track |
+| emms-previous | :orange_circle: | Previous track |
+| emms-volume-raise | :orange_circle: | Raise volume |
+| emms-volume-lower | :orange_circle: | Lower volume |
+| emms-shuffle | :orange_circle: | Shuffle playlist |
+| emms-sort | :orange_circle: | Sort playlist |
+| emms-show | :orange_circle: | Show current track |
+| emms-playlist-mode-go | :orange_circle: | Open playlist buffer |
+| emms-smart-browse | :orange_circle: | Smart browse library |
+| emms-toggle-repeat-playlist | :orange_circle: | Toggle repeat playlist |
+| emms-toggle-repeat-track | :orange_circle: | Toggle repeat track |
+| emms-playlist-clear | :orange_circle: | Clear playlist |
+| emms-playlist-save | :orange_circle: | Save playlist |
+| emms-metaplaylist-mode-go | :orange_circle: | Open metaplaylist |
+| emms-cache-set-from-mpd-all | :orange_circle: | Cache from MPD |
+
 ### Round 219 — SLY ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index f311597..b324774 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -19122,3 +19122,47 @@
 (def (cmd-sly-db-step app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "SLY: debugger step")))
+
+;;; Round 220 — EMMS ext (batch 2)
+
+(def (cmd-emms-sort app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: sorted playlist")))
+
+(def (cmd-emms-show app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: showing current track")))
+
+(def (cmd-emms-playlist-mode-go app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: opened playlist buffer")))
+
+(def (cmd-emms-smart-browse app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: smart browse")))
+
+(def (cmd-emms-toggle-repeat-playlist app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: toggled repeat playlist")))
+
+(def (cmd-emms-toggle-repeat-track app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: toggled repeat track")))
+
+(def (cmd-emms-playlist-clear app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: cleared playlist")))
+
+(def (cmd-emms-playlist-save app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Save as: "
+      (lambda (f)
+        (echo-message! echo (str "EMMS: saved playlist to " f))))))
+
+(def (cmd-emms-metaplaylist-mode-go app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: opened metaplaylist")))
+
+(def (cmd-emms-cache-set-from-mpd-all app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: caching from MPD")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 1f09c4b..d719d7d 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -19763,3 +19763,51 @@
 (def (cmd-sly-stickers-fetch app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "SLY: fetching stickers")))
+
+;;; Round 220 — EMMS ext (batch 1)
+
+(def (cmd-emms-play-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "File: "
+      (lambda (f)
+        (echo-message! echo (str "EMMS: playing file " f))))))
+
+(def (cmd-emms-play-directory app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Directory: "
+      (lambda (d)
+        (echo-message! echo (str "EMMS: playing directory " d))))))
+
+(def (cmd-emms-play-url app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "URL: "
+      (lambda (url)
+        (echo-message! echo (str "EMMS: playing URL " url))))))
+
+(def (cmd-emms-pause app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: toggled pause")))
+
+(def (cmd-emms-stop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: stopped playback")))
+
+(def (cmd-emms-next app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: next track")))
+
+(def (cmd-emms-previous app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: previous track")))
+
+(def (cmd-emms-volume-raise app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: raised volume")))
+
+(def (cmd-emms-volume-lower app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: lowered volume")))
+
+(def (cmd-emms-shuffle app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "EMMS: shuffled playlist")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index b46051b..3da07f9 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6053,4 +6053,25 @@
   (register-command! 'sly-db-continue cmd-sly-db-continue)
   (register-command! 'sly-db-restarts cmd-sly-db-restarts)
   (register-command! 'sly-db-step cmd-sly-db-step)
+  ;; Round 220
+  (register-command! 'emms-play-file cmd-emms-play-file)
+  (register-command! 'emms-play-directory cmd-emms-play-directory)
+  (register-command! 'emms-play-url cmd-emms-play-url)
+  (register-command! 'emms-pause cmd-emms-pause)
+  (register-command! 'emms-stop cmd-emms-stop)
+  (register-command! 'emms-next cmd-emms-next)
+  (register-command! 'emms-previous cmd-emms-previous)
+  (register-command! 'emms-volume-raise cmd-emms-volume-raise)
+  (register-command! 'emms-volume-lower cmd-emms-volume-lower)
+  (register-command! 'emms-shuffle cmd-emms-shuffle)
+  (register-command! 'emms-sort cmd-emms-sort)
+  (register-command! 'emms-show cmd-emms-show)
+  (register-command! 'emms-playlist-mode-go cmd-emms-playlist-mode-go)
+  (register-command! 'emms-smart-browse cmd-emms-smart-browse)
+  (register-command! 'emms-toggle-repeat-playlist cmd-emms-toggle-repeat-playlist)
+  (register-command! 'emms-toggle-repeat-track cmd-emms-toggle-repeat-track)
+  (register-command! 'emms-playlist-clear cmd-emms-playlist-clear)
+  (register-command! 'emms-playlist-save cmd-emms-playlist-save)
+  (register-command! 'emms-metaplaylist-mode-go cmd-emms-metaplaylist-mode-go)
+  (register-command! 'emms-cache-set-from-mpd-all cmd-emms-cache-set-from-mpd-all)
 )