Subject: color output from external programs not working by default in eshell

From: David Miani <[email-masked]>
Date: Fri, 31 Oct 2008 02:39:44 +1000

When running eshell, using an external program that outputs in color results 
in the raw terminal escape codes being displayed. For example,
~ $ yaourt -Ss emacs
^[[3m^[[1;32mextra/^[[0m^[[0m^[[1memacs ^[[1;32m22.3-1 
^[[7m^[[1;33m[installed]^[[0m ^[[1;34m^[[0m
^[[3m     The Emacs Editor^[[0m
^[[3m^[[1;32mextra/^[[0m^[[0m^[[1msnd ^[[1;32m10.1-1^[[0m ^[[1;34m^[[0m
^[[3m     Snd is the emacs of sound editor^[[0m
^[[3m^[[1;32mextra/^[[0m^[[0m^[[1mtexmacs ^[[1;32m1.0.6.14-1^[[0m 
^[[1;34m^[[0m
^[[3m     GNU TeXmacs is a free scientific text editor, which was both 
inspired by TeX^[[0m
...

However, if the following code is used in ~/.emacs (code found at 
http://www.emacswiki.org/emacs/EshellColor):
    (require 'ansi-color)
    (require 'eshell)
    (defun eshell-handle-ansi-color ()
      (ansi-color-apply-on-region eshell-last-output-start
                                  eshell-last-output-end))
    (add-to-list 'eshell-output-filter-functions 'eshell-handle-ansi-color)

the output is correctly displayed in color as:
$ yaourt -Ss emacs
extra/emacs 22.3-1 [installed] 
     The Emacs Editor
extra/snd 10.1-1 
     Snd is the emacs of sound editor
extra/texmacs 1.0.6.14-1 
     GNU TeXmacs is a free scientific text editor, which was both inspired by 
TeX
...

I think that this should be included and enabled by default with eshell, as it 
doesn't change existing behaviour for non-color output, it only makes color 
output readable. I have a fair few programs that output in color, and the 
default behaviour made eshell unusable for me.

In GNU Emacs 22.3.1 (i686-pc-linux-gnu, GTK+ Version 2.12.11)
 of 2008-09-09 on p15200770.pureserver.info
Windowing system distributor `The X.Org Foundation', version 11.0.10402000
configured using `configure  '--prefix=/usr' '--sysconfdir=/etc' '--
libexecdir=/usr/lib' '--localstatedir=/var' '--mandir=/usr/share/man' '--
without-sound' '-with-x-toolkit=gtk' 'CFLAGS=-march=i686 -mtune=generic -O2 -
pipe''