12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- """
- Data structures for the selection.
- """
- from __future__ import annotations
- from enum import Enum
- __all__ = [
- "SelectionType",
- "PasteMode",
- "SelectionState",
- ]
- class SelectionType(Enum):
- """
- Type of selection.
- """
- #: Characters. (Visual in Vi.)
- CHARACTERS = "CHARACTERS"
- #: Whole lines. (Visual-Line in Vi.)
- LINES = "LINES"
- #: A block selection. (Visual-Block in Vi.)
- BLOCK = "BLOCK"
- class PasteMode(Enum):
- EMACS = "EMACS" # Yank like emacs.
- VI_AFTER = "VI_AFTER" # When pressing 'p' in Vi.
- VI_BEFORE = "VI_BEFORE" # When pressing 'P' in Vi.
- class SelectionState:
- """
- State of the current selection.
- :param original_cursor_position: int
- :param type: :class:`~.SelectionType`
- """
- def __init__(
- self,
- original_cursor_position: int = 0,
- type: SelectionType = SelectionType.CHARACTERS,
- ) -> None:
- self.original_cursor_position = original_cursor_position
- self.type = type
- self.shift_mode = False
- def enter_shift_mode(self) -> None:
- self.shift_mode = True
- def __repr__(self) -> str:
- return f"{self.__class__.__name__}(original_cursor_position={self.original_cursor_position!r}, type={self.type!r})"
|