from __future__ import annotations | |
from .key_processor import KeyPress | |
__all__ = [ | |
"EmacsState", | |
] | |
class EmacsState: | |
""" | |
Mutable class to hold Emacs specific state. | |
""" | |
def __init__(self) -> None: | |
# Simple macro recording. (Like Readline does.) | |
# (For Emacs mode.) | |
self.macro: list[KeyPress] | None = [] | |
self.current_recording: list[KeyPress] | None = None | |
def reset(self) -> None: | |
self.current_recording = None | |
def is_recording(self) -> bool: | |
"Tell whether we are recording a macro." | |
return self.current_recording is not None | |
def start_macro(self) -> None: | |
"Start recording macro." | |
self.current_recording = [] | |
def end_macro(self) -> None: | |
"End recording macro." | |
self.macro = self.current_recording | |
self.current_recording = None | |