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