aboutsummaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/ai-term-backend-eat.el20
-rw-r--r--modules/ai-term.el19
2 files changed, 39 insertions, 0 deletions
diff --git a/modules/ai-term-backend-eat.el b/modules/ai-term-backend-eat.el
index 6d512831..82218ca7 100644
--- a/modules/ai-term-backend-eat.el
+++ b/modules/ai-term-backend-eat.el
@@ -25,9 +25,12 @@
(require 'ai-term-sessions)
(declare-function eat "eat" (&optional program arg))
+(declare-function eat-term-set-parameter "eat" (terminal parameter value))
(declare-function cj/ai-term-next "ai-term" ())
(defvar eat-buffer-name)
(defvar eat-semi-char-mode-map)
+(defvar eat-terminal)
+(defvar cj/ai-term-accent-color-indices)
(defun cj/--ai-term-send-string (buffer string)
"Send STRING to BUFFER's terminal process (the agent's shell).
@@ -36,6 +39,22 @@ Sends to the pty directly so the launch command reaches the shell EAT runs."
(when (process-live-p proc)
(process-send-string proc string))))
+(defun cj/--ai-term-apply-accent (buffer)
+ "Point BUFFER's terminal accent palette entries at `cj/ai-term-accent'.
+Repaints each index in `cj/ai-term-accent-color-indices' in this
+terminal's own 256-color palette (eat keeps one per terminal), so the
+agent's accent -- Claude Code's rose banner, borders, spinner -- renders
+in the accent face's color while every other eat terminal keeps the true
+palette. A no-op when BUFFER has no live eat terminal. Takes effect on
+the terminal's next redraw; text already on screen keeps its old color
+until the program repaints it (Claude Code's TUI repaints continuously)."
+ (with-current-buffer buffer
+ (when (bound-and-true-p eat-terminal)
+ (dolist (index cj/ai-term-accent-color-indices)
+ (eat-term-set-parameter eat-terminal
+ (intern (format "color-%d-face" index))
+ 'cj/ai-term-accent)))))
+
(defun cj/--ai-term-show-or-create (dir name)
"Show or create the AI-term buffer for project DIR with buffer NAME.
@@ -76,6 +95,7 @@ buffer."
(eat)))
(let ((buf (get-buffer name)))
(with-current-buffer buf
+ (cj/--ai-term-apply-accent buf)
(cj/--ai-term-send-string
buf (concat (cj/--ai-term-launch-command dir) "\n")))
(display-buffer buf)
diff --git a/modules/ai-term.el b/modules/ai-term.el
index 7973f7aa..0774758e 100644
--- a/modules/ai-term.el
+++ b/modules/ai-term.el
@@ -115,6 +115,25 @@ fallback when `cj/--ai-term-last-size' is nil."
:type 'number
:group 'ai-term)
+(defface cj/ai-term-accent
+ '((t :foreground "#67809c"))
+ "Accent color for agent terminals, defaulting to dupre blue.
+Claude Code draws its accent (the bypass-permissions banner, borders,
+spinner) with xterm-256 palette colors; agent terminals point those
+palette entries at this face (see `cj/ai-term-accent-color-indices'),
+so the accent renders in this face's foreground instead of the stock
+rose red. Per-project colors later land as per-buffer overrides of
+the same palette entries."
+ :group 'ai-term)
+
+(defvar cj/ai-term-accent-color-indices '(211)
+ "The xterm-256 palette indices agent terminals repaint with the accent.
+211 (#ff87af, a rose pink) is Claude Code's accent as rendered through
+the 256-color palette -- confirmed empirically on the bypass-permissions
+banner. Add indices here if other accent elements surface in a
+different palette slot. Applied per terminal by
+`cj/--ai-term-apply-accent'; other eat terminals keep the true palette.")
+
;; Agent buffers ("agent [<project>]") are buried, not killed, by the
;; kill-all sweep (F1 / `cj/dashboard-only'). Register the family pattern so
;; every agent -- however and whenever created -- survives with its session.