How can I make Emacs mouse scrolling slower and smoother?

EmacsScrollMouse

Emacs 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 A

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).

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHeadcrabView Question on Stackoverflow
Solution 1 - EmacsluapyadView Answer on Stackoverflow
Solution 2 - EmacsJoe CasadonteView Answer on Stackoverflow
Solution 3 - EmacsIvelinView Answer on Stackoverflow
Solution 4 - EmacsAndrew LuskView Answer on Stackoverflow
Solution 5 - EmacspolyglotView Answer on Stackoverflow
Solution 6 - EmacsMichael PaulukonisView Answer on Stackoverflow
Solution 7 - EmacsDrewView Answer on Stackoverflow