[IPython-dev] Still no color on Windows XP

Gary Bishop gb at cs.unc.edu
Sat Dec 6 14:47:20 CST 2003

This results from a change in the interface to readline that they made 
in 2.3 (which I'm guessing that you are running). I have uploaded 
changes to CVS (uncpythontools at sourceforge) that should fix this. 
There isn't a new release yet but you can checkout the code from CVS 
and see if it works for you.


On Sat, 06 Dec 2003 12:41:44 -0800 "Mathew Yeates" <mathew at yeates.tv> wrote:
> I still get no color. And the prompt is a bunch of weird characters. I 
> turned on readlines logging and I get the following at the bottom of the log

> prompt="'`\xd7\xc5w'"
> C:`×Åw
> attr=None
> C:
> attr=None

> any ideas?

> Mathew

> Fernando Perez wrote:

>> Hi all,

>> today I've committed a fair amount of changes to CVS, mainly from the 
>> contributions of Jeff Collins and Gary Bishop.  I'd like to give all a 
>> brief update on this, since it would be great to see some testing of 
>> this code as I start cleaning things up for a new release.

>> - Jeff's work: it fixes tab completion for filenames under python 2.3, 
>> which broke because the python developers changed the hardcoded 
>> behavior of the readline library.

>> One small caveat:  under redhat 8.0, I am seeing an extraneous space 
>> appended to completed filenames.  Jeff helped me track its source, and 
>> it is an improperly built readline.so by redhat, which is missing the 
>> rl_completion_append_character variable.  This variable can NOT be set 
>> via python code, so there's nothing I can do about it.  Redhat 9's 
>> python, and almost any correctly built python, should not exhibit this 
>> small annoyance.

>> - Gary's work:  this allows coloring under Windows, with some extra 
>> code provided by Gary.  Please note that I modified his patches 
>> somewhat, in particular I renamed ColorTerm to Term because in the 
>> future I'll be using this facility for all I/O, not just coloring.  So 
>> I'm reposting his instructions here with the necessary changes for the 
>> benefit of Windows users:

>> ################################# Gary's instructions for Windows, 
>> modified to work with the current CVS ipython:

>> I have attached a patch for IPython 0.5-cvs that, along with my
>> readline package, will make IPython on Windows work like it does on
>> more capable systems.

>> My readline code is available via CVS from
>> http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/uncpythontools/readline/
>> I use it inside and outside IPython and it seems to work fine.

>> I don't think these changes impact other platforms but I certainly
>> could be wrong since I haven't tested anywhere else.

>> Most of the changes are of the form:

>> - print header,output,
>> + print >>Term.out, header,output,

>> These send prints that could contain color escapes explicitly to a file
>> object instead of relying on sys.stdout. Term.out and
>> Term.err are initialized to sys.stdout and sys.stderr, so
>> everything should work the same. On Windows, a user may optionally
>> include the following in his IPYTHONDIR

>> enable_color.py
>> --------------------------------------------------------------------------------

>> '''Turn on the translation of ANSI color escapes for Windows'''

>> import IPython
>> import readline

>> out = readline.GetOutputFile()
>> IPython.genutils.Term.out = out
>> IPython.genutils.Term.err = out
>> del out
>> del readline
>> del IPython
>> --------------------------------------------------------------------------------

>> and this line in ipythonrc.ini

>> execfile enable_color.py

>> To translate ANSI color escapes into the proper colors on the Windows
>> console. Without this it will work fine without color.

>> #################################

>> Gary:  I'd also like you to help me with a couple of things concerning 
>> this code.

>> 1.  You made changes to page(), to make it work with 'less' under 
>> windows+cygwin.  I want to be sure that users who DON'T have cygwin are 
>> still ok.  Is that the case?

>> 2.  The code below is around line 913 of genutils.py.  Do you know 
>> which exceptions can this trigger under Windows, so we only trap those? 
>> I don't like blanket except clauses (ipython has many, but I'm trying 
>> to clean them up as much as possible).  I also added the inner 
>> try/finally to ensure proper cleanup.

>>             try:
>>                 try:
>>                     tmpname = tempfile.mktemp('.txt')
>>                     tmpfile = file(tmpname,'wt')
>>                     tmpfile.write(strng)
>>                     tmpfile.close()
>>                     cmd = pager_cmd + ' < ' + tmpname
>>                     os.system(cmd)
>>                     retval = None
>>                 finally:
>>                     os.remove(tmpname)
>>             except:  # FIXME: trap only the reasonable exceptions
>>                 retval = 1

>> You can send me any new patches against current CVS.

>> Ok folks, I'll be working some more on ipython over the next few weeks, 
>> to finish cleaning up some other things.  But these two big changes are 
>> important enough that I'd really like to hear some feedback, especially 
>> if there are problems.

>> Many thanks to Jeff and Gary, both for their work and for their 
>> patience with my sloooow response.

>> Regards,

>> Fernando.

>> _______________________________________________
>> IPython-dev mailing list
>> IPython-dev at scipy.net
>> http://scipy.net/mailman/listinfo/ipython-dev

> _______________________________________________
> IPython-dev mailing list
> IPython-dev at scipy.net
> http://scipy.net/mailman/listinfo/ipython-dev

More information about the IPython-dev mailing list