Mercurial > emacs
changeset 85389:a8bff00271d4
Drew Adams <drew.adams at oracle.com>
(mode-line-minor-mode-keymap): Add mouse-minor-mode-menu on mouse-1.
(mode-line-modes): Add mouse-1 to help-echo text.
(mouse-minor-mode-menu, minor-mode-menu-from-indicator): New functions.
(mode-line-minor-mode-help): Doc fix.
author | Glenn Morris <rgm@gnu.org> |
---|---|
date | Thu, 18 Oct 2007 04:08:30 +0000 |
parents | 819fe755aac3 |
children | 1f7d845d0eef |
files | lisp/bindings.el |
diffstat | 1 files changed, 23 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/bindings.el Thu Oct 18 00:17:38 2007 +0000 +++ b/lisp/bindings.el Thu Oct 18 04:08:30 2007 +0000 @@ -289,6 +289,7 @@ (defvar mode-line-minor-mode-keymap (let ((map (make-sparse-keymap))) + (define-key map [mode-line down-mouse-1] 'mouse-minor-mode-menu) (define-key map [mode-line mouse-2] 'mode-line-minor-mode-help) (define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1) (define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1) @@ -331,7 +332,7 @@ '("" mode-line-process) `(:propertize ("" minor-mode-alist) mouse-face mode-line-highlight - help-echo "mouse-2: minor mode help, mouse-3: toggle minor modes" + help-echo "mouse-1: minor mode, mouse-2: minor mode help, mouse-3: toggle minor modes" local-map ,mode-line-minor-mode-keymap) (propertize "%n" 'help-echo "mouse-2: widen" 'mouse-face 'mode-line-highlight @@ -492,8 +493,28 @@ (interactive "@e") (x-popup-menu event mode-line-mode-menu)) +(defun mouse-minor-mode-menu (event) + "Show minor-mode menu for EVENT on minor modes area of the mode line." + (interactive "@e") + (let ((indicator (car (nth 4 (car (cdr event)))))) + (minor-mode-menu-from-indicator indicator))) + +(defun minor-mode-menu-from-indicator (indicator) + "Show menu, if any, for minor mode specified by INDICATOR. +Interactively, INDICATOR is read using completion." + (interactive (list (completing-read "Minor mode indicator: " + (describe-minor-mode-completion-table-for-indicator)))) + (let ((minor-mode (lookup-minor-mode-from-indicator indicator))) + (if minor-mode + (let* ((map (cdr-safe (assq minor-mode minor-mode-map-alist))) + (menu (and (keymapp map) (lookup-key map [menu-bar])))) + (if menu + (popup-menu menu) + (message "No menu for minor mode `%s'" minor-mode))) + (error "Cannot find minor mode for `%s'" indicator)))) + (defun mode-line-minor-mode-help (event) - "Describe minor mode for EVENT occurred on minor modes area of the mode line." + "Describe minor mode for EVENT on minor modes area of the mode line." (interactive "@e") (let ((indicator (car (nth 4 (car (cdr event)))))) (describe-minor-mode-from-indicator indicator)))