##// END OF EJS Templates
refactor to improve cell switching in edit mode...
refactor to improve cell switching in edit mode This code was repeated in both CodeCell and TextCell, both of which are extensions of Cell, so this just unifies the logic in Cell. TextCell had logic here to check if the cell was rendered or not, but I don't believe it is possible to end up triggering such a code path. (Should that be required, I can always just add back these methods to TextCell, performing the .rendered==True check, and calling the Cell prior to this, code mirror at_top would only return true on if the cursor was at the first character of the top line. Now, pressing up arrow on any character on the top line will take you to the cell above. The same applies for the bottom line. Pressing down arrow would only go to the next cell if the cursor was at a location *after* the last character (something that is only possible to achieve in vim mode if the last line is empty, for example). Now, down arrow on any character of the last line will go to the next cell.

File last commit:

r15447:673ae3d2
r15754:d60e793e
Show More
rlineimpl.py
74 lines | 2.6 KiB | text/x-python | PythonLexer
vivainio
merge all from 0.7.3 branch to trunk
r503 # -*- coding: utf-8 -*-
fperez
Fix bug with 2.3 and readline; clean up.
r644 """ Imports and provides the 'correct' version of readline for the platform.
vivainio
merge all from 0.7.3 branch to trunk
r503
Brian Granger
Work to address the review comments on Fernando's branch....
r2498 Readline is used throughout IPython as::
import IPython.utils.rlineimpl as readline
vivainio
merge all from 0.7.3 branch to trunk
r503
fperez
Fix bug with 2.3 and readline; clean up.
r644 In addition to normal readline stuff, this module provides have_readline
Brian Granger
Work to address the review comments on Fernando's branch....
r2498 boolean and _outputfile variable used in IPython.utils.
Fernando Perez
Remove svn-style $Id marks from docstrings and Release imports....
r1853 """
vivainio
merge all from 0.7.3 branch to trunk
r503
import sys
MinRK
libedit raises descriptive warning instead of simple print
r3475 import warnings
vivainio
merge all from 0.7.3 branch to trunk
r503
MinRK
remove no-longer-necessary dirty hack for readline on OS X...
r15403 _rlmod_names = ['gnureadline', 'readline']
have_readline = False
for _rlmod_name in _rlmod_names:
MinRK
add dirty trick for readline import on OSX...
r5206 try:
MinRK
remove no-longer-necessary dirty hack for readline on OS X...
r15403 # import readline as _rl
_rl = __import__(_rlmod_name)
# from readline import *
globals().update({k:v for k,v in _rl.__dict__.items() if not k.startswith('_')})
except ImportError:
pass
MinRK
add dirty trick for readline import on OSX...
r5206 else:
vivainio
fixed rlineimpl to work properly with py2exed pyreadline
r671 have_readline = True
MinRK
remove no-longer-necessary dirty hack for readline on OS X...
r15403 break
MinRK
add dirty trick for readline import on OSX...
r5206
MinRK
fix pyreadline import in rlineimpl...
r15447 if sys.platform == 'win32' or sys.platform == 'cli':
vivainio
merge all from 0.7.3 branch to trunk
r503 try:
fperez
Fix bug with 2.3 and readline; clean up.
r644 _outputfile=_rl.GetOutputFile()
vivainio
fixed rlineimpl to work properly with py2exed pyreadline
r671 except AttributeError:
MinRK
use a bytes regex to check for libedit...
r3938 warnings.warn("Failed GetOutputFile")
fperez
Fix bug with 2.3 and readline; clean up.
r644 have_readline = False
bgranger
Now IPython works with OS X 10.5 (Leopards) libedit based readline module.
r884
# Test to see if libedit is being used instead of GNU readline.
MinRK
use Popen instead of getstatusoutput to check for libedit....
r3906 # Thanks to Boyd Waters for the original patch.
bgranger
Now IPython works with OS X 10.5 (Leopards) libedit based readline module.
r884 uses_libedit = False
MinRK
STY: rlineimpl review from @fperez...
r5209
MinRK
add dirty trick for readline import on OSX...
r5206 if have_readline:
# Official Python docs state that 'libedit' is in the docstring for libedit readline:
Christian Boos
Follow-up to 387dcd6a, `_rl.__doc__` is `None` with pyreadline
r5234 uses_libedit = _rl.__doc__ and 'libedit' in _rl.__doc__
MinRK
add dirty trick for readline import on OSX...
r5206 # Note that many non-System Pythons also do not use proper readline,
# but do not report libedit at all, nor are they linked dynamically against libedit.
# known culprits of this include: EPD, Fink
# There is not much we can do to detect this, until we find a specific failure
# case, rather than relying on the readline module to self-identify as broken.
MinRK
STY: rlineimpl review from @fperez...
r5209
MinRK
add dirty trick for readline import on OSX...
r5206 if uses_libedit and sys.platform == 'darwin':
_rl.parse_and_bind("bind ^I rl_complete")
warnings.warn('\n'.join(['', "*"*78,
"libedit detected - readline will not be well behaved, including but not limited to:",
" * crashes on tab completion",
" * incorrect history navigation",
" * corrupting long-lines",
" * failure to wrap or indent lines properly",
MinRK
remove no-longer-necessary dirty hack for readline on OS X...
r15403 "It is highly recommended that you install gnureadline, which is installable with:",
" pip install gnureadline",
MinRK
add dirty trick for readline import on OSX...
r5206 "*"*78]),
RuntimeWarning)
bgranger
Now IPython works with OS X 10.5 (Leopards) libedit based readline module.
r884
fperez
Fix bug with 2.3 and readline; clean up.
r644 # the clear_history() function was only introduced in Python 2.4 and is
# actually optional in the readline API, so we must explicitly check for its
# existence. Some known platforms actually don't have it. This thread:
# http://mail.python.org/pipermail/python-dev/2003-August/037845.html
# has the original discussion.
if have_readline:
vivainio
merge all from 0.7.3 branch to trunk
r503 try:
vivainio
fixed rlineimpl to work properly with py2exed pyreadline
r671 _rl.clear_history
fperez
Fix bug with 2.3 and readline; clean up.
r644 except AttributeError:
def clear_history(): pass
Fernando Perez
Remove svn-style $Id marks from docstrings and Release imports....
r1853 _rl.clear_history = clear_history