dwiggins@atsun.a-t.com (Don Dwiggins) (02/03/90)
I posted a request for information on this subject; and got several replies.
Various approaches were suggested, but the reply that really got me started
was this:
From: Stan Jefferson <sjeff@iuvax.cs.indiana.edu>
This is in reply to your question about mode-dependent mouse bindings.
I was the principle author of the sun-mouse.el and sun-fns.el. It is
NOT necessary to make any changes to have mode-dependent mouse
bindings; the following functions are analogues of the functions for
local key bindings and will give you mode-dependent mouse bindings:
make-mousemap, local-set-mouse, use-local-mousemap
I can send you an example if you have further problems.
- Stan Jefferson
Based on this, I put the following into a file that gets loaded at startup:
;; Set up local mouse map to show the local menu
(require 'sun-fns)
(local-set-mouse '(text right) 'local-mode-menu-eval)
(setq-default current-local-mousemap current-local-mousemap)
;; Local menu; to be set by mode hooks
(make-variable-buffer-local 'current-local-menu)
(setq-default current-local-menu nil)
;; Cribbed from "emacs-menu-eval" in sun-fns.el
(defun local-mode-menu-eval (window x y)
"Pop up mode-specific menu of editor commands (if defined for mode)"
(sun-menu-evaluate window (1+ x) (1- y)
(cond ((null current-local-menu) 'emacs-menu)
(t current-local-menu))))
;; Menus for popular modes, and the hooks to set them up
(defmenu GNUS-Newsgroup-menu
("GNUS Newsgroup Mode")
("Select unread articles" gnus-Group-select-group nil)
("Select all articles" gnus-Group-select-group 1)
("Compose article" gnus-Group-post-news)
("Unsubscribe/resubscribe" gnus-Group-unsubscribe-current-group)
("Check bogus groups" gnus-Group-check-bogus-groups)
("Update group list" (lambda ()
(gnus-Group-get-new-news) (gnus-Group-force-update)))
("Restart GNUS" gnus-Group-restart)
("Global Menu" . emacs-menu))
(setq gnus-Group-mode-hook
'(lambda () (setq current-local-menu 'GNUS-Newsgroup-menu)))
... and so on for other modes. Generally, I put into a menu those commands
that I only use occasionally, and tend to forget; once a key sequence is
memorized, it's much faster.
Finally, thanks to Stan and all the other folks who replied.
--
Don Dwiggins "Solvitur Ambulando"
Ashton-Tate, Inc.
dwiggins@ashtate.a-t.com