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-
    (global-set-key [down-mouse-2] 'mouse-drag-throw)
-or-
    (global-set-key [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-scrollingIf non-nil, mouse-drag on a long line enables ‘truncate-lines’.
mouse-throw-with-scroll-barSet 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)

Defined faces (0)