Round 75: copilot-accept/next/previous-completion/dismiss/mode/diagnose, gptel-menu/set-model/set-topic/abort, chatgpt-shell/send-region, ellama-chat/summarize/translate/code-review/code-complete/ask-about/improve-grammar/define-word

ober

9841ec8957bec5dc5db4d1f1360f065af4d60bdc

diff --git a/docs/jemacs-vs-emacs.md b/docs/jemacs-vs-emacs.md
index c99449e..0e394b2 100644
--- a/docs/jemacs-vs-emacs.md
+++ b/docs/jemacs-vs-emacs.md
@@ -2801,6 +2801,31 @@ No remaining Tier 1 gaps. All core editing, completion, and navigation features 
 | sp-select-next-thing | :orange_circle: | Select next thing |
 | sp-select-previous-thing | :orange_circle: | Select previous thing |
 
+### Round 75 — AI Integration (Copilot, GPTel, Ellama)
+
+| Feature | Status | Notes |
+|---|---|---|
+| copilot-accept-completion | :orange_circle: | Accept AI completion |
+| copilot-next-completion | :orange_circle: | Show next completion |
+| copilot-previous-completion | :orange_circle: | Show previous completion |
+| copilot-dismiss | :orange_circle: | Dismiss completion |
+| copilot-mode | :orange_circle: | Toggle Copilot mode |
+| copilot-diagnose | :orange_circle: | Run Copilot diagnostics |
+| gptel-menu | :orange_circle: | GPTel options menu |
+| gptel-set-model | :orange_circle: | Set GPTel model |
+| gptel-set-topic | :orange_circle: | Set conversation topic |
+| gptel-abort | :orange_circle: | Abort GPTel request |
+| chatgpt-shell | :orange_circle: | Open ChatGPT shell |
+| chatgpt-shell-send-region | :orange_circle: | Send region to ChatGPT |
+| ellama-chat | :orange_circle: | Chat with local LLM |
+| ellama-summarize | :orange_circle: | Summarize text |
+| ellama-translate | :orange_circle: | Translate text |
+| ellama-code-review | :orange_circle: | AI code review |
+| ellama-code-complete | :orange_circle: | AI code completion |
+| ellama-ask-about | :orange_circle: | Ask about topic |
+| ellama-improve-grammar | :orange_circle: | Improve grammar |
+| ellama-define-word | :orange_circle: | Define a word |
+
 ---
 
 ## Recommended Development Roadmap
