comparison lisp/mouse.el @ 105048:1eb4a432a8ae

(minor-mode-menu-from-indicator): Pay attention to :minor-mode-function (bug#4455).
author Stefan Monnier <monnier@iro.umontreal.ca>
date Thu, 17 Sep 2009 01:32:56 +0000
parents 6d93a06037ee
children bd2966850aac
comparison
equal deleted inserted replaced
105047:c65e464f3acc 105048:1eb4a432a8ae
156 items `Turn Off' and `Help'." 156 items `Turn Off' and `Help'."
157 (interactive 157 (interactive
158 (list (completing-read 158 (list (completing-read
159 "Minor mode indicator: " 159 "Minor mode indicator: "
160 (describe-minor-mode-completion-table-for-indicator)))) 160 (describe-minor-mode-completion-table-for-indicator))))
161 (let ((minor-mode (lookup-minor-mode-from-indicator indicator))) 161 (let* ((minor-mode (lookup-minor-mode-from-indicator indicator))
162 (mm-fun (or (get minor-mode :minor-mode-function) minor-mode)))
162 (unless minor-mode (error "Cannot find minor mode for `%s'" indicator)) 163 (unless minor-mode (error "Cannot find minor mode for `%s'" indicator))
163 (let* ((map (cdr-safe (assq minor-mode minor-mode-map-alist))) 164 (let* ((map (cdr-safe (assq minor-mode minor-mode-map-alist)))
164 (menu (and (keymapp map) (lookup-key map [menu-bar])))) 165 (menu (and (keymapp map) (lookup-key map [menu-bar]))))
165 (setq menu 166 (setq menu
166 (if menu 167 (if menu
167 (mouse-menu-non-singleton menu) 168 (mouse-menu-non-singleton menu)
168 `(keymap 169 `(keymap
169 ,indicator 170 ,indicator
170 (turn-off menu-item "Turn Off minor mode" ,minor-mode) 171 (turn-off menu-item "Turn Off minor mode" ,mm-fun)
171 (help menu-item "Help for minor mode" 172 (help menu-item "Help for minor mode"
172 (lambda () (interactive) 173 (lambda () (interactive)
173 (describe-function ',minor-mode)))))) 174 (describe-function ',mm-fun))))))
174 (popup-menu menu)))) 175 (popup-menu menu))))
175 176
176 (defun mouse-minor-mode-menu (event) 177 (defun mouse-minor-mode-menu (event)
177 "Show minor-mode menu for EVENT on minor modes area of the mode line." 178 "Show minor-mode menu for EVENT on minor modes area of the mode line."
178 (interactive "@e") 179 (interactive "@e")