Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Robust readline support on OS X's builtin Python #20

Closed
ipython opened this issue May 10, 2010 · 2 comments
Closed

Robust readline support on OS X's builtin Python #20

ipython opened this issue May 10, 2010 · 2 comments
Assignees
Labels
Milestone

Comments

@ipython
Copy link
Collaborator

ipython commented May 10, 2010

Original Launchpad bug 254023: https://bugs.launchpad.net/ipython/+bug/254023
Reported by: seanj-xyke (Sean Jensen-Grey).

Re-edited 9/25/2008,

Short:

The bug contains a description and a solution for getting readline to work reliably on the mac. The solution outlined recommends shipping the egg for readline with ipython and installing it in site-packages. Optionally modifying the ipython.py script to contain a reference to the egg.

See below.


With a default source install of IPython 0.8.4, typing code into the ipython shell is a little frustrating since I cannot use the tab key to indent code.

Even with the -noreadline option used when starting ipython, the tab key will not emit a tab or spaces in the ipython shell.

I understand that readline support on OS X 10.5 is provided by libedit which does not have the same functionality as gnureadline.

And that by installing gnu readline I get the behavior I want.

And that there is an install guide @ http://ipython.scipy.org/moin/InstallationOSXLeopard

It would seem to me that the usability of ipython on the mac under leopard is pretty flawed due to poor readline implementation (out of the box). At least with how IPython interacts with it.

A couple possibilities to remedy this would be:

  1. Rather than say that libedit was detected, say something along the lines of

(only on darwin and if libedit was detected ...)

"""

The libedit replacement for gnu readline was detected on your mac.

IPython needs gnu readline to function optimally. Using the tab key to indent code
will not work without it.

Please install pyreadline for osx. Or modify the ipython script itself.

see, http://pypi.python.org/pypi/readline/2.5.1

"""

  1. Ship the pyreadline.egg with the tar.gz of the source, during setup if they are using darwin, include the egg and modify the ipython start script.

My new start script looks like

import sys
sys.path.insert( 0, '/Users/sean/python/readline-2.5.1-py2.5-macosx-10.5-fat.egg')

import IPython.Shell
IPython.Shell.start().mainloop()

And it works great. I just had to download the egg from pypi and add it to my sys.path, INFRONT of everything else.pur

Adding in pyreadline support on the mac would only take 360k of extra space, it would save an extra configuration step. The setup command purveyed on blogs and on the OSX install page failed with a gcc error on my machine (new leopard 10.5.2 install with latest xcode tools).

I think shipping a binary egg that only ipython used would be best solution.

@ipython
Copy link
Collaborator Author

ipython commented May 10, 2010

[ LP comment 1 by: Brian Granger, on 2009-04-14 21:00:17.906104+00:00 ]

This is a continuing problem on OS X and we need to come up with a more robust solution!

@fperez
Copy link
Member

fperez commented Mar 23, 2011

I made it dormant simply because it's not on our critical path, but keeping its priority to medium. It's a good candidate to promote to active once we flush the more pressing stuff.

Also tagged Min for it, since it's an OSX issue, and I don't use the platform.

@ghost ghost assigned ellisonbg and minrk Apr 10, 2011
@minrk minrk closed this as completed in 901196b Apr 12, 2011
jdfreder added a commit that referenced this issue Mar 24, 2014
ellisonbg added a commit that referenced this issue Sep 9, 2014
Add docstring for latex_matches method
mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014
This allow the check_for_readline to *not* print its indented status line

closes ipythongh-361
closes ipythongh-20
mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014
mattvonrocketstein pushed a commit to mattvonrocketstein/ipython that referenced this issue Nov 3, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

3 participants