X-Git-Url: https://git.distorted.org.uk/~mdw/profile/blobdiff_plain/a894ae88f9bf8b8b7c4c0c6c17972c4bbe21874e..48a9c9c1a60f4f5ebc71a5e5269b01109c9dcfa4:/dot/ipython-key-bindings.py?ds=sidebyside diff --git a/dot/ipython-key-bindings.py b/dot/ipython-key-bindings.py index abb1b01..8795404 100644 --- a/dot/ipython-key-bindings.py +++ b/dot/ipython-key-bindings.py @@ -1,30 +1,35 @@ ### -*-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 @@ -42,3 +47,6 @@ else: 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