[IPython-dev] Fwd: [Pythonmac-SIG] readline support for OS X Leopard
Brian Granger
ellisonbg.net at gmail.com
Mon Oct 22 21:48:33 EDT 2007
This is a heads up for ipython devs who use OS X. I guess the builtin
python on Leopard will have a working readline module, but it won't
use readline underneath the hood. Instead is will use EditLine
library:
http://thrysoee.dk/editline/
Once Leopard is out in the public, we can investigate how this will
play with ipython.
Cheers,
Brian
---------- Forwarded message ----------
From: Edward Moy <emoy at apple.com>
Date: Oct 22, 2007 12:19 PM
Subject: Re: [Pythonmac-SIG] readline support for OS X Leopard
To: Noah Gift <noah.gift at gmail.com>
Cc: PythonMac mac <pythonmac-sig at python.org>
On Oct 21, 2007, at 10:51 PM, Noah Gift wrote:
I have been getting ready for the official leopard release in a few
days, and have been a bit worried about readline support. I forgot
what I did to get it to work for IPython, which I absolutely cannot
live without anymore. Is there a plan for a Leopard binary that fixes
readline, or can I help someone prepare some documentation on getting
readline working properly. I don't have a lot of time during the next
couple of weeks to get into compile hell, but if someone has any easy
fix to get readline to work, I would greatly appreciate it.
The installed version of python on Leopard will actually have readline
support turned on by default, but it uses the EditLine (libedit)
library, not the GNU Readline (due to licensing reasons). While
functionally equivalent, the command syntax is different. From the
python(1) man page:
INTERACTIVE INPUT EDITING AND HISTORY SUBSTITUTION
The Python inteterpreter supports editing of the current input line and
history substitution, similar to facilities found in the Korn shell and
the GNU Bash shell. However, rather than being implemented using the
GNU Readline library, this Python interpreter uses the BSD EditLine
library editline(3) with a GNU Readline emulation layer.
The readline module provides the access to the EditLine library, but
there are a few major differences compared to a traditional implementa-
tion using the Readline library. The command language used in the
preference files is that of EditLine, as described in editrc(5) and not
that used by the Readline library. This also means that the
parse_and_bind() routines uses EditLine commands. And the preference
file itself is ~/.editrc instead of ~/.inputrc.
For example, the rlcompleter module, which defines a completion func-
tion for the readline modules, works correctly with the EditLine
libraries, but needs to be initialized somewhat differently:
import rlcompleter
import readline
readline.parse_and_bind("bind ^I rl_complete")
For vi mode, one needs:
readline.parse_and_bind("bind -v")
--------------------------------------------------------------------------
Edward Moy
Apple Computer, Inc.
emoy at apple.com
_______________________________________________
Pythonmac-SIG maillist - Pythonmac-SIG at python.org
http://mail.python.org/mailman/listinfo/pythonmac-sig
More information about the IPython-dev
mailing list