summary refs log tree commit diff
diff options
context:
space:
mode:
authorTerin Stock <terinjokes@gmail.com>2024-02-01 00:54:40 +0100
committerTerin Stock <terinjokes@gmail.com>2024-02-01 00:54:40 +0100
commitacebf76b5b6088358d64d6dfa8f020bfd87e353a (patch)
tree387ee81df01748a173e891004a635bb839832d52
parent16db3bf96a8c738ba9f89e5771e79cb856bbc3a5 (diff)
feat(term/eat): set titles
Set the terminal's title on the modeline and one a created frame.
-rw-r--r--modules/term/eat/autoload.el13
-rw-r--r--modules/term/eat/config.el5
2 files changed, 15 insertions, 3 deletions
diff --git a/modules/term/eat/autoload.el b/modules/term/eat/autoload.el
index d7107e6..1c078b3 100644
--- a/modules/term/eat/autoload.el
+++ b/modules/term/eat/autoload.el
@@ -13,9 +13,9 @@
 
 ;;;###autoload
 (defvar +eat-frame-parameters
-  `((name . "eat")
-    (width . 110)
+  `((width . 110)
     (height . 35)
+    (minibuffer . nil)
     (transient . t)
     ,@(when IS-LINUX
         `((window-system . ,(if (boundp 'pgtk-initialized) 'pgtk 'x))
@@ -35,7 +35,14 @@
       (switch-to-buffer (doom-fallback-buffer))
       (let* ((eat-kill-buffer-on-exit 't)
              (default-directory "~")
-             (eat-mode-hook (cons (lambda () (add-hook 'eat-exit-hook (lambda (_process) (delete-frame)) 91 t)) eat-mode-hook)))
+             (eat-mode-hook (cons (lambda ()
+                                    (add-hook 'eat-exit-hook (lambda (_process) (delete-frame)) 91 t)
+                                    ;; Disabling the modeline causes emacs to stop calling this function.
+                                    ;; Replace with advising eat--t-set-title instead.
+                                    (add-to-list 'mode-line-process '(:eval (when-let* ((eat-terminal)
+                                                                                        (title (eat-term-title eat-terminal)))
+                                                                              (modify-frame-parameters nil `((name . ,title)))
+                                                                              "")))) eat-mode-hook)))
         (eat nil t)))))
 
 ;; These clobber vterm bindings, so will need to pick alternatives.
diff --git a/modules/term/eat/config.el b/modules/term/eat/config.el
index eac9649..2447a47 100644
--- a/modules/term/eat/config.el
+++ b/modules/term/eat/config.el
@@ -2,6 +2,11 @@
 
 (use-package! eat
   :config
+  (add-hook 'eat-mode-hook (lambda ()
+                             (add-to-list 'mode-line-process '(:eval (when-let* ((eat-terminal)
+                                                                                 (title (eat-term-title eat-terminal))
+                                                                                 ((not (string-empty-p title))))
+                                                                       (format "(%s)" (string-replace "%" "%%%%" title)))))))
 
   (when (modulep! :editor evil)
     (evil-set-initial-state 'eat-mode 'emacs)))