Round 215: Docker ext (20 commands)

ober

d536ed4dfb8f845d41eb90724fe0967ca7355e7a

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 6c21f42..d49ba59 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 215 — Docker ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| docker-container-start | :orange_circle: | Start Docker container |
+| docker-container-stop | :orange_circle: | Stop Docker container |
+| docker-container-restart | :orange_circle: | Restart Docker container |
+| docker-container-pause | :orange_circle: | Pause Docker container |
+| docker-container-unpause | :orange_circle: | Unpause Docker container |
+| docker-container-rm | :orange_circle: | Remove Docker container |
+| docker-container-kill | :orange_circle: | Kill Docker container |
+| docker-image-pull | :orange_circle: | Pull Docker image |
+| docker-image-push | :orange_circle: | Push Docker image |
+| docker-image-rm | :orange_circle: | Remove Docker image |
+| docker-volume-create | :orange_circle: | Create Docker volume |
+| docker-volume-rm | :orange_circle: | Remove Docker volume |
+| docker-network-create | :orange_circle: | Create Docker network |
+| docker-network-rm | :orange_circle: | Remove Docker network |
+| docker-compose-restart | :orange_circle: | Restart Compose services |
+| docker-compose-push | :orange_circle: | Push Compose images |
+| docker-compose-stop | :orange_circle: | Stop Compose services |
+| docker-compose-start | :orange_circle: | Start Compose services |
+| docker-compose-rm | :orange_circle: | Remove stopped Compose containers |
+| docker-compose-exec | :orange_circle: | Execute command in Compose service |
+
 ### Round 214 — PDF-tools ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 378a8cc..7ff1401 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -18904,3 +18904,51 @@
     (if (mode-enabled? app 'pdf-continuous-scroll)
       (echo-message! echo "PDF: continuous scroll mode enabled")
       (echo-message! echo "PDF: continuous scroll mode disabled"))))
+
+;;; Round 215 — Docker ext (batch 2)
+
+(def (cmd-docker-volume-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Volume name: "
+      (lambda (name)
+        (echo-message! echo (str "Docker: created volume " name))))))
+
+(def (cmd-docker-volume-rm app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker: removed volume")))
+
+(def (cmd-docker-network-create app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Network name: "
+      (lambda (name)
+        (echo-message! echo (str "Docker: created network " name))))))
+
+(def (cmd-docker-network-rm app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker: removed network")))
+
+(def (cmd-docker-compose-restart app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker Compose: restarting services")))
+
+(def (cmd-docker-compose-push app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker Compose: pushing images")))
+
+(def (cmd-docker-compose-stop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker Compose: stopping services")))
+
+(def (cmd-docker-compose-start app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker Compose: starting services")))
+
+(def (cmd-docker-compose-rm app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker Compose: removed stopped containers")))
+
+(def (cmd-docker-compose-exec app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Service command: "
+      (lambda (cmd)
+        (echo-message! echo (str "Docker Compose: exec " cmd))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 8cdca76..0906b4c 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -19519,3 +19519,53 @@
 (def (cmd-pdf-occur-revert app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "PDF: reverted occur results")))
+
+;;; Round 215 — Docker ext (batch 1)
+
+(def (cmd-docker-container-start app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Container: "
+      (lambda (c)
+        (echo-message! echo (str "Docker: starting container " c))))))
+
+(def (cmd-docker-container-stop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Container: "
+      (lambda (c)
+        (echo-message! echo (str "Docker: stopping container " c))))))
+
+(def (cmd-docker-container-restart app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Container: "
+      (lambda (c)
+        (echo-message! echo (str "Docker: restarting container " c))))))
+
+(def (cmd-docker-container-pause app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker: paused container")))
+
+(def (cmd-docker-container-unpause app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker: unpaused container")))
+
+(def (cmd-docker-container-rm app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker: removed container")))
+
+(def (cmd-docker-container-kill app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker: killed container")))
+
+(def (cmd-docker-image-pull app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Image: "
+      (lambda (img)
+        (echo-message! echo (str "Docker: pulling image " img))))))
+
+(def (cmd-docker-image-push app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker: pushed image")))
+
+(def (cmd-docker-image-rm app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Docker: removed image")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 81bf7ec..d208f87 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5948,4 +5948,25 @@
   (register-command! 'pdf-history-forward cmd-pdf-history-forward)
   (register-command! 'pdf-annot-attachment-dired cmd-pdf-annot-attachment-dired)
   (register-command! 'pdf-view-continuous-scroll-mode cmd-pdf-view-continuous-scroll-mode)
+  ;; Round 215
+  (register-command! 'docker-container-start cmd-docker-container-start)
+  (register-command! 'docker-container-stop cmd-docker-container-stop)
+  (register-command! 'docker-container-restart cmd-docker-container-restart)
+  (register-command! 'docker-container-pause cmd-docker-container-pause)
+  (register-command! 'docker-container-unpause cmd-docker-container-unpause)
+  (register-command! 'docker-container-rm cmd-docker-container-rm)
+  (register-command! 'docker-container-kill cmd-docker-container-kill)
+  (register-command! 'docker-image-pull cmd-docker-image-pull)
+  (register-command! 'docker-image-push cmd-docker-image-push)
+  (register-command! 'docker-image-rm cmd-docker-image-rm)
+  (register-command! 'docker-volume-create cmd-docker-volume-create)
+  (register-command! 'docker-volume-rm cmd-docker-volume-rm)
+  (register-command! 'docker-network-create cmd-docker-network-create)
+  (register-command! 'docker-network-rm cmd-docker-network-rm)
+  (register-command! 'docker-compose-restart cmd-docker-compose-restart)
+  (register-command! 'docker-compose-push cmd-docker-compose-push)
+  (register-command! 'docker-compose-stop cmd-docker-compose-stop)
+  (register-command! 'docker-compose-start cmd-docker-compose-start)
+  (register-command! 'docker-compose-rm cmd-docker-compose-rm)
+  (register-command! 'docker-compose-exec cmd-docker-compose-exec)
 )