[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


Once Leopard is out in the public, we can investigate how this will
play with ipython.



---------- 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:

       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

More information about the IPython-dev mailing list