Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/prompt_toolkit/key_binding/bindings/open_in_editor.py: 56%

Shortcuts on this page

r m x   toggle line displays

j k   next/prev highlighted chunk

0   (zero) top of page

1   (one) first highlighted chunk

16 statements  

1""" 

2Open in editor key bindings. 

3""" 

4 

5from __future__ import annotations 

6 

7from prompt_toolkit.filters import emacs_mode, has_selection, vi_navigation_mode 

8 

9from ..key_bindings import KeyBindings, KeyBindingsBase, merge_key_bindings 

10from .named_commands import get_by_name 

11 

12__all__ = [ 

13 "load_open_in_editor_bindings", 

14 "load_emacs_open_in_editor_bindings", 

15 "load_vi_open_in_editor_bindings", 

16] 

17 

18 

19def load_open_in_editor_bindings() -> KeyBindingsBase: 

20 """ 

21 Load both the Vi and emacs key bindings for handling edit-and-execute-command. 

22 """ 

23 return merge_key_bindings( 

24 [ 

25 load_emacs_open_in_editor_bindings(), 

26 load_vi_open_in_editor_bindings(), 

27 ] 

28 ) 

29 

30 

31def load_emacs_open_in_editor_bindings() -> KeyBindings: 

32 """ 

33 Pressing C-X C-E will open the buffer in an external editor. 

34 """ 

35 key_bindings = KeyBindings() 

36 

37 key_bindings.add("c-x", "c-e", filter=emacs_mode & ~has_selection)( 

38 get_by_name("edit-and-execute-command") 

39 ) 

40 

41 return key_bindings 

42 

43 

44def load_vi_open_in_editor_bindings() -> KeyBindings: 

45 """ 

46 Pressing 'v' in navigation mode will open the buffer in an external editor. 

47 """ 

48 key_bindings = KeyBindings() 

49 key_bindings.add("v", filter=vi_navigation_mode)( 

50 get_by_name("edit-and-execute-command") 

51 ) 

52 return key_bindings