4 import prompt_toolkit
as PTK
7 with
open('/dev/tty', 'w') as f
: f
.write('\a')
9 ## Key bindings. Alas, IPython's attempt at Emacs keybindings is abysmal.
12 BUF
= PTK
.enums
.DEFAULT_BUFFER
13 ipy
= IPY
.get_ipython()
15 except AttributeError: pass
17 reg
= pt
.application
.key_bindings_registry
18 try: bind
= reg
.add_binding
19 except AttributeError: bind
= PTK
.key_binding
.bindings
.utils
.create_handle_decorator(reg
)
21 def inhibit_history_search(buf
, fn
):
22 searchp
, searchtext
= buf
.enable_history_search
, buf
.history_search_text
23 buf
.enable_history_search
= F
.Never()
27 buf
.enable_history_search
, buf
.history_search_text
= searchp
, searchtext
30 buf
= ev
.current_buffer
31 if buf
.document
.cursor_position_row
> 0:
33 elif not buf
.selection_state
:
34 inhibit_history_search(buf
, lambda: buf
.history_backward())
37 buf
= ev
.current_buffer
38 if buf
.document
.cursor_position_row
< buf
.document
.line_count
- 1:
40 elif not buf
.selection_state
:
41 inhibit_history_search(buf
, lambda: buf
.history_forward())
43 bind(K
.Escape
, u
'p')(lambda ev
: ev
.current_buffer
.history_backward())
44 bind(K
.Escape
, u
'n')(lambda ev
: ev
.current_buffer
.history_forward())