Round 118: Add 20 DevOps mode commands

ober

0b9fcf158c930198ae504e9c5ba28855fc8edac4

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 34f32c0..460bb24 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -3914,6 +3914,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | markdown-insert-header-atx-3 | :orange_circle: | Insert ### heading |
 | markdown-insert-bold | :orange_circle: | Insert bold markup |
 
+### Round 118 — DevOps Modes (YAML, Docker, Terraform, Ansible)
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| yaml-indent-line | :orange_circle: | Indent YAML line |
+| yaml-fill-paragraph | :orange_circle: | Fill YAML paragraph |
+| dockerfile-build-buffer | :orange_circle: | Build Docker image from buffer |
+| docker-pull | :orange_circle: | Pull Docker image |
+| terraform-format-buffer | :orange_circle: | Format Terraform buffer |
+| terraform-init | :orange_circle: | Initialize Terraform |
+| terraform-apply | :orange_circle: | Apply Terraform changes |
+| ansible-doc | :orange_circle: | Show Ansible module documentation |
+| terraform-destroy | :orange_circle: | Destroy Terraform infrastructure |
+| terraform-output | :orange_circle: | Show Terraform outputs |
+| terraform-state-list | :orange_circle: | List Terraform state resources |
+| ansible-lint | :orange_circle: | Lint Ansible playbook |
+| ansible-playbook-run | :orange_circle: | Run Ansible playbook |
+| ansible-inventory-list | :orange_circle: | List Ansible inventory |
+| docker-run | :orange_circle: | Run Docker container |
+| docker-stop | :orange_circle: | Stop Docker container |
+| docker-restart | :orange_circle: | Restart Docker container |
+| docker-exec | :orange_circle: | Execute in Docker container |
+| docker-inspect | :orange_circle: | Inspect Docker object |
+| docker-kill | :orange_circle: | Kill Docker container |
+
 ---
 
 ## Recommended Development Roadmap
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index d7df454..85504ec 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -14191,3 +14191,59 @@
 (def (cmd-markdown-insert-bold app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Markdown: inserted bold markup")))
+
+;;; ——— Round 118: DevOps modes (batch 2) ———
+
+(def (cmd-terraform-state-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Terraform: listing state resources")))
+
+(def (cmd-ansible-lint app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ansible: linting playbook")))
+
+(def (cmd-ansible-playbook-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Playbook file: "
+      (lambda (file)
+        (echo-message! echo (str "Ansible: running playbook " file))))))
+
+(def (cmd-ansible-inventory-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ansible: listing inventory")))
+
+(def (cmd-docker-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Docker run image: "
+      (lambda (image)
+        (echo-message! echo (str "Docker: running " image))))))
+
+(def (cmd-docker-stop app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Docker stop container: "
+      (lambda (container)
+        (echo-message! echo (str "Docker: stopping " container))))))
+
+(def (cmd-docker-restart app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Docker restart container: "
+      (lambda (container)
+        (echo-message! echo (str "Docker: restarting " container))))))
+
+(def (cmd-docker-exec app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Docker exec in container: "
+      (lambda (container)
+        (echo-message! echo (str "Docker: executing in " container))))))
+
+(def (cmd-docker-inspect app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Docker inspect: "
+      (lambda (target)
+        (echo-message! echo (str "Docker: inspecting " target))))))
+
+(def (cmd-docker-kill app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Docker kill container: "
+      (lambda (container)
+        (echo-message! echo (str "Docker: killed " container))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index b2c2c70..825f5e0 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -14785,3 +14785,51 @@
 (def (cmd-markdown-insert-list-item app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Markdown: inserted list item")))
+
+;;; ——— Round 118: DevOps modes (batch 1) ———
+
+(def (cmd-yaml-indent-line app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "YAML: indented current line")))
+
+(def (cmd-yaml-fill-paragraph app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "YAML: filled current paragraph")))
+
+(def (cmd-dockerfile-build-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Image tag: "
+      (lambda (tag)
+        (echo-message! echo (str "Dockerfile: building image " tag))))))
+
+(def (cmd-docker-pull app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Pull image: "
+      (lambda (image)
+        (echo-message! echo (str "Docker: pulling " image))))))
+
+(def (cmd-terraform-format-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Terraform: formatted current buffer")))
+
+(def (cmd-terraform-init app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Terraform: initializing working directory")))
+
+(def (cmd-terraform-apply app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Terraform: applying changes")))
+
+(def (cmd-ansible-doc app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Ansible module: "
+      (lambda (module)
+        (echo-message! echo (str "Ansible: showing documentation for " module))))))
+
+(def (cmd-terraform-destroy app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Terraform: destroying infrastructure")))
+
+(def (cmd-terraform-output app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Terraform: showing outputs")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 64cbafe..670172d 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -3911,4 +3911,25 @@
   (register-command! 'markdown-outline-next cmd-markdown-outline-next)
   (register-command! 'markdown-insert-header-atx-3 cmd-markdown-insert-header-atx-3)
   (register-command! 'markdown-insert-bold cmd-markdown-insert-bold)
+  ;; Round 118: DevOps modes
+  (register-command! 'yaml-indent-line cmd-yaml-indent-line)
+  (register-command! 'yaml-fill-paragraph cmd-yaml-fill-paragraph)
+  (register-command! 'dockerfile-build-buffer cmd-dockerfile-build-buffer)
+  (register-command! 'docker-pull cmd-docker-pull)
+  (register-command! 'terraform-format-buffer cmd-terraform-format-buffer)
+  (register-command! 'terraform-init cmd-terraform-init)
+  (register-command! 'terraform-apply cmd-terraform-apply)
+  (register-command! 'ansible-doc cmd-ansible-doc)
+  (register-command! 'terraform-destroy cmd-terraform-destroy)
+  (register-command! 'terraform-output cmd-terraform-output)
+  (register-command! 'terraform-state-list cmd-terraform-state-list)
+  (register-command! 'ansible-lint cmd-ansible-lint)
+  (register-command! 'ansible-playbook-run cmd-ansible-playbook-run)
+  (register-command! 'ansible-inventory-list cmd-ansible-inventory-list)
+  (register-command! 'docker-run cmd-docker-run)
+  (register-command! 'docker-stop cmd-docker-stop)
+  (register-command! 'docker-restart cmd-docker-restart)
+  (register-command! 'docker-exec cmd-docker-exec)
+  (register-command! 'docker-inspect cmd-docker-inspect)
+  (register-command! 'docker-kill cmd-docker-kill)
 )