File: mouse-drag.el.html
What is `mouse-drag.el'?
Doesn't that scroll bar seem far away when you want to scroll?
This module overloads mouse-2 to do `throw' scrolling. You
click and drag. The distance you move from your original click
turns into a scroll amount. The scroll amount is scaled
exponentially to make both large moves and short adjustments easy.
What this boils down to is that you can easily scroll around the
buffer without much mouse movement. Finally, clicks which aren't
drags are passed off to the old mouse-2 binding, so old mouse-2
operations (find-file in dired-mode, yanking in most other modes)
still work.
There is an alternative way to scroll, `drag' scrolling. You
can click on a character and then drag it around, scrolling the
buffer with you. The character always stays under the mouse.
Compared to throw-scrolling, this approach provides direct
manipulation (nice) but requires more mouse movement
(unfortunate). It is offered as an alternative for those who
prefer it.
If you like mouse-drag, you should also check out mouse-copy
for `one-click text copy and move'.
To use mouse-drag, place the following in your init file:
-either-
(keymap-global-set "<down-mouse-2>" #'mouse-drag-throw)
-or-
(keymap-global-set "<down-mouse-2>" #'mouse-drag-drag)
Options:
- reverse the throw-scroll direction with \M-x mouse-throw-with-scroll-bar (mouse-throw-with-scroll-bar)
- work around a bug with \M-x mouse-extras-work-around-drag-bug (mouse-extras-work-around-drag-bug)
- auto-enable horizontal scrolling with
\M-x mouse-drag-electric-col-scrolling (mouse-drag-electric-col-scrolling)
History and related work:
One-click copying and moving was inspired by lemacs-19.8.
Throw-scrolling was inspired by MacPaint's `hand' and by Tk's
mouse-2 scrolling. The package mouse-scroll.el by Tom Wurgler
<twurgler@goodyear.com> is similar to mouse-drag-throw, but
doesn't pass clicks through.
Originally mouse-drag was part of a larger package. As of 11 July 96 the scrolling functions were split out in preparation for incorporation into (the future) emacs-19.32.
Thanks:
Thanks to Kai Grossjohann
<grossjoh@dusty.informatik.uni-dortmund.de> for reporting bugs, to
Tom Wurgler <twurgler@goodyear.com> for reporting bugs and
suggesting fixes, and to Joel Graber <jgraber@ti.com> for
prompting me to do drag-scrolling and for an initial
implementation of horizontal drag-scrolling.
-johnh@isi.edu, 11-Jul-96
What's new with mouse-drag 2.24?
- mouse-drag-electric-col-scrolling (default: on)
auto-enables horizontal scrolling when clicks on wrapped
lines occur
TODO:
- For mouse-drag-throw, we should try and place some visual indicator
of the original mouse position (like Firefox does).
Defined variables (2)
mouse-drag-electric-col-scrolling | If non-nil, mouse-drag on a long line enables ‘truncate-lines’. |
mouse-throw-with-scroll-bar | Set direction of mouse-throwing. |
Defined functions (7)
mouse-drag-drag | (START-EVENT) |
mouse-drag-events-are-point-events-p | (START-POSN END-POSN) |
mouse-drag-repeatedly-safe-scroll | (ROW-DELTA &optional COL-DELTA) |
mouse-drag-safe-scroll | (ROW-DELTA &optional COL-DELTA) |
mouse-drag-scroll-delta | (MOUSE-DELTA) |
mouse-drag-should-do-col-scrolling | () |
mouse-drag-throw | (START-EVENT) |