Function: describe-minor-mode-from-indicator
describe-minor-mode-from-indicator is an interactive and byte-compiled
function defined in help.el.gz.
Signature
(describe-minor-mode-from-indicator INDICATOR &optional EVENT)
Documentation
Display documentation of a minor mode specified by INDICATOR.
If you call this function interactively, you can give indicator which is currently activated with completion.
If non-nil, EVENT is a mouse event used to establish which minor mode lighter was clicked.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/help.el.gz
(defun describe-minor-mode-from-indicator (indicator &optional event)
"Display documentation of a minor mode specified by INDICATOR.
If you call this function interactively, you can give indicator which
is currently activated with completion.
If non-nil, EVENT is a mouse event used to establish which minor
mode lighter was clicked."
(interactive (list
(completing-read
"Minor mode indicator: "
(describe-minor-mode-completion-table-for-indicator))))
(when (and event mode-line-compact)
(let* ((event-start (event-start event))
(window (posn-window event-start)))
;; If INDICATOR is a string object, WINDOW is set, and
;; `mode-line-compact' might be enabled, find a string in
;; `minor-mode-alist' that is present within the INDICATOR and
;; whose extents within INDICATOR contain the position of the
;; object within the string.
(when (windowp window)
(setq indicator (posn-object event-start))
(catch 'found
(with-selected-window window
(let ((alist minor-mode-alist) string position)
(when (consp indicator)
(with-temp-buffer
(insert (car indicator))
(dolist (menu alist)
;; If this is a valid minor mode menu entry,
(when (and (consp menu)
(setq string (format-mode-line (cadr menu)
nil window))
(> (length string) 0))
;; Start searching for an appearance of (cdr
;; menu).
(goto-char (point-min))
(while (search-forward string nil 0)
;; If the position of the string object is
;; contained within, set indicator to the
;; minor mode in question.
(setq position (1+ (cdr indicator)))
(and (>= position (match-beginning 0))
(<= position (match-end 0))
(setq indicator (car menu))
(throw 'found nil)))))))))))))
;; If INDICATOR is still a cons, use its car.
(when (consp indicator)
(setq indicator (car indicator)))
(let ((minor-mode (if (symbolp indicator)
;; indicator being set to a symbol means that
;; the loop above has already found a
;; matching minor mode.
indicator
(lookup-minor-mode-from-indicator indicator))))
(if minor-mode
(describe-minor-mode-from-symbol minor-mode)
(error "Cannot find minor mode for `%s'" indicator))))