Round 181: Zig, Odin, Nim, V-lang mode commands

ober

e4f9b7af1bc10d4bf5efa9be7758bd3db5143126

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 1fb743b..90d90a7 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 181 — Zig, Odin, Nim, V-lang modes
+
+| Feature | Status | Notes |
+|---|---|---|
+| zig-build | :orange_circle: | Build Zig project |
+| zig-test | :orange_circle: | Run Zig tests |
+| zig-doc-at-point | :orange_circle: | Show Zig docs at point |
+| odin-mode | :orange_circle: | Toggle Odin mode |
+| odin-build | :orange_circle: | Build Odin project |
+| odin-run | :orange_circle: | Run Odin project |
+| odin-test | :orange_circle: | Run Odin tests |
+| odin-format-buffer | :orange_circle: | Format Odin buffer |
+| odin-doc-at-point | :orange_circle: | Show Odin docs at point |
+| nim-mode | :orange_circle: | Toggle Nim mode |
+| nim-check | :orange_circle: | Check Nim project |
+| nim-suggest | :orange_circle: | Nim code suggestions |
+| nim-format-buffer | :orange_circle: | Format Nim buffer |
+| vlang-mode | :orange_circle: | Toggle V-lang mode |
+| vlang-build | :orange_circle: | Build V-lang project |
+| vlang-run | :orange_circle: | Run V-lang project |
+| vlang-test | :orange_circle: | Run V-lang tests |
+| vlang-format-buffer | :orange_circle: | Format V-lang buffer |
+| vlang-doc | :orange_circle: | Show V-lang documentation |
+| vlang-vet | :orange_circle: | Run V-lang vet linter |
+
 ### Round 180 — Nix, Guix, Bazel, CMake
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 2c9e939..7721dd5 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17259,3 +17259,47 @@
 (def (cmd-cmake-install app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "CMake: installing...")))
+
+;; Round 181 — Zig, Odin, Nim, V-lang modes (batch 2)
+(def (cmd-nim-check app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nim: checking project...")))
+
+(def (cmd-nim-suggest app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nim: fetching suggestions...")))
+
+(def (cmd-nim-format-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Nim: formatted buffer")))
+
+(def (cmd-vlang-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'vlang)
+    (if (mode-enabled? app 'vlang)
+      (echo-message! echo "V-lang mode enabled")
+      (echo-message! echo "V-lang mode disabled"))))
+
+(def (cmd-vlang-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "V-lang: building project...")))
+
+(def (cmd-vlang-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "V-lang: running project...")))
+
+(def (cmd-vlang-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "V-lang: running tests...")))
+
+(def (cmd-vlang-format-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "V-lang: formatted buffer")))
+
+(def (cmd-vlang-doc app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "V-lang: showing documentation")))
+
+(def (cmd-vlang-vet app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "V-lang: running vet linter...")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index d8d6c90..d8e0888 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -17881,3 +17881,50 @@
 (def (cmd-guix-pull app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Guix: pulling latest channel updates...")))
+
+;; Round 181 — Zig, Odin, Nim, V-lang modes (batch 1)
+(def (cmd-zig-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Zig: building project...")))
+
+(def (cmd-zig-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Zig: running tests...")))
+
+(def (cmd-zig-doc-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Zig: showing documentation for symbol at point")))
+
+(def (cmd-odin-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'odin)
+    (if (mode-enabled? app 'odin)
+      (echo-message! echo "Odin mode enabled")
+      (echo-message! echo "Odin mode disabled"))))
+
+(def (cmd-odin-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Odin: building project...")))
+
+(def (cmd-odin-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Odin: running project...")))
+
+(def (cmd-odin-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Odin: running tests...")))
+
+(def (cmd-odin-format-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Odin: formatted buffer")))
+
+(def (cmd-odin-doc-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Odin: showing documentation at point")))
+
+(def (cmd-nim-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'nim)
+    (if (mode-enabled? app 'nim)
+      (echo-message! echo "Nim mode enabled")
+      (echo-message! echo "Nim mode disabled"))))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index 15a4641..e2bb43d 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5234,4 +5234,25 @@
   (register-command! 'cmake-build cmd-cmake-build)
   (register-command! 'cmake-build-current cmd-cmake-build-current)
   (register-command! 'cmake-install cmd-cmake-install)
+  ;; Round 181 — Zig, Odin, Nim, V-lang
+  (register-command! 'zig-build cmd-zig-build)
+  (register-command! 'zig-test cmd-zig-test)
+  (register-command! 'zig-doc-at-point cmd-zig-doc-at-point)
+  (register-command! 'odin-mode cmd-odin-mode)
+  (register-command! 'odin-build cmd-odin-build)
+  (register-command! 'odin-run cmd-odin-run)
+  (register-command! 'odin-test cmd-odin-test)
+  (register-command! 'odin-format-buffer cmd-odin-format-buffer)
+  (register-command! 'odin-doc-at-point cmd-odin-doc-at-point)
+  (register-command! 'nim-mode cmd-nim-mode)
+  (register-command! 'nim-check cmd-nim-check)
+  (register-command! 'nim-suggest cmd-nim-suggest)
+  (register-command! 'nim-format-buffer cmd-nim-format-buffer)
+  (register-command! 'vlang-mode cmd-vlang-mode)
+  (register-command! 'vlang-build cmd-vlang-build)
+  (register-command! 'vlang-run cmd-vlang-run)
+  (register-command! 'vlang-test cmd-vlang-test)
+  (register-command! 'vlang-format-buffer cmd-vlang-format-buffer)
+  (register-command! 'vlang-doc cmd-vlang-doc)
+  (register-command! 'vlang-vet cmd-vlang-vet)
 )