Dont resolve kitty_mod in the defaults key definitions
Needed to allow multiple load_config calls
This commit is contained in:
parent
5fa73e4413
commit
b4cb6e10ca
@ -269,11 +269,7 @@ def finalize_keys(opts: OptionsStub) -> None:
|
|||||||
if d is None: # clear_all_shortcuts
|
if d is None: # clear_all_shortcuts
|
||||||
defns = []
|
defns = []
|
||||||
else:
|
else:
|
||||||
defns.append(d)
|
defns.append(d.resolve_and_copy(opts.kitty_mod, opts.kitten_alias))
|
||||||
for d in defns:
|
|
||||||
d.resolve(opts.kitty_mod)
|
|
||||||
if opts.kitten_alias and d.action.func == 'kitten':
|
|
||||||
d.resolve_kitten_aliases(opts.kitten_alias)
|
|
||||||
keymap: KeyMap = {}
|
keymap: KeyMap = {}
|
||||||
sequence_map: SequenceMap = {}
|
sequence_map: SequenceMap = {}
|
||||||
|
|
||||||
@ -304,12 +300,7 @@ def finalize_mouse_mappings(opts: OptionsStub) -> None:
|
|||||||
if d is None: # clear_all_shortcuts
|
if d is None: # clear_all_shortcuts
|
||||||
defns = []
|
defns = []
|
||||||
else:
|
else:
|
||||||
defns.append(d)
|
defns.append(d.resolve_and_copy(opts.kitty_mod, opts.kitten_alias))
|
||||||
kitten_aliases: List[Dict[str, Sequence[str]]] = getattr(opts, 'kitten_alias')
|
|
||||||
for d in defns:
|
|
||||||
d.resolve(opts.kitty_mod)
|
|
||||||
if kitten_aliases and d.action.func == 'kitten':
|
|
||||||
d.resolve_kitten_aliases(kitten_aliases)
|
|
||||||
|
|
||||||
mousemap: MouseMap = {}
|
mousemap: MouseMap = {}
|
||||||
for defn in defns:
|
for defn in defns:
|
||||||
|
|||||||
@ -762,9 +762,9 @@ def parse_key_action(action: str, action_type: str = 'map') -> Optional[KeyActio
|
|||||||
class BaseDefinition:
|
class BaseDefinition:
|
||||||
action: KeyAction
|
action: KeyAction
|
||||||
|
|
||||||
def resolve_kitten_aliases(self, aliases: Dict[str, Sequence[str]]) -> None:
|
def resolve_kitten_aliases(self, aliases: Dict[str, Sequence[str]]) -> KeyAction:
|
||||||
if not self.action.args:
|
if not self.action.args or not aliases:
|
||||||
return
|
return self.action
|
||||||
kitten = self.action.args[0]
|
kitten = self.action.args[0]
|
||||||
rest = str(self.action.args[1] if len(self.action.args) > 1 else '')
|
rest = str(self.action.args[1] if len(self.action.args) > 1 else '')
|
||||||
changed = False
|
changed = False
|
||||||
@ -774,8 +774,7 @@ class BaseDefinition:
|
|||||||
kitten = expanded[0]
|
kitten = expanded[0]
|
||||||
if len(expanded) > 1:
|
if len(expanded) > 1:
|
||||||
rest = expanded[1] + ' ' + rest
|
rest = expanded[1] + ' ' + rest
|
||||||
if changed:
|
return self.action._replace(args=(kitten, rest.rstrip())) if changed else self.action
|
||||||
self.action = self.action._replace(args=(kitten, rest.rstrip()))
|
|
||||||
|
|
||||||
|
|
||||||
class MouseMapping(BaseDefinition):
|
class MouseMapping(BaseDefinition):
|
||||||
@ -790,8 +789,8 @@ class MouseMapping(BaseDefinition):
|
|||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f'MouseMapping({self.button}, {self.mods}, {self.repeat_count}, {self.grabbed}, {self.action})'
|
return f'MouseMapping({self.button}, {self.mods}, {self.repeat_count}, {self.grabbed}, {self.action})'
|
||||||
|
|
||||||
def resolve(self, kitty_mod: int) -> None:
|
def resolve_and_copy(self, kitty_mod: int, aliases: Dict[str, Sequence[str]]) -> 'MouseMapping':
|
||||||
self.mods = defines.resolve_key_mods(kitty_mod, self.mods)
|
return MouseMapping(self.button, defines.resolve_key_mods(kitty_mod, self.mods), self.repeat_count, self.grabbed, self.resolve_kitten_aliases(aliases))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def trigger(self) -> MouseEvent:
|
def trigger(self) -> MouseEvent:
|
||||||
@ -809,16 +808,14 @@ class KeyDefinition(BaseDefinition):
|
|||||||
def __repr__(self) -> str:
|
def __repr__(self) -> str:
|
||||||
return f'KeyDefinition({self.is_sequence}, {self.action}, {self.trigger.mods}, {self.trigger.is_native}, {self.trigger.key}, {self.rest})'
|
return f'KeyDefinition({self.is_sequence}, {self.action}, {self.trigger.mods}, {self.trigger.is_native}, {self.trigger.key}, {self.rest})'
|
||||||
|
|
||||||
def resolve(self, kitty_mod: int) -> None:
|
def resolve_and_copy(self, kitty_mod: int, aliases: Dict[str, Sequence[str]]) -> 'KeyDefinition':
|
||||||
|
|
||||||
def r(k: SingleKey) -> SingleKey:
|
def r(k: SingleKey) -> SingleKey:
|
||||||
mods = defines.resolve_key_mods(kitty_mod, k.mods)
|
mods = defines.resolve_key_mods(kitty_mod, k.mods)
|
||||||
key = k.key
|
return k._replace(mods=mods)
|
||||||
is_native = k.is_native
|
return KeyDefinition(
|
||||||
return SingleKey(mods, is_native, key)
|
self.is_sequence, self.resolve_kitten_aliases(aliases),
|
||||||
|
defines.resolve_key_mods(kitty_mod, self.trigger.mods),
|
||||||
self.trigger = r(self.trigger)
|
self.trigger.is_native, self.trigger.key, tuple(map(r, self.rest)))
|
||||||
self.rest = tuple(map(r, self.rest))
|
|
||||||
|
|
||||||
|
|
||||||
def parse_map(val: str) -> Iterable[KeyDefinition]:
|
def parse_map(val: str) -> Iterable[KeyDefinition]:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user