Round 224: GPTel ext, Copilot ext, Ellama ext (20 commands)

ober

15acff28c8029e5c3a6f2084dd5de70100400d28

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index b0dfbe1..c04c2da 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 224 — GPTel ext, Copilot ext, Ellama ext
+
+| Command | Status | Description |
+|---------|--------|-------------|
+| gptel-send | :orange_circle: | Send prompt to LLM |
+| gptel-add | :orange_circle: | Add region to context |
+| gptel-add-file | :orange_circle: | Add file to context |
+| gptel-context-add | :orange_circle: | Add context item |
+| gptel-context-remove | :orange_circle: | Remove context item |
+| gptel-org-set-properties | :orange_circle: | Set Org properties for GPTel |
+| copilot-login | :orange_circle: | Log in to Copilot |
+| copilot-logout | :orange_circle: | Log out of Copilot |
+| ellama-improve-wording | :orange_circle: | Improve wording via LLM |
+| ellama-make-list | :orange_circle: | Convert text to list |
+| ellama-make-table | :orange_circle: | Convert text to table |
+| ellama-change-format | :orange_circle: | Change text format |
+| ellama-render | :orange_circle: | Render content |
+| ellama-ask-line | :orange_circle: | Ask about current line |
+| ellama-ask-selection | :orange_circle: | Ask about selection |
+| ellama-generate-commit-message | :orange_circle: | Generate commit message |
+| ellama-provider-select | :orange_circle: | Select LLM provider |
+| ellama-session-switch | :orange_circle: | Switch Ellama session |
+| ellama-session-remove | :orange_circle: | Remove Ellama session |
+| ellama-context-add-buffer | :orange_circle: | Add buffer to context |
+
 ### Round 223 — Eat ext, Vterm ext
 
 | Command | Status | Description |
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index 62c205d..0e0f795 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -19292,3 +19292,47 @@
 (def (cmd-vterm-send-up app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Vterm: sent Up arrow")))
+
+;;; Round 224 — GPTel ext, Copilot ext, Ellama ext (batch 2)
+
+(def (cmd-ellama-make-table app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: making table from text")))
+
+(def (cmd-ellama-change-format app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Format: "
+      (lambda (fmt)
+        (echo-message! echo (str "Ellama: changed format to " fmt))))))
+
+(def (cmd-ellama-render app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: rendered content")))
+
+(def (cmd-ellama-ask-line app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: asking about current line")))
+
+(def (cmd-ellama-ask-selection app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: asking about selection")))
+
+(def (cmd-ellama-generate-commit-message app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: generating commit message")))
+
+(def (cmd-ellama-provider-select app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: selecting provider")))
+
+(def (cmd-ellama-session-switch app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: switching session")))
+
+(def (cmd-ellama-session-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: removed session")))
+
+(def (cmd-ellama-context-add-buffer app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: added buffer to context")))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 36cbf95..4896b69 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -19948,3 +19948,45 @@
 (def (cmd-vterm-send-next app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Vterm: sent Page Down")))
+
+;;; Round 224 — GPTel ext, Copilot ext, Ellama ext (batch 1)
+
+(def (cmd-gptel-send app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GPTel: sent prompt")))
+
+(def (cmd-gptel-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GPTel: added region to context")))
+
+(def (cmd-gptel-add-file app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GPTel: added file to context")))
+
+(def (cmd-gptel-context-add app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GPTel: added context")))
+
+(def (cmd-gptel-context-remove app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GPTel: removed context")))
+
+(def (cmd-gptel-org-set-properties app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GPTel: set Org properties")))
+
+(def (cmd-copilot-login app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Copilot: logging in")))
+
+(def (cmd-copilot-logout app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Copilot: logged out")))
+
+(def (cmd-ellama-improve-wording app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: improving wording")))
+
+(def (cmd-ellama-make-list app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: making list from text")))
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index c2c3cad..71bc445 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -6137,4 +6137,25 @@
   (register-command! 'vterm-yank-pop cmd-vterm-yank-pop)
   (register-command! 'vterm-undo cmd-vterm-undo)
   (register-command! 'vterm-send-up cmd-vterm-send-up)
+  ;; Round 224
+  (register-command! 'gptel-send cmd-gptel-send)
+  (register-command! 'gptel-add cmd-gptel-add)
+  (register-command! 'gptel-add-file cmd-gptel-add-file)
+  (register-command! 'gptel-context-add cmd-gptel-context-add)
+  (register-command! 'gptel-context-remove cmd-gptel-context-remove)
+  (register-command! 'gptel-org-set-properties cmd-gptel-org-set-properties)
+  (register-command! 'copilot-login cmd-copilot-login)
+  (register-command! 'copilot-logout cmd-copilot-logout)
+  (register-command! 'ellama-improve-wording cmd-ellama-improve-wording)
+  (register-command! 'ellama-make-list cmd-ellama-make-list)
+  (register-command! 'ellama-make-table cmd-ellama-make-table)
+  (register-command! 'ellama-change-format cmd-ellama-change-format)
+  (register-command! 'ellama-render cmd-ellama-render)
+  (register-command! 'ellama-ask-line cmd-ellama-ask-line)
+  (register-command! 'ellama-ask-selection cmd-ellama-ask-selection)
+  (register-command! 'ellama-generate-commit-message cmd-ellama-generate-commit-message)
+  (register-command! 'ellama-provider-select cmd-ellama-provider-select)
+  (register-command! 'ellama-session-switch cmd-ellama-session-switch)
+  (register-command! 'ellama-session-remove cmd-ellama-session-remove)
+  (register-command! 'ellama-context-add-buffer cmd-ellama-context-add-buffer)
 )