### -*-python -*-
-import IPython as IPY
-import prompt_toolkit as PTK
-
-def ding():
- with open('/dev/tty', 'w') as f: f.write('\a')
-
-## Key bindings. Alas, IPython's attempt at Emacs keybindings is abysmal.
-K = PTK.keys.Keys
-F = PTK.filters
-BUF = PTK.enums.DEFAULT_BUFFER
-ipy = IPY.get_ipython()
-try: pt = ipy.pt_cli
-except AttributeError: pass
-else:
+def __mdw_hack_bindings():
+
+ import IPython as IPY
+ import prompt_toolkit as PTK
+
+ def ding():
+ with open('/dev/tty', 'w') as f: f.write('\a')
+
+ ## Key bindings. Alas, IPython's attempt at Emacs keybindings is abysmal.
+ K = PTK.keys.Keys
+ F = PTK.filters
+ BUF = PTK.enums.DEFAULT_BUFFER
+ ipy = IPY.get_ipython()
+ try: pt = ipy.pt_cli
+ except AttributeError: return
+
reg = pt.application.key_bindings_registry
try: bind = reg.add_binding
- except AttributeError: bind = PTK.key_binding.bindings.utils.create_handle_decorator(reg)
+ except AttributeError:
+ bind = PTK.key_binding.bindings.utils.create_handle_decorator(reg)
def inhibit_history_search(buf, fn):
- searchp, searchtext = buf.enable_history_search, buf.history_search_text
+ searchp, searchtext = \
+ buf.enable_history_search, buf.history_search_text
buf.enable_history_search = F.Never()
try:
fn()
finally:
- buf.enable_history_search, buf.history_search_text = searchp, searchtext
+ buf.enable_history_search, buf.history_search_text = \
+ searchp, searchtext
@bind(K.ControlP)
def prev_line(ev):
buf = ev.current_buffer
bind(K.Escape, u'p')(lambda ev: ev.current_buffer.history_backward())
bind(K.Escape, u'n')(lambda ev: ev.current_buffer.history_forward())
+
+__mdw_hack_bindings()
+del __mdw_hack_bindings