[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