lamy@ai.toronto.edu.UUCP (11/25/87)
GNU emacs 18.44.1's support for X has the flaw that it forcibly redefines term-setup-hook to be x-popup-window. The obvious fix is to redefine it to (funcall term-setup-hook) followed by the (x-popup-window). Or is there another, proper, way to get customized mouse bindings that I have missed short of putting them in term-setup-hook and fixing x-win.el? Jean-Francois Lamy lamy@ai.toronto.edu lamy@ai.toronto.cdn AI Group, Dept of Computer Science uunet!ai.toronto.edu!lamy University of Toronto lamy%ai.toronto.edu@relay.cs.net (arpa) Toronto, Canada M5S 1A4 lamy@ai.utoronto, lamy@utorgpu (bitnet)
thomas%spline.uucp@utah-gr.UUCP (Spencer W. Thomas) (01/21/88)
Well, when I made a modified x mouse binding file, I just loaded it explicitly in my .emacs file. This way it was already around when x-popup-window was executed. (You have to make sure to provide 'x-mouse in your modified file.) (if (eq window-system 'x) (load "utah/xmouse-fns")) Now that I have your attention -- a few words on my X mouse binding package. What I did was to take a Sun mouse package and hack on it until it works under X (adding functionality, of course). The nice thing about this package is that it provides orthogonal key binding -- that is, you can define an action based on button, modifier(s), screen location, and click vs. drag. (The original Sun package had double click, but I couldn't figure out how to get a timestamp on mouse clicks, so I bagged that.) For example, here are my default bindings: (global-set-mouse '(left text) 'x-mouse-mark-and-point) (global-set-mouse '(middle text) 'x-mouse-yank) (global-set-mouse '(right text) 'x-mouse-select-window) (global-set-mouse '(left drag text) 'x-mouse-copy-region) (global-set-mouse '(middle drag text) 'x-mouse-kill-region) (global-set-mouse '(right drag text) 'x-mouse-indent-region) (global-set-mouse '(left shift text) 'x-mouse-re-enter-line) (global-set-mouse '(right shift text) 'x-mouse-insert-cut) (global-set-mouse '(middle shift drag text) 'x-mouse-cut) (global-set-mouse '(left modeline) 'x-mouse-scroll-down) (global-set-mouse '(middle modeline) 'x-mouse-invoke-buffer-menu) (global-set-mouse '(right modeline) 'x-mouse-scroll-up) (global-set-mouse '(left shift modeline) 'x-mouse-beginning-of-defun) (global-set-mouse '(right shift modeline) 'x-mouse-end-of-defun) (global-set-mouse '(left drag modeline) 'x-mouse-resize) (global-set-mouse '(middle drag modeline) 'x-mouse-split) (global-set-mouse '(left scrollbar) 'x-mouse-line-to-bottom) (global-set-mouse '(middle scrollbar) 'x-mouse-scroll-up-down) (global-set-mouse '(right scrollbar) 'x-mouse-line-to-top) (global-set-mouse '(middle scrollbar drag) 'x-mouse-drag-scroll) The individual functions are (relatively) easy to write, too. The next step is to see what is necessary to make it window system independent (except for a system dependent dispatching function), so you can get the same mouse bindings no matter what system you are using. If enough people are interested, I could post it. =Spencer ({ihnp4,decvax}!utah-cs!thomas, thomas@cs.utah.edu)