diff --git a/kittens/diff/config.py b/kittens/diff/config.py index 17fefce35..053dfbcfd 100644 --- a/kittens/diff/config.py +++ b/kittens/diff/config.py @@ -3,7 +3,7 @@ # License: GPL v3 Copyright: 2018, Kovid Goyal import os -from typing import Any, Dict, Iterable, Optional, Tuple, Type, Union +from typing import Any, Dict, FrozenSet, Iterable, Optional, Tuple, Type, Union from kitty.cli_stub import DiffCLIOptions from kitty.conf.definition import config_lines @@ -93,13 +93,16 @@ def special_handling(key: str, val: str, ans: Dict) -> bool: def parse_config(lines: Iterable[str], check_keys: bool = True) -> Dict[str, Any]: ans: Dict[str, Any] = {'key_definitions': {}} + defs: Optional[FrozenSet] = None + if check_keys: + defs = frozenset(defaults._fields) # type: ignore + parse_config_base( lines, - defaults, + defs, all_options, special_handling, ans, - check_keys=check_keys ) return ans diff --git a/kitty/conf/utils.py b/kitty/conf/utils.py index 8263b62ab..f8fb2c48c 100644 --- a/kitty/conf/utils.py +++ b/kitty/conf/utils.py @@ -182,16 +182,14 @@ def _parse( def parse_config_base( lines: Iterable[str], - defaults: Any, + all_option_names: Optional[FrozenSet], all_options: Dict[str, Any], special_handling: Callable, ans: Dict[str, Any], - check_keys: bool = True, accumulate_bad_lines: Optional[List[BadLine]] = None ) -> None: - all_keys: Optional[FrozenSet[str]] = defaults._asdict() if check_keys else None _parse( - lines, create_type_converter(all_options), special_handling, ans, all_keys, accumulate_bad_lines + lines, create_type_converter(all_options), special_handling, ans, all_option_names, accumulate_bad_lines ) diff --git a/kitty/config.py b/kitty/config.py index 7ec59ad67..0d1977f40 100644 --- a/kitty/config.py +++ b/kitty/config.py @@ -10,7 +10,7 @@ from contextlib import contextmanager, suppress from functools import partial from typing import ( Any, Callable, Dict, Generator, Iterable, List, NamedTuple, Optional, - Sequence, Set, Tuple, Type, Union + Sequence, Set, Tuple, Type, Union, FrozenSet ) from . import fast_data_types as defines @@ -684,9 +684,9 @@ def parse_config(lines: Iterable[str], check_keys: bool = True, accumulate_bad_l 'env': {}, 'kitten_aliases': {}, 'font_features': {}, 'mouse_mappings': [], 'mousemap': {} } - defs: Optional[OptionsStub] = None + defs: Optional[FrozenSet] = None if check_keys: - defs = defaults + defs = frozenset(defaults._fields) # type: ignore parse_config_base( lines, @@ -694,7 +694,6 @@ def parse_config(lines: Iterable[str], check_keys: bool = True, accumulate_bad_l all_options, special_handling, ans, - check_keys=check_keys, accumulate_bad_lines=accumulate_bad_lines ) return ans