Coverage for /pythoncovmergedfiles/medio/medio/usr/local/lib/python3.11/site-packages/prompt_toolkit/key_binding/emacs_state.py: 59%

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

17 statements  

1from __future__ import annotations 

2 

3from .key_processor import KeyPress 

4 

5__all__ = [ 

6 "EmacsState", 

7] 

8 

9 

10class EmacsState: 

11 """ 

12 Mutable class to hold Emacs specific state. 

13 """ 

14 

15 def __init__(self) -> None: 

16 # Simple macro recording. (Like Readline does.) 

17 # (For Emacs mode.) 

18 self.macro: list[KeyPress] | None = [] 

19 self.current_recording: list[KeyPress] | None = None 

20 

21 def reset(self) -> None: 

22 self.current_recording = None 

23 

24 @property 

25 def is_recording(self) -> bool: 

26 "Tell whether we are recording a macro." 

27 return self.current_recording is not None 

28 

29 def start_macro(self) -> None: 

30 "Start recording macro." 

31 self.current_recording = [] 

32 

33 def end_macro(self) -> None: 

34 "End recording macro." 

35 self.macro = self.current_recording 

36 self.current_recording = None