branch: externals/ellama
commit fabafcccef0de031f4c6add2bf0d8365257f8c09
Author: Sergey Kostyaev <sskosty...@gmail.com>
Commit: Sergey Kostyaev <sskosty...@gmail.com>

    Add Ellama Context Mode Line Feature
    
    Added new minor mode `ellama-context-mode-line-mode` to display context
    information in the mode line. Also added globalized version of this mode 
and a
    helper function to turn it on for text modes. Added
    `ellama-context-update-mode-line` to manage mode line updates based on the 
new
    mode's state.
---
 ellama.el | 32 ++++++++++++++++++++++++++------
 1 file changed, 26 insertions(+), 6 deletions(-)

diff --git a/ellama.el b/ellama.el
index 2250673ce8..88c15f6e93 100644
--- a/ellama.el
+++ b/ellama.el
@@ -1137,18 +1137,38 @@ If EPHEMERAL non nil new session will not be associated 
with any file."
   ellama-context-header-line-mode
   ellama-context-header-line-mode)
 
-(defun ellama-context-turn-on-header-line-mode ()
-  "Turn on `ellama-context-header-line-mode' if appropriate."
-  (when (or (eq major-mode 'text-mode)
-            (derived-mode-p 'text-mode))
-    (ellama-context-header-line-mode 1)))
-
 (defun ellama-context-update-header-line ()
   "Update and display context information in the header line."
   (if (and ellama-context-header-line-mode ellama--global-context)
       (add-to-list 'header-line-format '(:eval (ellama-context-line)) t)
     (setq header-line-format (delete '(:eval (ellama-context-line)) 
header-line-format))))
 
+;;;###autoload
+(define-minor-mode ellama-context-mode-line-mode
+  "Toggle Ellama Context mode line mode."
+  :group 'ellama
+  (add-hook 'window-state-change-hook #'ellama-context-update-mode-line)
+  (if ellama-context-mode-line-mode
+      (ellama-context-update-mode-line)
+    (setq mode-line-format (delete '(:eval (ellama-context-line)) 
mode-line-format))))
+
+;;;###autoload
+(define-globalized-minor-mode ellama-context-mode-line-global-mode
+  ellama-context-mode-line-mode
+  ellama-context-mode-line-mode)
+
+(defun ellama-context-turn-on-mode-line-mode ()
+  "Turn on `ellama-context-mode-line-mode' if appropriate."
+  (when (or (eq major-mode 'text-mode)
+            (derived-mode-p 'text-mode))
+    (ellama-context-mode-line-mode 1)))
+
+(defun ellama-context-update-mode-line ()
+  "Update and display context information in the mode line."
+  (if (and ellama-context-mode-line-mode ellama--global-context)
+      (add-to-list 'mode-line-format '(:eval (ellama-context-line)) t)
+    (setq mode-line-format (delete '(:eval (ellama-context-line)) 
mode-line-format))))
+
 (cl-defmethod ellama-context-element-add ((element ellama-context-element))
   "Add the ELEMENT to the Ellama context."
   (setf ellama--global-context (nreverse ellama--global-context))

Reply via email to