Subject: bug#14598: 24.3; global-hl-line-mode + text-scale-adjust + next-line + scrolling

From: Eli Zaretskii <[email-masked]>
Date: Wed, 12 Jun 2013 20:27:57 +0300

> Date: Thu, 13 Jun 2013 00:05:48 +1200
> From: Phil Sainty <[email-masked]>
> 
> With global-hl-line-mode enabled (but not local hl-line-mode,
> which is implemented differently) and with a smaller font via
> text-scale-adjust, scrolling off the bottom of the window with
> next-line gets incredibly glitchy.

Unfortunately, my only suggestion is "don't do that": either don't use
global-hl-line-mode, or don't make your default face smaller using
text-scale-adjust.  Emacs does all scroll calculations assuming the
original default face size, which was in effect when the frame was
created.  This design assumes that the frame mostly uses that size,
with occasional smaller or larger characters here and there; resizing
_all_ of the text breaks that assumption.  On top of that,
global-hl-line-mode installs both pre-command-hook and
post-command-hook which manipulate overlays, which kills all of the
clever tricks Emacs has up its sleeve to deal with variable fonts and
partially visible lines.  What you see as result is basically a
recenter on every C-n, except that sometimes Emacs scrolls by just a
few pixels to make a line fully visible.

Fixing this would mean a major redesign of the scrolling support in
the display engine.  Patches are welcome, as always.  Until then, this
will remain a wishlist, I'm afraid.

Sorry.