Merge remote-tracking branch 'origin/master' into feature/android
This commit is contained in:
commit
5a3de76532
1 changed files with 35 additions and 13 deletions
|
@ -223,22 +223,44 @@ items `Turn Off' and `Help'."
|
|||
(list (completing-read
|
||||
"Minor mode indicator: "
|
||||
(describe-minor-mode-completion-table-for-indicator))))
|
||||
;; If INDICATOR is a string object and `mode-line-compact' might be
|
||||
;; enabled, look for the word at its position and use that instead.
|
||||
(when (and (consp indicator)
|
||||
window
|
||||
(with-selected-window window
|
||||
mode-line-compact))
|
||||
(with-temp-buffer
|
||||
(insert (car indicator))
|
||||
(goto-char (cdr indicator))
|
||||
(if-let ((thing (thing-at-point 'word)))
|
||||
(setq indicator thing)
|
||||
(setq indicator (car indicator)))))
|
||||
;; 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 window
|
||||
(catch 'found
|
||||
(with-selected-window window
|
||||
(let ((alist minor-mode-alist) string position)
|
||||
(when (and (consp indicator) mode-line-compact)
|
||||
(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 (lookup-minor-mode-from-indicator 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)))
|
||||
(mm-fun (or (get minor-mode :minor-mode-function) minor-mode)))
|
||||
(unless minor-mode (error "Cannot find minor mode for `%s'" indicator))
|
||||
(let* ((map (cdr-safe (assq minor-mode minor-mode-map-alist)))
|
||||
|
|
Loading…
Add table
Reference in a new issue