Start work on parsing mouse mappings

This commit is contained in:
Kovid Goyal 2021-05-07 14:47:40 +05:30
parent 053c2ed2b9
commit 2973f33959
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C

View File

@ -430,6 +430,10 @@ def parse_key(val: str, key_definitions: List[KeyDefinition]) -> None:
key_definitions.append(KeyDefinition(False, paction, mods, is_native, key))
def parse_mouse_action(val: str, mouse_mappings: List['MouseMapping']) -> None:
pass
def parse_symbol_map(val: str) -> Dict[Tuple[int, int], str]:
parts = val.split()
symbol_map: Dict[Tuple[int, int], str] = {}
@ -502,6 +506,11 @@ def handle_map(key: str, val: str, ans: Dict[str, Any]) -> None:
parse_key(val, ans['key_definitions'])
@special_handler
def handle_mouse_map(key: str, val: str, ans: Dict[str, Any]) -> None:
parse_mouse_action(val, ans['mouse_mappings'])
@special_handler
def handle_symbol_map(key: str, val: str, ans: Dict[str, Any]) -> None:
ans['symbol_map'].update(parse_symbol_map(val))
@ -596,7 +605,7 @@ def option_names_for_completion() -> Generator[str, None, None]:
def parse_config(lines: Iterable[str], check_keys: bool = True, accumulate_bad_lines: Optional[List[BadLine]] = None) -> Dict[str, Any]:
ans: Dict[str, Any] = {
'symbol_map': {}, 'keymap': {}, 'sequence_map': {}, 'key_definitions': [],
'env': {}, 'kitten_aliases': {}, 'font_features': {}
'env': {}, 'kitten_aliases': {}, 'font_features': {}, 'mouse_mappings': [],
}
defs: Optional[OptionsStub] = None
if check_keys:
@ -635,8 +644,8 @@ def merge_configs(defaults: Dict, vals: Dict) -> Dict:
if isinstance(v, dict):
newvals = vals.get(k, {})
ans[k] = merge_dicts(v, newvals)
elif k == 'key_definitions':
ans['key_definitions'] = v + vals.get('key_definitions', [])
elif k in ('key_definitions', 'mouse_mappings'):
ans[k] = v + vals.get(k, [])
else:
ans[k] = vals.get(k, v)
return ans