[IPython-dev] Still no color on Windows XP
Mathew Yeates
mathew at yeates.tv
Sat Dec 6 15:55:11 EST 2003
Yes, I am running 2.3.
I just noticed that I AM getting colors... The only problem is that the
prompt is funky.
Gary Bishop wrote:
> 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.
>
> gb
>
> 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