views:

1368

answers:

5

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.

+11  A: 

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.

luapyad
Added (setq mouse-wheel-scroll-amount '(1)) into my .emacs, it works. And I like (setq mouse-wheel-progressive-speed nil) as well.
Headcrab
A: 

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

Tried those, it said "C-x r A is undefined".
Headcrab
+3  A: 

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.

Joe Casadonte
+1  A: 

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.
polyglot
A: 

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 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 appears on-line, but there is a reported conflict with the ECB, if you use that.

Michael Paulukonis