branch: externals/bufferlo
commit ff607d2f64815cf6c35568dda320fa7621a22603
Author: shipmints <[email protected]>
Commit: Florian Rommel <[email protected]>
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))