branch: externals/ellama commit b11eecc9f0d31e7947a6c953cfb1682e489597b5 Author: Sergey Kostyaev <sskosty...@gmail.com> Commit: Sergey Kostyaev <sskosty...@gmail.com>
Add session ID display in header and mode lines Added functionality to display the current Ellama session ID in both the header line and the mode line. This includes defining new functions for showing and hiding the session ID, as well as updating these displays when the minor modes are toggled. Also added globalized minor modes for enabling this feature across all buffers. --- ellama.el | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/ellama.el b/ellama.el index 4d086f31a4..aebb55a00c 100644 --- a/ellama.el +++ b/ellama.el @@ -716,6 +716,65 @@ This filter contains only subset of markdown syntax to be good enough." (defvar ellama--current-session-id nil) +(defun ellama-session-line () + "Return current session id line." + (propertize (format "ellama session: %s" ellama--current-session-id) + 'face 'ellama-face)) + +(defun ellama-session-show-header-line () + "Display session id in the header line." + (add-to-list 'header-line-format '(:eval (ellama-session-line)) t)) + +(defun ellama-session-hide-header-line () + "Hide session id from header line." + (setq header-line-format (delete '(:eval (ellama-session-line)) header-line-format))) + +(defun ellama-session-update-header-line () + "Update header line for ellama session header line mode." + (if ellama-session-header-line-mode + (ellama-session-show-header-line) + (ellama-session-hide-header-line))) + +;;;###autoload +(define-minor-mode ellama-session-header-line-mode + "Toggle Ellama Session header line mode." + :group 'ellama + (add-hook 'window-state-change-hook #'ellama-session-update-header-line) + (ellama-session-update-header-line)) + +;;;###autoload +(define-globalized-minor-mode ellama-session-header-line-global-mode + ellama-session-header-line-mode + ellama-session-header-line-mode + :group 'ellama) + +(defun ellama-session-show-mode-line () + "Display session id in the mode line." + (add-to-list 'mode-line-format '(:eval (ellama-session-line)) t)) + +(defun ellama-session-hide-mode-line () + "Hide session id from mode line." + (setq mode-line-format (delete '(:eval (ellama-session-line)) mode-line-format))) + +(defun ellama-session-update-mode-line () + "Update mode line for ellama session mode line mode." + (if ellama-session-mode-line-mode + (ellama-session-show-mode-line) + (ellama-session-hide-mode-line))) + +;;;###autoload +(define-minor-mode ellama-session-mode-line-mode + "Toggle Ellama Session mode line mode." + :group 'ellama + (add-hook 'window-state-change-hook #'ellama-session-update-mode-line) + (ellama-session-update-mode-line)) + +;;;###autoload +(define-globalized-minor-mode ellama-session-mode-line-global-mode + ellama-session-mode-line-mode + ellama-session-mode-line-mode + :group 'ellama) + (defvar ellama--active-sessions (make-hash-table :test #'equal)) (cl-defstruct ellama-session