This commit is contained in:
Kovid Goyal 2021-05-23 11:22:29 +05:30
parent 4fd0446538
commit 32f6f18527
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
5 changed files with 19 additions and 25 deletions

View File

@ -5,6 +5,7 @@
import os import os
from typing import Any, Dict, Iterable, Optional, Tuple, Type, Union from typing import Any, Dict, Iterable, Optional, Tuple, Type, Union
from kitty.cli_stub import DiffCLIOptions
from kitty.conf.definition import config_lines from kitty.conf.definition import config_lines
from kitty.conf.utils import ( from kitty.conf.utils import (
init_config as _init_config, key_func, load_config as _load_config, init_config as _init_config, key_func, load_config as _load_config,
@ -12,10 +13,9 @@ from kitty.conf.utils import (
) )
from kitty.constants import config_dir from kitty.constants import config_dir
from kitty.options_stub import DiffOptions from kitty.options_stub import DiffOptions
from kitty.cli_stub import DiffCLIOptions
from kitty.rgb import color_as_sgr from kitty.rgb import color_as_sgr
from .config_data import all_options, type_convert from .config_data import all_options
defaults: Optional[DiffOptions] = None defaults: Optional[DiffOptions] = None
@ -96,7 +96,7 @@ def parse_config(lines: Iterable[str], check_keys: bool = True) -> Dict[str, Any
parse_config_base( parse_config_base(
lines, lines,
defaults, defaults,
type_convert, all_options,
special_handling, special_handling,
ans, ans,
check_keys=check_keys check_keys=check_keys

View File

@ -122,10 +122,3 @@ k('next_match', '>', 'scroll_to next-match', _('Scroll to next search match'))
k('prev_match', '<', 'scroll_to prev-match', _('Scroll to previous search match')) k('prev_match', '<', 'scroll_to prev-match', _('Scroll to previous search match'))
k('search_forward_simple', 'f', 'start_search substring forward', _('Search forward (no regex)')) k('search_forward_simple', 'f', 'start_search substring forward', _('Search forward (no regex)'))
k('search_backward_simple', 'b', 'start_search substring backward', _('Search backward (no regex)')) k('search_backward_simple', 'b', 'start_search substring backward', _('Search backward (no regex)'))
def type_convert(name: str, val: Any) -> Any:
o = all_options.get(name)
if isinstance(o, Option):
val = o.option_type(val)
return val

View File

@ -98,6 +98,17 @@ def choices(*choices: str) -> Choice:
return Choice(choices) return Choice(choices)
def create_type_converter(all_options: Dict) -> Callable[[str, Any], Any]:
from .definition import Option
def type_convert(name: str, val: Any) -> Any:
o = all_options.get(name)
if isinstance(o, Option):
val = o.option_type(val)
return val
return type_convert
def parse_line( def parse_line(
line: str, line: str,
type_convert: Callable[[str, Any], Any], type_convert: Callable[[str, Any], Any],
@ -168,7 +179,7 @@ def _parse(
def parse_config_base( def parse_config_base(
lines: Iterable[str], lines: Iterable[str],
defaults: Any, defaults: Any,
type_convert: Callable[[str, Any], Any], all_options: Dict[str, Any],
special_handling: Callable, special_handling: Callable,
ans: Dict[str, Any], ans: Dict[str, Any],
check_keys: bool = True, check_keys: bool = True,
@ -176,7 +187,7 @@ def parse_config_base(
) -> None: ) -> None:
all_keys: Optional[FrozenSet[str]] = defaults._asdict() if check_keys else None all_keys: Optional[FrozenSet[str]] = defaults._asdict() if check_keys else None
_parse( _parse(
lines, type_convert, special_handling, ans, all_keys, accumulate_bad_lines lines, create_type_converter(all_options), special_handling, ans, all_keys, accumulate_bad_lines
) )

View File

@ -19,13 +19,11 @@ from .conf.utils import (
BadLine, init_config, key_func, load_config as _load_config, merge_dicts, BadLine, init_config, key_func, load_config as _load_config, merge_dicts,
parse_config_base, python_string, to_bool, to_cmdline parse_config_base, python_string, to_bool, to_cmdline
) )
from .config_data import ( from .config_data import InvalidMods, all_options, parse_mods, parse_shortcut
InvalidMods, all_options, parse_mods, parse_shortcut, type_convert
)
from .constants import cache_dir, defconf, is_macos from .constants import cache_dir, defconf, is_macos
from .fonts import FontFeature from .fonts import FontFeature
from .options_stub import Options as OptionsStub from .options_stub import Options as OptionsStub
from .types import SingleKey, MouseEvent from .types import MouseEvent, SingleKey
from .typing import TypedDict from .typing import TypedDict
from .utils import expandvars, log_error from .utils import expandvars, log_error
@ -693,7 +691,7 @@ def parse_config(lines: Iterable[str], check_keys: bool = True, accumulate_bad_l
parse_config_base( parse_config_base(
lines, lines,
defs, defs,
type_convert, all_options,
special_handling, special_handling,
ans, ans,
check_keys=check_keys, check_keys=check_keys,

View File

@ -1397,7 +1397,6 @@ automatically. Set it to :code:`x11` or :code:`wayland`
to force the choice.''')) to force the choice.'''))
# }}} # }}}
g('shortcuts') # {{{ g('shortcuts') # {{{
o('kitty_mod', 'ctrl+shift', option_type=to_modifiers, long_text=_(''' o('kitty_mod', 'ctrl+shift', option_type=to_modifiers, long_text=_('''
@ -1687,10 +1686,3 @@ the line (same as pressing the Home key)::
''')) '''))
# }}} # }}}
# }}} # }}}
def type_convert(name: str, val: Any) -> Any:
o = all_options.get(name)
if isinstance(o, Option):
val = o.option_type(val)
return val