GNU bug report logs - #22466
25.0.50; disable-theme apparently forces a redisplay and causes a screen flash

Previous Next

Package: emacs;

Reported by: Artur Malabarba <bruce.connor.am <at> gmail.com>

Date: Tue, 26 Jan 2016 11:04:01 UTC

Severity: minor

Merged with 20016

Found in versions 24.4, 25.0.50

Full log


View this message in rfc822 format

From: Artur Malabarba <bruce.connor.am <at> gmail.com>
To: 22466 <at> debbugs.gnu.org
Subject: bug#22466: 25.0.50; disable-theme apparently forces a redisplay and causes a screen flash
Date: Tue, 26 Jan 2016 09:02:29 +0000
1. From “emacs -Q” evaluate `(load-theme 'tango-dark)'. Any other theme
with a dark background will also do.

2. Then, notice how every time you evaluate the following code, the
screen flashes white for a moment, and then resumes the exact same
appearance.

    (progn (disable-theme 'tango-dark)
           (load-theme 'tango-dark))

Of course, “resuming the same appearance” is expected, the problem is
that the white flash is distracting, unnecessary, and eye-hurting.

I understand _why_ it happens (after `disable-theme' the background is
actually white), but I don't see why it _has_ to happen. That is, why
does Emacs redisplay the frame in the middle of lisp evaluation, instead
of waiting until the end of the command loop?

More importantly, is this redisplay (or “partial redisplay”, or whatever
it is) be avoided, so Emacs doesn't flash white on my pretty little eyes?

-----

ps: In case it helps, investigation shows that this is caused by this
form inside `disable-theme':

    (set-frame-parameter frame 'background-color
    			     (custom--frame-color-default
    			      frame :background "background" "Background"
    			      "unspecified-bg" "white"))

I'm not saying this form is wrong. I'm just pointing to where it happens.




This bug report was last modified 106 days ago.

Previous Next


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