Round 360: Gleam ext, Roc ext, Haxe ext, Janet ext, Fennel ext (20 commands)

ober

a6127d1793d51581e3b6d85836e2c5967fc10276

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index b281656..e25565d 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 360 — Gleam ext, Roc ext, Haxe ext, Janet ext, Fennel ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| gleam-build | :orange_circle: | Gleam: build project |
+| gleam-test | :orange_circle: | Gleam: run tests |
+| gleam-run | :orange_circle: | Gleam: run project |
+| gleam-add | :orange_circle: | Gleam: add package |
+| roc-build | :orange_circle: | Roc: build file |
+| roc-run | :orange_circle: | Roc: run file |
+| roc-test | :orange_circle: | Roc: run tests |
+| roc-check | :orange_circle: | Roc: check file |
+| haxe-build | :orange_circle: | Haxe: build project |
+| haxe-run | :orange_circle: | Haxe: run project |
+| haxe-test | :orange_circle: | Haxe: run tests |
+| haxe-init | :orange_circle: | Haxe: initialize project |
+| janet-run | :orange_circle: | Janet: run file |
+| janet-build | :orange_circle: | Janet: build project |
+| janet-test | :orange_circle: | Janet: run tests |
+| janet-repl | :orange_circle: | Janet: start REPL |
+| fennel-compile | :orange_circle: | Fennel: compile file |
+| fennel-eval | :orange_circle: | Fennel: evaluate expression |
+| fennel-repl | :orange_circle: | Fennel: start REPL |
+| fennel-lint | :orange_circle: | Fennel: lint file |
+
 ### Round 359 — Poetry ext, UV ext, Rye ext, PDM ext, Hatch ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index a9348ce..12876e0 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -25995,3 +25995,53 @@
 (def (cmd-hatch-env app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Hatch: managing environments")))
+
+;;; Round 360 — Haxe ext, Janet ext, Fennel ext (batch 2)
+
+(def (cmd-haxe-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Haxe: running tests")))
+
+(def (cmd-haxe-init app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Haxe: initializing project")))
+
+(def (cmd-janet-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Janet run file: "
+      (lambda (file)
+        (echo-message! echo (str "Janet: running " file))))))
+
+(def (cmd-janet-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Janet: building project")))
+
+(def (cmd-janet-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Janet: running tests")))
+
+(def (cmd-janet-repl app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Janet: starting REPL")))
+
+(def (cmd-fennel-compile app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Fennel compile file: "
+      (lambda (file)
+        (echo-message! echo (str "Fennel: compiling " file))))))
+
+(def (cmd-fennel-eval app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Fennel eval: "
+      (lambda (expr)
+        (echo-message! echo (str "Fennel: evaluating expression"))))))
+
+(def (cmd-fennel-repl app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Fennel: starting REPL")))
+
+(def (cmd-fennel-lint app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Fennel lint file: "
+      (lambda (file)
+        (echo-message! echo (str "Fennel: linting " file))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 71a719a..c8bdad3 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -26748,3 +26748,53 @@
     (echo-read-string echo "Rye add package: "
       (lambda (pkg)
         (echo-message! echo (str "Rye: adding " pkg))))))
+
+;;; Round 360 — Gleam ext, Roc ext, Haxe ext, Janet ext, Fennel ext (batch 1)
+
+(def (cmd-gleam-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Gleam: building project")))
+
+(def (cmd-gleam-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Gleam: running tests")))
+
+(def (cmd-gleam-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Gleam: running project")))
+
+(def (cmd-gleam-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Gleam add package: "
+      (lambda (pkg)
+        (echo-message! echo (str "Gleam: adding " pkg))))))
+
+(def (cmd-roc-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Roc build file: "
+      (lambda (file)
+        (echo-message! echo (str "Roc: building " file))))))
+
+(def (cmd-roc-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Roc run file: "
+      (lambda (file)
+        (echo-message! echo (str "Roc: running " file))))))
+
+(def (cmd-roc-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Roc: running tests")))
+
+(def (cmd-roc-check app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Roc check file: "
+      (lambda (file)
+        (echo-message! echo (str "Roc: checking " file))))))
+
+(def (cmd-haxe-build app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Haxe: building project")))
+
+(def (cmd-haxe-run app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Haxe: running project")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index bc0fbf4..2150dbf 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -9002,4 +9002,26 @@
   (register-command! 'hatch-test cmd-hatch-test)
   (register-command! 'hatch-version cmd-hatch-version)
   (register-command! 'hatch-env cmd-hatch-env)
+
+  ;; Round 360 — Gleam ext, Roc ext, Haxe ext, Janet ext, Fennel ext
+  (register-command! 'gleam-build cmd-gleam-build)
+  (register-command! 'gleam-test cmd-gleam-test)
+  (register-command! 'gleam-run cmd-gleam-run)
+  (register-command! 'gleam-add cmd-gleam-add)
+  (register-command! 'roc-build cmd-roc-build)
+  (register-command! 'roc-run cmd-roc-run)
+  (register-command! 'roc-test cmd-roc-test)
+  (register-command! 'roc-check cmd-roc-check)
+  (register-command! 'haxe-build cmd-haxe-build)
+  (register-command! 'haxe-run cmd-haxe-run)
+  (register-command! 'haxe-test cmd-haxe-test)
+  (register-command! 'haxe-init cmd-haxe-init)
+  (register-command! 'janet-run cmd-janet-run)
+  (register-command! 'janet-build cmd-janet-build)
+  (register-command! 'janet-test cmd-janet-test)
+  (register-command! 'janet-repl cmd-janet-repl)
+  (register-command! 'fennel-compile cmd-fennel-compile)
+  (register-command! 'fennel-eval cmd-fennel-eval)
+  (register-command! 'fennel-repl cmd-fennel-repl)
+  (register-command! 'fennel-lint cmd-fennel-lint)
 )