Subject: bug#12792: 24.2.50; shell-mode renders all its output in a yellow face

From: Wolfgang Jenkner <[email-masked]>
Date: Sat, 03 Nov 2012 16:37:59 +0100

On Sat, Nov 03 2012, Dima Kogan wrote:

> I'm using a very recent emacs snapshot. shell-mode no longer renders the
> ANSI-code colors correctly. Even with a relatively stock bash, All
> output is rendered in yellow except for the prompt line. The prompt
> isn't yellow, but it's wrong also:
>
> http://debbugs.gnu.org/cgi/bugreport.cgi?bug=11883
>
> This is a regression, since both the output in general and the prompt in
> particular have been rendered correctly previously. I did a bisection,
> and tracked the issues down to two commits. The prompt coloring broke in
>
> http://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/ansi-color.el?id=cd49cea06bb1c492d4d024889f3f320bf4c9b507
>
> After that commit the general output still looks correct, but the prompt
> isn't colored. Then later on, the rest of the output rendering broke in
>
> http://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/ansi-color.el?id=1bc85494c3236fa27cd8456635a4109aeed48344

In bug#11883 you give this example

echo -e "\033[31mtest\033[39m"

but ansi-color has never supported SGR parameter 39.  However, before my
change (the latter commit above), any unknown parameter would have the
same effect as parameter 0 (turn off all rendition aspects), while it is
simply ignored now (well, except for an "Invalid face reference: nil"
message), see `ansi-color-apply-sequence'.  Perhaps, this explains the
problem.

Wolfgang