How can I make Emacs mouse scrolling slower and smoother?
EmacsScrollMouseEmacs Problem Overview
When I scroll in Emacs using mouse wheel, it scrolls 5 lines at a time, which, I think, is way too much - where do I set a new value?
Also, when I scroll in Emacs with a mouse (either wheel or scrollbar), the cursor jumps to stay inside the visible screen area - is there a way to override that behavior, making it staying on the line it was on, even when it goes out of screen? In other words, I don't want the position where newly typed symbols appear changed by the scrolling.
Any alternative suggestion on how I could peek into some remote section of code and then quickly return to the former position is also welcome.
Emacs Solutions
Solution 1 - Emacs
You can control the amount in variable mouse-wheel-scroll-amount
(in mwheel.el).
EDIT: E.g. Add
(setq mouse-wheel-scroll-amount '(1 ((shift) . 1) ((control) . nil)))
to your .emacs for 1 line at a time.
I also have (setq mouse-wheel-progressive-speed nil)
in my .emacs which I think is nicer behaviour.
Solution 2 - Emacs
I use breadcrumb to leave a trail around a buffer or all buffers.
Drop the breadcrumb, go look at whatever you want/need, then jump back to the breadcrumb. Here's what I have things set to, FWIW:
(global-set-key [(f6)] 'bc-set)
(global-set-key [(shift f6)] 'bc-list)
(global-set-key [(control f6)] 'bc-previous)
(global-set-key [(meta f6)] 'bc-next)
(global-set-key [(shift control f6)] 'bc-local-previous)
(global-set-key [(shift meta f6)] 'bc-local-next)
Hope that helps.
Solution 3 - Emacs
Here is my setup:
(setq mouse-wheel-scroll-amount '(0.07)) (setq mouse-wheel-progressive-speed nil) (setq ring-bell-function 'ignore)
Solution 4 - Emacs
It's impossible to have 'point' to exist somewhere outside of the current view; all the point movement commands move the display as well. I think that's a fundamental assumption that emacs makes.
I think what you want in your last point - to peek to a remote section and return - can be accomplished with registers:
This saves your position in register A:
C-x r
And this restores the position from register A:
C-x r j A
If you do this a lot I'd advise binding those to things slightly less verbose :)
Solution 5 - Emacs
You can use some bookmark solution or the register, but also the build-in mark and the mark-ring -
(default binding)
C-Space to set mark (push a mark in mark ring)
C-u C-Space to pop a mark off the ring; repeat this a few more time should
get you where you like to be
or if you don't have highlight region on or you don't mind seeing the highlighting,
C-x C-x (exchange-point-and-mark) switch between you current point and your previous mark.
Solution 6 - Emacs
>Any alternative suggestion on how I could peek into some remote section of code and then quickly return to the former position is also welcome.
Ch 3 of http://oreilly.com/catalog/9781565922617/">Bob Glickstein's "Writing GNU Emacs Extensions" builds an unscroll-function (to return to a specified location in a scroll-command stack) as an programming example.
The code http://www.eecs.ucf.edu/~leavens/emacs/unscroll.el">appears on-line, but there is http://mlblog.osdir.com/emacs.code-browser/2005-11/msg00000.shtml">a reported conflict with the ECB, if you use that.
Solution 7 - Emacs
Use easy-come-easy-go autonamed bookmarks -- Bookmark+. Just hit a key to create or delete -- as easy as setting the mark. They can be persistent or temporary. They can be automatically highlighted, if you like (the fringe or the line).