Function: mode-line--minor-modes
mode-line--minor-modes is a byte-compiled function defined in
bindings.el.gz.
Signature
(mode-line--minor-modes)
Documentation
Compute mode line constructs for minor mode lighters.
Source Code
;; Defined in /usr/src/emacs/lisp/bindings.el.gz
(defun mode-line--minor-modes ()
"Compute mode line constructs for minor mode lighters."
(let (visible hidden)
(cond
((not mode-line-collapse-minor-modes)
(setq visible minor-mode-alist
hidden nil))
((eq 'not (car-safe mode-line-collapse-minor-modes))
(let ((modes (cdr mode-line-collapse-minor-modes)))
(dolist (item minor-mode-alist)
(if (memq (car item) modes)
(push item visible)
(push item hidden)))
(setq visible (nreverse visible)
hidden (nreverse hidden))))
((listp mode-line-collapse-minor-modes)
(let ((modes mode-line-collapse-minor-modes))
(dolist (item minor-mode-alist)
(if (memq (car item) modes)
(push item hidden)
(push item visible)))
(setq visible (nreverse visible)
hidden (nreverse hidden))))
(t (setq visible nil
hidden minor-mode-alist)))
(list ""
`(:propertize ("" ,visible)
mouse-face mode-line-highlight
help-echo "Minor mode\n\
mouse-1: Display minor mode menu\n\
mouse-2: Show help for minor mode\n\
mouse-3: Toggle minor modes"
local-map ,mode-line-minor-mode-keymap)
(unless (string= "" (format-mode-line `("" ,hidden)))
(let* ((menu
;; FIXME: This is to defer the computation of the
;; menu, but may not play well with touchscreen.
(lambda (e)
(interactive "@e")
(if-let* ((m (mode-line--make-lighter-menu hidden)))
(popup-menu m e)
(message "No menu available"))))
(keymap
(define-keymap
:parent mode-line-minor-mode-keymap
"<mode-line> <down-mouse-1>" menu
"<mode-line> <mouse-2>" #'describe-mode)))
`(:propertize mode-line-collapse-minor-modes-to
mouse-face mode-line-highlight
help-echo "Hidden minor modes\n\
mouse-1: Display hidden minor modes\n\
mouse-2: Show help for enabled minor modes\n\
mouse-3: Toggle minor modes"
local-map ,keymap))))))