Spaces:
Sleeping
Sleeping
""" | |
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})" | |