[Pythonmac-SIG] readline support for OS X Leopard
Edward Moy
emoy at apple.com
Mon Oct 22 20:19:28 CEST 2007
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/pythonmac-sig/attachments/20071022/35aba03b/attachment.htm
More information about the Pythonmac-SIG
mailing list