GNU bug report logs - #18490
24.3.93; Narrowing in other window no longer redisplays until a call to other-window.

Previous Next

Package: emacs;

Reported by: Matthew Smiglarski <matthew.smiglarski <at> gmail.com>

Date: Wed, 17 Sep 2014 19:42:01 UTC

Severity: important

Found in version 24.3.93

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


Message #10 received at 18490-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Matthew Smiglarski <matthew.smiglarski <at> gmail.com>
Cc: 18490-done <at> debbugs.gnu.org
Subject: Re: bug#18490: 24.3.93;
 Narrowing in other window no longer redisplays until a call
 to	other-window.
Date: Thu, 18 Sep 2014 18:20:34 +0300
> Date: Wed, 17 Sep 2014 19:50:46 +0100
> From: Matthew Smiglarski <matthew.smiglarski <at> gmail.com>
> 
> Hello,
> When a buffer has narrowing applied the window does not update until
> other-window is called.
> 
> This is not the case on 24.3.
> 
> To reproduce:
> 
> 1. Start emacs
> $ emacs -Q
> 
> 2. Enter the following into some buffer
> 
> (defun bug-redisplay-narrowing-on-other-window ()
>   (interactive)
>   (widen)
>   (search-forward-regexp "[a-z]+")
>   (narrow-to-region (match-beginning 0) (match-end 0)))
> 
> (global-set-key (kbd "M-n") 'bug-redisplay-narrowing-on-other-window)
> 
> ;; Create 3 windows
> (split-window-below)
> (split-window-below)
> 
> 3. M-x eval-buffer
> 
> 4. Execute the bug function defined above a few times, mixing it up
> with the odd call to
> #'other-window.
> 
> M-x beginning-of-buffer
> M-n M-n C-x 4 o M-n M-n C-x 4 o M-n M-n
> 
> What happens is the narrowing is only apparent to the poor user when
> another window is selected, and this was not the case previously.

Thanks, I fixed this in revision 117507 on the emacs-24 branch.

> Apologies if this is an intended change but to me it seems that the
> redisplay should occur immediately?

Not immediately, but the next time Emacs schedules redisplay, yes, all
the windows showing the buffer whose narrowing changed should be
updated.  So this is indeed a bug.

Emacs 24.3 and before used to be quite conservative in deciding when a
non-selected window should be redisplayed, as in "when in doubt,
redisplay".  The current code was changed to attempt to refrain even
more from unnecessary redisplays, and this bug is fallout from those
changes.

> I would be interested to know how to determine when the window is
> redisplayed.

There's no simple answer to this question.  Emacs employs several
flags to track when a buffer or a window or a frame might need to be
redrawn, and also tries to distinguish between redisplay of the window
content from redisplay of the mode line.  Look at the first 200 lines
of redisplay_internal to see the complicated logic by which Emacs
decides whether it needs to redisplay more than just the selected
window on the selected frame.




This bug report was last modified 10 years and 300 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.