views:

135

answers:

3

I find myself wanting to use Emacs, mostly because of org-mode, but I'm having a lot of trouble getting used to the jerky scrolling behavior. I know this is a well-known problem/eccentricity of Emacs and that there are various ways to minimize jerkiness when scrolling. But nothing I've tried so far works very well at all.

The main suggestions I've seen are (setq scroll-conservatively 10000) or to use the more comprehensive fix available in smooth-scrolling.el . I think both of these might work okay for me, but both fail miserably when I hold down the up-arrow and down-arrow key to get repeated scrolling up or down. When I do this the screen freezes and I see the scroll-indicator-bar in the scroll margin move up or down. The screen does not refresh until I stop holding down the up-arrow or down-arrow key.

If I repeatedly press up-arrow or down-arrow then I do get behavior close to what I want, i.e., the screen scrolls smoothly and cursor key does not get reset to middle of screen. But this is undesirable because (1) it requires repeated keypresses and (2) I assume the scrolling is at a slower rate than what I should be able to get in better solution.

The problem with holding the cursor keys down seems to me to be that the repeat rate of up-arrow or down-arrow is so fast that it triggers emacs to stop the screen refresh until key is released. I wonder whether a possible fix for me would be to add some lag into the key-repeat rate or the rate at which the next/previous line function is called in emacs.

I haven't seen this reported as a problem by others and I wonder whether other people have experienced same behavior. What's best way to fix things so I can hold the up/down arrow keys down and have repeat rate that's slow enough so that the screen doesn't freeze?

UPDATE: The above behavior is what I get when I run emacs on Win7/64. On same machine when I run emacs inside a VirtualBox VM running Ubuntu 10.04 it's no problem to get scrolling that works fine even when cursor keys are held down.

+1  A: 

scroll-conservatively helps, but I also like a margin so that I can see what's coming up as a scroll -- it keeps context on the screen for me. These settings have worked well for me an a wide variety of computers for a few years:

(setq scroll-conservatively 10)
(setq scroll-margin 7)
R. P. Dillon
Thanks, but I've experimented with different values of scroll-conservatively and scroll-margin and they don't fix the problem. Scrolling is smooth enough if I discretely depress cursor key for each up or down movement, but if I hold the cursor key down the screen freezes while the scroll indicator shows position moving through file. Screen doesn't refresh until I take finger off the key.
Herbert Sitz
Yeah, I noticed that you said that in your post...I've used these settings in GNU Emacs on everything from an Atom netbook running Ubuntu to a Core 2 Duo running OS X and a quad-core Windows desktop at work... What brand and build of Emacs are you using?
R. P. Dillon
I'm running this on 64-bit windows 7: GNU Emacs 23.1.50.1 (i386-mingw-nt6.1.7600) of 2009-11-03 on LENNART-69DE564 (patched). I'd have to check, but I'm pretty sure I have same behavior on my other computers, which include an atom netbook and several other notebooks.
Herbert Sitz
Also, you didn't mention it although I assumed you already tried it: Adam Spiers smooth-scrolling.el. If not, here's a link to it:http://adamspiers.org/computing/elisp/smooth-scrolling.elThe scrolling stuff is a well-known problem, although I've never needed much besides what I posted above to fix it.
R. P. Dillon
A: 

This behavior is not encountered on all platforms. For those platforms that pose problem, I would recommend to use this setting :

(setq scroll-conservatively 0)

It places the cursor on the middle of the screen each time you scroll to another page.

Jérôme Radix
That's the default setting on all platforms, I think. Problem is it doesn't even really scroll, screen just jumps half a page up when you get to the bottom. Maybe people who have used emacs for years accept this as the way things work, but it's different from virtually every other editor. Other text editors (and other applications, like browsers and word processors) scroll. To have the buffer window suddenly shift up half a screen is unsettling and non-user-friendly.
Herbert Sitz
A: 

I'm very happy with Adam Spiers' smooth-scrolling, as rpdillon suggested. I thought it deserves an answer of its own.

Thomas Kappler
I've tried smooth-scrolling.el, too, as I said in original post. It works no better for me than scroll-conservatively solution.
Herbert Sitz
Sorry, I overlooked that.
Thomas Kappler