72 lines
2.1 KiB
Python
72 lines
2.1 KiB
Python
c.InteractiveShellApp.exec_lines = [
|
|
'%autoreload 2',
|
|
r'''
|
|
def ipython_update_shortcuts():
|
|
import IPython
|
|
import prompt_toolkit.filters
|
|
import prompt_toolkit.document
|
|
import functools
|
|
import tempfile
|
|
import io
|
|
import subprocess
|
|
|
|
def ipython_edit_in_vim(*args, pt_app):
|
|
content = pt_app.app.current_buffer.document.text
|
|
lines_count = lambda text: len(text.splitlines())
|
|
|
|
with tempfile.NamedTemporaryFile(
|
|
suffix='.py',
|
|
mode='w',
|
|
) as f:
|
|
with io.open(f.name, 'w') as f2:
|
|
f2.write(content)
|
|
f2.flush()
|
|
|
|
result = subprocess.call([
|
|
'vim',
|
|
'+%d' % lines_count(content),
|
|
f.name,
|
|
])
|
|
|
|
if result != 0:
|
|
return
|
|
|
|
f.seek(0, io.SEEK_SET)
|
|
|
|
with io.open(f.name, 'r') as f2:
|
|
new_content = f2.read()
|
|
|
|
pt_app.app.current_buffer.document = \
|
|
prompt_toolkit.document.Document(
|
|
new_content,
|
|
cursor_position=len(new_content.rstrip()),
|
|
)
|
|
|
|
t1 = IPython.get_ipython()
|
|
t2 = t1.pt_app
|
|
t3 = [o for o in t2.key_bindings.bindings if 'f2' in repr(o.keys).lower()]
|
|
assert len(t3) == 1
|
|
t4 = t3[0]
|
|
t2.key_bindings.remove(t4.handler)
|
|
t2.key_bindings.add(
|
|
'\\', 'e', filter=~prompt_toolkit.filters.vi_insert_mode,
|
|
)(
|
|
functools.partial(
|
|
ipython_edit_in_vim,
|
|
pt_app=t2,
|
|
)
|
|
#t4.handler
|
|
)
|
|
''',
|
|
'ipython_update_shortcuts()',
|
|
]
|
|
c.InteractiveShellApp.extensions = ['autoreload']
|
|
c.InteractiveShell.history_length = 100 * 1000 * 1000
|
|
c.InteractiveShell.history_load_length = 100 * 1000 * 1000
|
|
c.InteractiveShell.enable_history_search = False
|
|
c.InteractiveShell.autosuggestions_provider = None
|
|
c.InteractiveShell.pdb = True
|
|
c.TerminalInteractiveShell.editing_mode = 'vi'
|
|
c.TerminalInteractiveShell.modal_cursor = False
|
|
c.TerminalInteractiveShell.emacs_bindings_in_vi_insert_mode = False
|