From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Drew Adams" Newsgroups: gmane.emacs.devel Subject: show minor-mode menu when you click its mode-line lighter Date: Thu, 27 Sep 2007 15:21:47 -0700 Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_NextPart_000_0084_01C8011A.1E60FFB0" X-Trace: sea.gmane.org 1190931718 26262 80.91.229.12 (27 Sep 2007 22:21:58 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Thu, 27 Sep 2007 22:21:58 +0000 (UTC) To: "Emacs-Devel" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Sep 28 00:21:54 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1Ib1jx-0003q4-Pe for ged-emacs-devel@m.gmane.org; Fri, 28 Sep 2007 00:21:50 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ib1ju-0001S8-3U for ged-emacs-devel@m.gmane.org; Thu, 27 Sep 2007 18:21:46 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Ib1jr-0001Rz-LT for emacs-devel@gnu.org; Thu, 27 Sep 2007 18:21:43 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Ib1jq-0001Rf-4J for emacs-devel@gnu.org; Thu, 27 Sep 2007 18:21:43 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Ib1jq-0001Rc-2B for emacs-devel@gnu.org; Thu, 27 Sep 2007 18:21:42 -0400 Original-Received: from rgminet01.oracle.com ([148.87.113.118]) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1Ib1jp-0001fS-Fl for emacs-devel@gnu.org; Thu, 27 Sep 2007 18:21:41 -0400 Original-Received: from agmgw2.us.oracle.com (agmgw2.us.oracle.com [152.68.180.213]) by rgminet01.oracle.com (Switch-3.2.4/Switch-3.1.6) with ESMTP id l8RMLc6p002201 for ; Thu, 27 Sep 2007 16:21:38 -0600 Original-Received: from acsmt351.oracle.com (acsmt351.oracle.com [141.146.40.151]) by agmgw2.us.oracle.com (Switch-3.2.0/Switch-3.2.0) with ESMTP id l8RKOJIR032218 for ; Thu, 27 Sep 2007 16:21:37 -0600 Original-Received: from dhcp-4op11-4op12-west-130-35-178-158.us.oracle.com by acsmt351.oracle.com with ESMTP id 3251667881190931697; Thu, 27 Sep 2007 15:21:37 -0700 X-Priority: 3 (Normal) X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook IMO, Build 9.0.6604 (9.0.2911.0) Importance: Normal X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3138 X-Brightmail-Tracker: AAAAAQAAAAI= X-Brightmail-Tracker: AAAAAQAAAAI= X-Whitelist: TRUE X-Whitelist: TRUE X-Detected-Kernel: Linux 2.4-2.6 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:79973 Archived-At: This is a multi-part message in MIME format. ------=_NextPart_000_0084_01C8011A.1E60FFB0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Attached is a patch that makes a `mouse-1' click on a minor-mode lighter in the mode line raise its menu-bar menu, if any, as a popup. This is analogous to what `mouse-1' does when you click the major-mode lighter. Each minor-mode lighter brings up its own menu. If a minor mode has no menu-bar menu, then `mouse-1' displays a message stating that. Currently, `mouse-1' does nothing here, so this is an addition. Example: Minor mode Icicles has lighter "Icy" in the mode line, and it has a menu-bar menu `Icicles'. Whether or not the menu-bar is showing, if you click the lighter "Icy" then the `Icicles' menu pops up. ------=_NextPart_000_0084_01C8011A.1E60FFB0 Content-Type: application/octet-stream; name="bindings-2007-09-27.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="bindings-2007-09-27.patch" *** bindings-CVS-2007-09-27.el Thu Sep 27 14:43:48 2007=0A= --- bindings-patched-2007-09-27.el Thu Sep 27 15:07:04 2007=0A= ***************=0A= *** 289,294 ****=0A= --- 289,295 ----=0A= =0A= (defvar mode-line-minor-mode-keymap=0A= (let ((map (make-sparse-keymap)))=0A= + (define-key map [mode-line down-mouse-1] 'mouse-minor-mode-menu)=0A= (define-key map [mode-line mouse-2] 'mode-line-minor-mode-help)=0A= (define-key map [mode-line down-mouse-3] 'mode-line-mode-menu-1)=0A= (define-key map [header-line down-mouse-3] 'mode-line-mode-menu-1)=0A= ***************=0A= *** 304,346 ****=0A= "mouse-1: select (drag to resize), mouse-2 =3D C-x 1, mouse-3 =3D C-x = 0")=0A= (dashes (propertize "--" 'help-echo help-echo))=0A= (standard-mode-line-format=0A= ! (list=0A= ! "%e"=0A= ! (propertize "-" 'help-echo help-echo)=0A= ! 'mode-line-mule-info=0A= ! 'mode-line-client=0A= ! 'mode-line-modified=0A= ! 'mode-line-remote=0A= ! 'mode-line-frame-identification=0A= ! 'mode-line-buffer-identification=0A= ! (propertize " " 'help-echo help-echo)=0A= ! 'mode-line-position=0A= ! '(vc-mode vc-mode)=0A= ! (propertize " " 'help-echo help-echo)=0A= ! 'mode-line-modes=0A= `(which-func-mode ("" which-func-format ,dashes))=0A= `(global-mode-string (,dashes global-mode-string))=0A= (propertize "-%-" 'help-echo help-echo)))=0A= (standard-mode-line-modes=0A= ! (list=0A= ! (propertize "%[(" 'help-echo help-echo)=0A= `(:propertize ("" mode-name)=0A= ! help-echo "mouse-1: major mode, mouse-2: major mode help, = mouse-3: toggle minor modes"=0A= mouse-face mode-line-highlight=0A= local-map ,mode-line-major-mode-keymap)=0A= '("" mode-line-process)=0A= `(:propertize ("" minor-mode-alist)=0A= mouse-face mode-line-highlight=0A= ! help-echo "mouse-2: minor mode help, mouse-3: toggle minor = modes"=0A= local-map ,mode-line-minor-mode-keymap)=0A= (propertize "%n" 'help-echo "mouse-2: widen"=0A= 'mouse-face 'mode-line-highlight=0A= 'local-map (make-mode-line-mouse-map=0A= 'mouse-2 #'mode-line-widen))=0A= (propertize ")%]--" 'help-echo help-echo)))=0A= ! =0A= ! (standard-mode-line-position=0A= ! `((-3 ,(propertize "%p" 'help-echo help-echo))=0A= (size-indication-mode=0A= (8 ,(propertize " of %I" 'help-echo help-echo)))=0A= (line-number-mode=0A= --- 305,338 ----=0A= "mouse-1: select (drag to resize), mouse-2 =3D C-x 1, mouse-3 = =3D C-x 0")=0A= (dashes (propertize "--" 'help-echo help-echo))=0A= (standard-mode-line-format=0A= ! (list "%e"=0A= ! (propertize "-" 'help-echo help-echo) = 'mode-line-mule-info=0A= ! 'mode-line-client 'mode-line-modified 'mode-line-remote=0A= ! 'mode-line-frame-identification = 'mode-line-buffer-identification=0A= ! (propertize " " 'help-echo help-echo) = 'mode-line-position '(vc-mode vc-mode)=0A= ! (propertize " " 'help-echo help-echo) 'mode-line-modes=0A= `(which-func-mode ("" which-func-format ,dashes))=0A= `(global-mode-string (,dashes global-mode-string))=0A= (propertize "-%-" 'help-echo help-echo)))=0A= (standard-mode-line-modes=0A= ! (list (propertize "%[(" 'help-echo help-echo)=0A= `(:propertize ("" mode-name)=0A= ! help-echo "mouse-1: major-mode menu, = mouse-2: major-mode help, \=0A= ! mouse-3: toggle minor modes"=0A= mouse-face mode-line-highlight=0A= local-map ,mode-line-major-mode-keymap)=0A= '("" mode-line-process)=0A= `(:propertize ("" minor-mode-alist)=0A= mouse-face mode-line-highlight=0A= ! help-echo "mouse-1: minor-mode menu, = mouse-2: minor-mode help, \=0A= ! mouse-3: toggle minor modes"=0A= local-map ,mode-line-minor-mode-keymap)=0A= (propertize "%n" 'help-echo "mouse-2: widen"=0A= 'mouse-face 'mode-line-highlight=0A= 'local-map (make-mode-line-mouse-map=0A= 'mouse-2 #'mode-line-widen))=0A= (propertize ")%]--" 'help-echo help-echo)))=0A= ! (standard-mode-line-position `((-3 ,(propertize "%p" 'help-echo = help-echo))=0A= (size-indication-mode=0A= (8 ,(propertize " of %I" = 'help-echo help-echo)))=0A= (line-number-mode=0A= ***************=0A= *** 349,366 ****=0A= (6 ,(propertize " L%l" 'help-echo help-echo))))=0A= ((column-number-mode=0A= (5 ,(propertize " C%c" 'help-echo help-echo))))))))=0A= - =0A= (setq-default mode-line-format standard-mode-line-format)=0A= ! (put 'mode-line-format 'standard-value=0A= ! (list `(quote ,standard-mode-line-format)))=0A= =0A= (setq-default mode-line-modes standard-mode-line-modes)=0A= ! (put 'mode-line-modes 'standard-value=0A= ! (list `(quote ,standard-mode-line-modes)))=0A= =0A= (setq-default mode-line-position standard-mode-line-position)=0A= ! (put 'mode-line-position 'standard-value=0A= ! (list `(quote ,standard-mode-line-position))))=0A= =0A= (defvar mode-line-buffer-identification-keymap=0A= ;; Add menu of buffer operations to the buffer identification part=0A= --- 341,354 ----=0A= (6 ,(propertize " L%l" = 'help-echo help-echo))))=0A= ((column-number-mode=0A= (5 ,(propertize " C%c" = 'help-echo help-echo))))))))=0A= (setq-default mode-line-format standard-mode-line-format)=0A= ! (put 'mode-line-format 'standard-value (list `(quote = ,standard-mode-line-format)))=0A= =0A= (setq-default mode-line-modes standard-mode-line-modes)=0A= ! (put 'mode-line-modes 'standard-value (list `(quote = ,standard-mode-line-modes)))=0A= =0A= (setq-default mode-line-position standard-mode-line-position)=0A= ! (put 'mode-line-position 'standard-value (list `(quote = ,standard-mode-line-position))))=0A= =0A= (defvar mode-line-buffer-identification-keymap=0A= ;; Add menu of buffer operations to the buffer identification part=0A= ***************=0A= *** 492,499 ****=0A= (interactive "@e")=0A= (x-popup-menu event mode-line-mode-menu))=0A= =0A= (defun mode-line-minor-mode-help (event)=0A= ! "Describe minor mode for EVENT occurred on minor modes area of the = mode line."=0A= (interactive "@e")=0A= (let ((indicator (car (nth 4 (car (cdr event))))))=0A= (describe-minor-mode-from-indicator indicator)))=0A= --- 480,507 ----=0A= (interactive "@e")=0A= (x-popup-menu event mode-line-mode-menu))=0A= =0A= + (defun mouse-minor-mode-menu (event)=0A= + "Show minor-mode menu for EVENT on minor modes area of the mode = line."=0A= + (interactive "@e")=0A= + (let ((indicator (car (nth 4 (car (cdr event))))))=0A= + (minor-mode-menu-from-indicator indicator)))=0A= + =0A= + (defun minor-mode-menu-from-indicator (indicator) ; " Icy"=0A= + "Show menu, if any, for minor mode specified by INDICATOR.=0A= + Interactively, INDICATOR is read using completion."=0A= + (interactive (list (completing-read "Minor mode indicator: "=0A= + = (describe-minor-mode-completion-table-for-indicator))))=0A= + (let ((minor-mode (lookup-minor-mode-from-indicator indicator)))=0A= + (if minor-mode=0A= + (let* ((map (cdr-safe (assq minor-mode minor-mode-map-alist)))=0A= + (menu (and (keymapp map) (lookup-key map [menu-bar]))))=0A= + (if menu=0A= + (popup-menu menu)=0A= + (message "No menu for minor mode `%s'" minor-mode)))=0A= + (error "Cannot find minor mode for `%s'" indicator))))=0A= + =0A= (defun mode-line-minor-mode-help (event)=0A= ! "Describe minor mode for EVENT on minor modes area of the mode line."=0A= (interactive "@e")=0A= (let ((indicator (car (nth 4 (car (cdr event))))))=0A= (describe-minor-mode-from-indicator indicator)))=0A= =0A= Diff finished. Thu Sep 27 15:07:29 2007=0A= ------=_NextPart_000_0084_01C8011A.1E60FFB0 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ------=_NextPart_000_0084_01C8011A.1E60FFB0--