mirror of
https://github.com/kovidgoyal/kitty
synced 2026-06-09 15:08:13 +02:00
Typecheck map_type
This commit is contained in:
@@ -13,7 +13,7 @@ from .conf.utils import KeyAction, to_cmdline_implementation
|
||||
from .constants import config_dir
|
||||
from .fast_data_types import get_options
|
||||
from .guess_mime_type import guess_type
|
||||
from .options.utils import ActionAlias, resolve_aliases_and_parse_actions
|
||||
from .options.utils import ActionAlias, MapType, resolve_aliases_and_parse_actions
|
||||
from .types import run_once
|
||||
from .typing import MatchType
|
||||
from .utils import expandvars, get_editor, log_error, resolved_shell
|
||||
@@ -79,7 +79,7 @@ def parse(lines: Iterable[str]) -> Iterator[OpenAction]:
|
||||
for (mc, action_defns) in entries:
|
||||
actions: List[KeyAction] = []
|
||||
for defn in action_defns:
|
||||
actions.extend(resolve_aliases_and_parse_actions(defn, alias_map, 'open_action'))
|
||||
actions.extend(resolve_aliases_and_parse_actions(defn, alias_map, MapType.OPEN_ACTION))
|
||||
yield OpenAction(mc, tuple(actions))
|
||||
|
||||
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
# License: GPLv3 Copyright: 2021, Kovid Goyal <kovid at kovidgoyal.net>
|
||||
|
||||
|
||||
import enum
|
||||
import re
|
||||
import sys
|
||||
from functools import lru_cache
|
||||
@@ -50,6 +51,12 @@ func_with_args = KeyFuncWrapper[FuncArgsType]()
|
||||
DELETE_ENV_VAR = '_delete_this_env_var_'
|
||||
|
||||
|
||||
class MapType(enum.Enum):
|
||||
MAP = 'map'
|
||||
MOUSE_MAP = 'mouse_map'
|
||||
OPEN_ACTION = 'open_action'
|
||||
|
||||
|
||||
class InvalidMods(ValueError):
|
||||
pass
|
||||
|
||||
@@ -930,7 +937,7 @@ def narrow_symbols(val: str) -> Iterable[Tuple[Tuple[int, int], int]]:
|
||||
yield x, int(y or 1)
|
||||
|
||||
|
||||
def parse_key_action(action: str, action_type: str = 'map') -> KeyAction:
|
||||
def parse_key_action(action: str, action_type: MapType = MapType.MAP) -> KeyAction:
|
||||
parts = action.strip().split(maxsplit=1)
|
||||
func = parts[0]
|
||||
if len(parts) == 1:
|
||||
@@ -961,7 +968,7 @@ class AliasMap:
|
||||
self.aliases.update(aa.aliases)
|
||||
|
||||
@lru_cache(maxsize=256)
|
||||
def resolve_aliases(self, definition: str, map_type: str = 'map') -> Tuple[KeyAction, ...]:
|
||||
def resolve_aliases(self, definition: str, map_type: MapType = MapType.MAP) -> Tuple[KeyAction, ...]:
|
||||
return tuple(resolve_aliases_and_parse_actions(definition, self.aliases, map_type))
|
||||
|
||||
|
||||
@@ -977,7 +984,7 @@ def build_action_aliases(raw: Dict[str, str], first_arg_replacement: str = '') -
|
||||
|
||||
|
||||
def resolve_aliases_and_parse_actions(
|
||||
defn: str, aliases: Dict[str, List[ActionAlias]], map_type: str
|
||||
defn: str, aliases: Dict[str, List[ActionAlias]], map_type: MapType
|
||||
) -> Iterator[KeyAction]:
|
||||
parts = defn.split(maxsplit=1)
|
||||
if len(parts) == 1:
|
||||
@@ -1017,7 +1024,7 @@ def resolve_aliases_and_parse_actions(
|
||||
|
||||
class BaseDefinition:
|
||||
no_op_actions = frozenset(('noop', 'no-op', 'no_op'))
|
||||
map_type: str = 'map'
|
||||
map_type: MapType = MapType.MAP
|
||||
definition_location: CurrentlyParsing
|
||||
|
||||
def __init__(self, definition: str = '') -> None:
|
||||
@@ -1045,7 +1052,7 @@ def resolve_key_mods(kitty_mod: int, mods: int) -> int:
|
||||
|
||||
|
||||
class MouseMapping(BaseDefinition):
|
||||
map_type: str = 'mouse_map'
|
||||
map_type: MapType = MapType.MOUSE_MAP
|
||||
|
||||
def __init__(
|
||||
self, button: int = 0, mods: int = 0, repeat_count: int = 1, grabbed: bool = False,
|
||||
|
||||
Reference in New Issue
Block a user