emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Emacs-diffs] master 29c360e: Ensure redisplay after "C-x C-e"


From: Stefan Monnier
Subject: Re: [Emacs-diffs] master 29c360e: Ensure redisplay after "C-x C-e"
Date: Fri, 06 Nov 2015 09:18:41 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux)

> +      ;; If we are going to display the result in the echo area, force
> +      ;; a more thorough redisplay, in case the sexp we evaluated
> +      ;; changes something that should affect the display of the
> +      ;; current window.  Otherwise, Emacs might decide that only the
> +      ;; echo area needs to be redisplayed.
> +      (if (eq standard-output t)
> +          (force-mode-line-update 'all)))))
 
What does this have to do with elisp--eval-last-sexp?

Some changes aren't immediately reflected on screen (e.g. toggling
a minor-mode variable) unless one explicitly requests a redisplay or
call force-mode-line-update.

That's always been the case for setting line-spacing.  Sometimes you get
lucky, and after setting line-spacing the change is immediately
reflected on screen because you happen to make some other change at the
same time, but it's just wrong to rely on that.

So I think the above change is a bad idea.  If we want to "fix it
right", then we should look for ways to automatically react to changes
to line-spacing, rather than doing (force-mode-line-update 'all) in
elisp--eval-last-sexp, which only catches this problem when it goes
through elisp--eval-last-sexp, and which causes unnecessary redisplay
work in the 99.9% of the cases where elisp--eval-last-sexp does
something else.


        Stefan



reply via email to

[Prev in Thread] Current Thread [Next in Thread]