branch: externals/bufferlo commit ff607d2f64815cf6c35568dda320fa7621a22603 Author: shipmints <shipmi...@gmail.com> Commit: Florian Rommel <m...@florommel.de>
Add defcustom bufferlo-mode-line setter This allows users to change the mode line dynamically. --- bufferlo.el | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/bufferlo.el b/bufferlo.el index dcd20fdbf7..0ddfd422b6 100644 --- a/bufferlo.el +++ b/bufferlo.el @@ -924,10 +924,27 @@ string, FACE is the face for STR." (list str fbm tbm set-active)) str))))) -(defcustom bufferlo-mode-line '(bufferlo-mode (:eval (bufferlo-mode-line-format))) +(defvar bufferlo-mode-line) + +(defun bufferlo--reset-mode-line () + "Remove the current bufferlo mode line entry." + (setq mode-line-misc-info (delq (assq 'bufferlo-mode mode-line-misc-info) + mode-line-misc-info))) + +(defun bufferlo--set-mode-line () + "Set the current bufferlo mode line entry." + (setq mode-line-misc-info (cons (list 'bufferlo-mode bufferlo-mode-line) + mode-line-misc-info))) + +(defcustom bufferlo-mode-line '(:eval (bufferlo-mode-line-format)) "Bufferlo mode line definition." :package-version '(bufferlo . "1.1") :type 'sexp + :set (lambda (variable value) + (bufferlo--reset-mode-line) ; do before we overwrite the value + (set-default variable value) + (bufferlo--set-mode-line)) + :initialize #'custom-initialize-default :risky t) (defgroup bufferlo-faces nil @@ -1004,7 +1021,7 @@ string, FACE is the face for STR." :init-value nil :lighter nil :keymap bufferlo-mode-map - (setq mode-line-misc-info (delete bufferlo-mode-line mode-line-misc-info)) + (bufferlo--reset-mode-line) (if bufferlo-mode (progn (unless after-init-time @@ -1068,7 +1085,7 @@ string, FACE is the face for STR." (advice-add #'bookmark-rename :around #'bufferlo--bookmark-rename-advice) (advice-add #'bookmark-delete :around #'bufferlo--bookmark-delete-advice) ;; mode line - (setq mode-line-misc-info (cons bufferlo-mode-line mode-line-misc-info))) + (bufferlo--set-mode-line)) ;; Prefer local buffers (dolist (frame (frame-list)) (bufferlo--reset-buffer-predicate frame))