Round 265: Elixir ext, Erlang ext, OCaml ext, F# ext, Scala ext (20 commands)

ober

a30a81acd58f5eb70dad4a448eb00d3e5c4c6fa6

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index ce6d04b..ce63e7a 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 265 — Elixir ext, Erlang ext, OCaml ext, F# ext, Scala ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| elixir-eval-buffer | :orange_circle: | Evaluate Elixir buffer |
+| elixir-eval-region | :orange_circle: | Evaluate Elixir region |
+| elixir-iex | :orange_circle: | Start Elixir IEx shell |
+| elixir-mix-test | :orange_circle: | Run Elixir mix test |
+| elixir-mix-compile | :orange_circle: | Run Elixir mix compile |
+| erlang-man | :orange_circle: | Show Erlang module manual |
+| erlang-find-tag | :orange_circle: | Find Erlang tag at point |
+| erlang-run-tests | :orange_circle: | Run Erlang tests |
+| erlang-edoc | :orange_circle: | Generate Erlang EDoc |
+| ocaml-eval-buffer | :orange_circle: | Evaluate OCaml buffer |
+| ocaml-eval-region | :orange_circle: | Evaluate OCaml region |
+| ocaml-toplevel | :orange_circle: | Start OCaml toplevel |
+| ocaml-type-at-point | :orange_circle: | Show OCaml type at point |
+| fsharp-eval-buffer | :orange_circle: | Evaluate F# buffer |
+| fsharp-eval-region | :orange_circle: | Evaluate F# region |
+| fsharp-repl | :orange_circle: | Start F# REPL |
+| fsharp-compile | :orange_circle: | Compile F# project |
+| scala-eval-buffer | :orange_circle: | Evaluate Scala buffer |
+| scala-eval-region | :orange_circle: | Evaluate Scala region |
+| scala-repl | :orange_circle: | Start Scala REPL |
+
 ### Round 264 — Leiningen ext, Boot ext, Clojure ext, Racket ext, Guile ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index ed2e857..e4122a2 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -21219,4 +21219,46 @@
 
 (def (cmd-guile-compile-file app)
   (let* ((echo (app-state-echo app)))
-    (echo-message! echo "Guile: compiling file")))
\ No newline at end of file
+    (echo-message! echo "Guile: compiling file")))
+
+;;; Round 265 — OCaml ext, F# ext, Scala ext (batch 2)
+
+(def (cmd-ocaml-eval-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "OCaml: evaluating region")))
+
+(def (cmd-ocaml-toplevel app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "OCaml: starting toplevel")))
+
+(def (cmd-ocaml-type-at-point app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "OCaml: showing type at point")))
+
+(def (cmd-fsharp-eval-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "F#: evaluating buffer")))
+
+(def (cmd-fsharp-eval-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "F#: evaluating region")))
+
+(def (cmd-fsharp-repl app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "F#: starting REPL")))
+
+(def (cmd-fsharp-compile app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "F#: compiling project")))
+
+(def (cmd-scala-eval-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Scala: evaluating buffer")))
+
+(def (cmd-scala-eval-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Scala: evaluating region")))
+
+(def (cmd-scala-repl app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Scala: starting REPL")))
\ No newline at end of file
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 4074087..6935c83 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -21838,3 +21838,47 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Clojure: evaluating region")))
 
+;;; Round 265 — Elixir ext, Erlang ext, OCaml ext, F# ext, Scala ext (batch 1)
+
+(def (cmd-elixir-eval-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elixir: evaluating buffer")))
+
+(def (cmd-elixir-eval-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elixir: evaluating region")))
+
+(def (cmd-elixir-iex app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elixir: starting IEx shell")))
+
+(def (cmd-elixir-mix-test app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elixir: running mix test")))
+
+(def (cmd-elixir-mix-compile app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Elixir: running mix compile")))
+
+(def (cmd-erlang-man app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Module: "
+      (lambda (mod)
+        (echo-message! echo (str "Erlang: manual for " mod))))))
+
+(def (cmd-erlang-find-tag app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Erlang: finding tag at point")))
+
+(def (cmd-erlang-run-tests app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Erlang: running tests")))
+
+(def (cmd-erlang-edoc app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Erlang: generating EDoc")))
+
+(def (cmd-ocaml-eval-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "OCaml: evaluating buffer")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index d3dc2a8..ee0b18f 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6982,4 +6982,25 @@
   (register-command! 'guile-repl cmd-guile-repl)
   (register-command! 'guile-load-file cmd-guile-load-file)
   (register-command! 'guile-compile-file cmd-guile-compile-file)
+  ;; Round 265
+  (register-command! 'elixir-eval-buffer cmd-elixir-eval-buffer)
+  (register-command! 'elixir-eval-region cmd-elixir-eval-region)
+  (register-command! 'elixir-iex cmd-elixir-iex)
+  (register-command! 'elixir-mix-test cmd-elixir-mix-test)
+  (register-command! 'elixir-mix-compile cmd-elixir-mix-compile)
+  (register-command! 'erlang-man cmd-erlang-man)
+  (register-command! 'erlang-find-tag cmd-erlang-find-tag)
+  (register-command! 'erlang-run-tests cmd-erlang-run-tests)
+  (register-command! 'erlang-edoc cmd-erlang-edoc)
+  (register-command! 'ocaml-eval-buffer cmd-ocaml-eval-buffer)
+  (register-command! 'ocaml-eval-region cmd-ocaml-eval-region)
+  (register-command! 'ocaml-toplevel cmd-ocaml-toplevel)
+  (register-command! 'ocaml-type-at-point cmd-ocaml-type-at-point)
+  (register-command! 'fsharp-eval-buffer cmd-fsharp-eval-buffer)
+  (register-command! 'fsharp-eval-region cmd-fsharp-eval-region)
+  (register-command! 'fsharp-repl cmd-fsharp-repl)
+  (register-command! 'fsharp-compile cmd-fsharp-compile)
+  (register-command! 'scala-eval-buffer cmd-scala-eval-buffer)
+  (register-command! 'scala-eval-region cmd-scala-eval-region)
+  (register-command! 'scala-repl cmd-scala-repl)
 )