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
 |