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 bind
= PTK
.key_binding
.bindings
.utils
.create_handle_decorator(reg
)
20 def inhibit_history_search(buf
, fn
):
21 searchp
, searchtext
= buf
.enable_history_search
, buf
.history_search_text
22 buf
.enable_history_search
= F
.Never()
26 buf
.enable_history_search
, buf
.history_search_text
= searchp
, searchtext
29 buf
= ev
.current_buffer
30 if buf
.document
.cursor_position_row
> 0:
32 elif not buf
.selection_state
:
33 inhibit_history_search(buf
, lambda: buf
.history_backward())
36 buf
= ev
.current_buffer
37 if buf
.document
.cursor_position_row
< buf
.document
.line_count
- 1:
39 elif not buf
.selection_state
:
40 inhibit_history_search(buf
, lambda: buf
.history_forward())
42 bind(K
.Escape
, u
'p')(lambda ev
: ev
.current_buffer
.history_backward())
43 bind(K
.Escape
, u
'n')(lambda ev
: ev
.current_buffer
.history_forward())