Round 194: Python-ext, Ruby-ext, Perl-ext, Lua-ext, PHP-ext, Haskell-ext, Kotlin-ext commands

ober

13f0b590b59f3584a72f2245e00688f53c50b947

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index 74f0b2d..a70af48 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 194 — Python-ext, Ruby-ext, Perl-ext, Lua-ext, PHP-ext, Haskell-ext, Kotlin-ext, Swift-ext
+
+| Feature | Status | Notes |
+|---|---|---|
+| python-fill-paragraph | :orange_circle: | Fill Python paragraph/docstring |
+| ruby-send-block | :orange_circle: | Send Ruby block to process |
+| ruby-send-definition | :orange_circle: | Send Ruby definition to process |
+| ruby-toggle-block | :orange_circle: | Toggle block style (do/end vs {}) |
+| inf-ruby-console-auto | :orange_circle: | Auto-detect Ruby console type |
+| perl-find-pod | :orange_circle: | Find Perl POD documentation |
+| cperl-find-pod | :orange_circle: | Find CPerl POD documentation |
+| lua-send-defun | :orange_circle: | Send Lua function to process |
+| lua-search-documentation | :orange_circle: | Search Lua documentation |
+| php-send-region | :orange_circle: | Send PHP region to process |
+| php-search-documentation | :orange_circle: | Search PHP documentation |
+| php-current-class | :orange_circle: | Show current PHP class |
+| php-current-namespace | :orange_circle: | Show current PHP namespace |
+| haskell-interactive-mode-return | :orange_circle: | Evaluate in Haskell REPL |
+| haskell-mode-jump-to-def | :orange_circle: | Jump to Haskell definition |
+| haskell-mode-show-type-at | :orange_circle: | Show Haskell type at point |
+| scala-run-main-class | :orange_circle: | Run Scala main class |
+| kotlin-send-region | :orange_circle: | Send Kotlin region to REPL |
+| kotlin-send-line | :orange_circle: | Send Kotlin line to REPL |
+| swift-mode-beginning-of-defun | :orange_circle: | Move to Swift function beginning |
+
 ### Round 193 — Org-babel-ext, Markdown-ext, AUCTeX, TeX-ext
 
 | Feature | Status | Notes |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index b578d66..70ce816 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -17900,3 +17900,46 @@
 (def (cmd-tex-print app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "TeX: sending to printer")))
+
+;; Round 194 — PHP-ext, Haskell-ext, Scala-ext, Kotlin-ext, Swift-ext
+(def (cmd-php-search-documentation app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "PHP docs search: "
+      (lambda (term)
+        (echo-message! echo (str "PHP: searching docs for " term))))))
+
+(def (cmd-php-current-class app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PHP: showing current class")))
+
+(def (cmd-php-current-namespace app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PHP: showing current namespace")))
+
+(def (cmd-haskell-interactive-mode-return app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Haskell: evaluated expression in REPL")))
+
+(def (cmd-haskell-mode-jump-to-def app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Haskell: jumped to definition")))
+
+(def (cmd-haskell-mode-show-type-at app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Haskell: showing type at point")))
+
+(def (cmd-scala-run-main-class app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Scala: running main class")))
+
+(def (cmd-kotlin-send-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Kotlin: sent region to REPL")))
+
+(def (cmd-kotlin-send-line app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Kotlin: sent line to REPL")))
+
+(def (cmd-swift-mode-beginning-of-defun app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Swift: moved to beginning of function")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index e3589c7..6f3d817 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -18519,3 +18519,50 @@
     (echo-read-string echo "TeX macro: "
       (lambda (macro)
         (echo-message! echo (str "AUCTeX: inserted \\" macro))))))
+
+;; Round 194 — Python-ext, Ruby-ext, Perl-ext, Lua-ext, PHP-ext
+(def (cmd-python-fill-paragraph app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Python: filled paragraph/docstring")))
+
+(def (cmd-ruby-send-block app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ruby: sent block to inferior process")))
+
+(def (cmd-ruby-send-definition app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ruby: sent definition to inferior process")))
+
+(def (cmd-ruby-toggle-block app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ruby: toggled block style (do/end vs {})")))
+
+(def (cmd-inf-ruby-console-auto app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "inf-ruby: auto-detected console type")))
+
+(def (cmd-perl-find-pod app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Perl POD topic: "
+      (lambda (topic)
+        (echo-message! echo (str "Perl: showing POD for " topic))))))
+
+(def (cmd-cperl-find-pod app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "CPerl POD topic: "
+      (lambda (topic)
+        (echo-message! echo (str "CPerl: showing POD for " topic))))))
+
+(def (cmd-lua-send-defun app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Lua: sent function definition to process")))
+
+(def (cmd-lua-search-documentation app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Lua documentation search: "
+      (lambda (term)
+        (echo-message! echo (str "Lua: searching docs for " term))))))
+
+(def (cmd-php-send-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "PHP: sent region to process")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index cb9de57..a7f852f 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -5507,4 +5507,25 @@
   (register-command! 'tex-bibtex-file cmd-tex-bibtex-file)
   (register-command! 'tex-view cmd-tex-view)
   (register-command! 'tex-print cmd-tex-print)
+  ;; Round 194
+  (register-command! 'python-fill-paragraph cmd-python-fill-paragraph)
+  (register-command! 'ruby-send-block cmd-ruby-send-block)
+  (register-command! 'ruby-send-definition cmd-ruby-send-definition)
+  (register-command! 'ruby-toggle-block cmd-ruby-toggle-block)
+  (register-command! 'inf-ruby-console-auto cmd-inf-ruby-console-auto)
+  (register-command! 'perl-find-pod cmd-perl-find-pod)
+  (register-command! 'cperl-find-pod cmd-cperl-find-pod)
+  (register-command! 'lua-send-defun cmd-lua-send-defun)
+  (register-command! 'lua-search-documentation cmd-lua-search-documentation)
+  (register-command! 'php-send-region cmd-php-send-region)
+  (register-command! 'php-search-documentation cmd-php-search-documentation)
+  (register-command! 'php-current-class cmd-php-current-class)
+  (register-command! 'php-current-namespace cmd-php-current-namespace)
+  (register-command! 'haskell-interactive-mode-return cmd-haskell-interactive-mode-return)
+  (register-command! 'haskell-mode-jump-to-def cmd-haskell-mode-jump-to-def)
+  (register-command! 'haskell-mode-show-type-at cmd-haskell-mode-show-type-at)
+  (register-command! 'scala-run-main-class cmd-scala-run-main-class)
+  (register-command! 'kotlin-send-region cmd-kotlin-send-region)
+  (register-command! 'kotlin-send-line cmd-kotlin-send-line)
+  (register-command! 'swift-mode-beginning-of-defun cmd-swift-mode-beginning-of-defun)
 )