Subject: bug#11249: 24.1.50; Overlay with face property causes calendar buffer to scroll

From: Eli Zaretskii <[email-masked]>
Date: Sun, 15 Apr 2012 23:41:00 +0300

> Date: Sun, 15 Apr 2012 21:24:39 +0200
> From: Toby Cubitt <[email-masked]>
> 
> Steps to reproduce:
> 
> 1. emacs -Q
> 2. M-x calendar
> 3. M-: (setq o (make-overlay 1 2))
> 4. M-: (overlay-put o 'face 'font-lock-warning-face)
> 5. Use C-n to move point to date in the last line of calendar
> 
> 
> Symptoms:
> 
> When the point moves to the last line of the calendar in step 5., the
> calendar buffer scrolls down, so that the top part of the calendar
> scrolls off the top of the window and can't be seen.

This is not a bug, but a feature: Emacs does not allow the cursor to
enter a partially visible line; it scrolls the buffer to make the line
with the cursor fully visible.  Displaying characters in the
font-lock-warning-face makes them slightly larger (because that face
makes the characters bold), and that can cause the last line to exceed
the visible portion of the window.

> The above steps are a minimal sequence needed to reproduce the bug. In
> everyday Emacs use, the bug is triggered by date selection via
> `org-read-date' in org-mode (which uses an overlay with non-null 'face
> property in the calendar buffer to highlight the current date).

If that face also enlarges the characters, this is a feature of the
Emacs display engine.