Subject: RE: bug#12515: 24.2.50; Error during redisplay: (eval (mode-line-eol-desc)) signaled (quit)

From: "Drew Adams" <[email-masked]>
Date: Tue, 25 Sep 2012 13:51:38 -0700

> Unless you see a lot of these messages in *Messages*, I wouldn't worry
> about this.

OK, good.  I noticed it only once.

> What happens is that as part of redisplay of the mode line, the
> display engine calls the function mode-line-eol-desc (defined on
> bindings.el), which produces the end-of-line (EOL) indicator near the
> left edge of the mode line.  Because signaling an error normally
> re-enters redisplay (to display the error message), the display code
> suppresses the normal way of processing signals from Lisp it calls,
> and instead intercepts all signals and adds this kind of message to
> *Messages*.  Since mode-line-eol-desc does not disable quitting (maybe
> it should), hitting C-g when it runs could cause this signal, I think.

Thanks for taking the time to explain this.

I guess part of what you are saying (implying) is that _quitting_ (C-g), because
it involves signalling, also "normally re-enters redisplay (to display the" quit
message).

Sounds like `mode-line-eol-desc' should disable quitting only if it is
guaranteed to end quickly.  IOW, code that disables quitting should not prevent
a user from actually quitting in a timely manner.

When you say "disable quitting", do you mean that the user would need to hit
`C-g' again, or only that the `C-g' would not be processed until after redisplay
finishes (i.e., respects a previously set `quit-flag')?

BTW, I looked in `(elisp) Quitting' for some explanation of this, but it does
not seem to mention "display" or "redisplay" at all.  (It does mention C code,
however.)