diff --git a/src/jerboa-emacs/editor-extra-final.ss b/src/jerboa-emacs/editor-extra-final.ss
index bffc76d..9e806d1 100644
--- a/src/jerboa-emacs/editor-extra-final.ss
+++ b/src/jerboa-emacs/editor-extra-final.ss
@@ -12104,3 +12104,52 @@
 (def (cmd-sp-select-previous-thing app)
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Smartparens: selected previous thing")))
+
+;; Round 75 — AI integration (batch 2)
+(def (cmd-chatgpt-shell app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ChatGPT Shell: opening conversation")))
+
+(def (cmd-chatgpt-shell-send-region app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "ChatGPT Shell: sent region to AI")))
+
+(def (cmd-ellama-chat app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Ellama chat: "
+      (lambda (msg)
+        (echo-message! echo (str "Ellama: sent '" msg "'"))))))
+
+(def (cmd-ellama-summarize app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: summarizing buffer/region")))
+
+(def (cmd-ellama-translate app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Translate to language: "
+      (lambda (lang)
+        (echo-message! echo (str "Ellama: translating to " lang))))))
+
+(def (cmd-ellama-code-review app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: reviewing code")))
+
+(def (cmd-ellama-code-complete app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: completing code")))
+
+(def (cmd-ellama-ask-about app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Ask about: "
+      (lambda (q)
+        (echo-message! echo (str "Ellama: asking about '" q "'"))))))
+
+(def (cmd-ellama-improve-grammar app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Ellama: improving grammar")))
+
+(def (cmd-ellama-define-word app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "Define word: "
+      (lambda (word)
+        (echo-message! echo (str "Ellama: defining '" word "'"))))))
diff --git a/src/jerboa-emacs/editor-extra-modes.ss b/src/jerboa-emacs/editor-extra-modes.ss
index 444b757..1cd3542 100644
--- a/src/jerboa-emacs/editor-extra-modes.ss
+++ b/src/jerboa-emacs/editor-extra-modes.ss
@@ -12630,3 +12630,51 @@
   (let* ((echo (app-state-echo app)))
     (echo-message! echo "Paredit: joined adjacent sexps")))
 
+;; Round 75 — AI integration (batch 1)
+(def (cmd-copilot-accept-completion app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Copilot: accepted completion")))
+
+(def (cmd-copilot-next-completion app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Copilot: showing next completion")))
+
+(def (cmd-copilot-previous-completion app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Copilot: showing previous completion")))
+
+(def (cmd-copilot-dismiss app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Copilot: dismissed completion")))
+
+(def (cmd-copilot-mode app)
+  (let* ((echo (app-state-echo app)))
+    (toggle-mode! app 'copilot)
+    (if (mode-enabled? app 'copilot)
+      (echo-message! echo "Copilot mode enabled")
+      (echo-message! echo "Copilot mode disabled"))))
+
+(def (cmd-copilot-diagnose app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "Copilot: running diagnostics")))
+
+(def (cmd-gptel-menu app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GPTel: showing menu")))
+
+(def (cmd-gptel-set-model app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "GPTel model: "
+      (lambda (model)
+        (echo-message! echo (str "GPTel: model set to " model))))))
+
+(def (cmd-gptel-set-topic app)
+  (let* ((echo (app-state-echo app)))
+    (echo-read-string echo "GPTel topic: "
+      (lambda (topic)
+        (echo-message! echo (str "GPTel: topic set to '" topic "'"))))))
+
+(def (cmd-gptel-abort app)
+  (let* ((echo (app-state-echo app)))
+    (echo-message! echo "GPTel: aborted current request")))
+
diff --git a/src/jerboa-emacs/editor-extra-regs2.ss b/src/jerboa-emacs/editor-extra-regs2.ss
index ba6f3b9..88518d1 100644
--- a/src/jerboa-emacs/editor-extra-regs2.ss
+++ b/src/jerboa-emacs/editor-extra-regs2.ss
@@ -3012,4 +3012,25 @@
   (register-command! 'sp-backward-sexp cmd-sp-backward-sexp)
   (register-command! 'sp-select-next-thing cmd-sp-select-next-thing)
   (register-command! 'sp-select-previous-thing cmd-sp-select-previous-thing)
+  ;; Round 75
+  (register-command! 'copilot-accept-completion cmd-copilot-accept-completion)
+  (register-command! 'copilot-next-completion cmd-copilot-next-completion)
+  (register-command! 'copilot-previous-completion cmd-copilot-previous-completion)
+  (register-command! 'copilot-dismiss cmd-copilot-dismiss)
+  (register-command! 'copilot-mode cmd-copilot-mode)
+  (register-command! 'copilot-diagnose cmd-copilot-diagnose)
+  (register-command! 'gptel-menu cmd-gptel-menu)
+  (register-command! 'gptel-set-model cmd-gptel-set-model)
+  (register-command! 'gptel-set-topic cmd-gptel-set-topic)
+  (register-command! 'gptel-abort cmd-gptel-abort)
+  (register-command! 'chatgpt-shell cmd-chatgpt-shell)
+  (register-command! 'chatgpt-shell-send-region cmd-chatgpt-shell-send-region)
+  (register-command! 'ellama-chat cmd-ellama-chat)
+  (register-command! 'ellama-summarize cmd-ellama-summarize)
+  (register-command! 'ellama-translate cmd-ellama-translate)
+  (register-command! 'ellama-code-review cmd-ellama-code-review)
+  (register-command! 'ellama-code-complete cmd-ellama-code-complete)
+  (register-command! 'ellama-ask-about cmd-ellama-ask-about)
+  (register-command! 'ellama-improve-grammar cmd-ellama-improve-grammar)
+  (register-command! 'ellama-define-word cmd-ellama-define-word)
 )