From 9a0848911291a5467acac88fdae0d6bd6e82e27d Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 13 Nov 2023 01:02:02 +0530 Subject: [PATCH] Fix config file reloading not working is a system config file is set and no user config file is present at startup Fixes #6801 --- docs/kittens/custom.rst | 5 +++-- kitty/boss.py | 2 +- kitty/conf/generate.py | 2 ++ kitty/config.py | 6 ++++-- kitty/options/types.py | 2 ++ 5 files changed, 12 insertions(+), 5 deletions(-) diff --git a/docs/kittens/custom.rst b/docs/kittens/custom.rst index 0387957b7..41b21eeaa 100644 --- a/docs/kittens/custom.rst +++ b/docs/kittens/custom.rst @@ -337,9 +337,10 @@ You can parse and read the options in your kitten using the following code: return ans overrides = tuple(overrides) if overrides is not None else () - opts_dict, paths = _load_config(defaults, parse_config, merge_result_dicts, *paths, overrides=overrides) + opts_dict, found_paths = _load_config(defaults, parse_config, merge_result_dicts, *paths, overrides=overrides) opts = Options(opts_dict) - opts.config_paths = paths + opts.config_paths = found_paths + opts.all_config_paths = paths opts.config_overrides = overrides return opts diff --git a/kitty/boss.py b/kitty/boss.py index af0637fdf..010468437 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -2574,7 +2574,7 @@ class Boss: from .cli import default_config_paths from .config import load_config old_opts = get_options() - prev_paths = old_opts.config_paths or default_config_paths(self.args.config) + prev_paths = old_opts.all_config_paths or default_config_paths(self.args.config) paths = paths or prev_paths bad_lines: List[BadLine] = [] opts = load_config(*paths, overrides=old_opts.config_overrides if apply_overrides else None, accumulate_bad_lines=bad_lines) diff --git a/kitty/conf/generate.py b/kitty/conf/generate.py index fba923633..8587e54f6 100644 --- a/kitty/conf/generate.py +++ b/kitty/conf/generate.py @@ -198,6 +198,8 @@ def generate_class(defn: Definition, loc: str) -> Tuple[str, str]: a(' ' + ', '.join(grp) + ',') a(' ))') + a(' config_paths: typing.Tuple[str, ...] = ()') + a(' all_config_paths: typing.Tuple[str, ...] = ()') a(' config_paths: typing.Tuple[str, ...] = ()') a(' config_overrides: typing.Tuple[str, ...] = ()') a('') diff --git a/kitty/config.py b/kitty/config.py index fdad95004..ea838c4d0 100644 --- a/kitty/config.py +++ b/kitty/config.py @@ -164,7 +164,8 @@ def load_config(*paths: str, overrides: Optional[Iterable[str]] = None, accumula from .options.parse import merge_result_dicts overrides = tuple(overrides) if overrides is not None else () - opts_dict, paths = _load_config(defaults, partial(parse_config, accumulate_bad_lines=accumulate_bad_lines), merge_result_dicts, *paths, overrides=overrides) + opts_dict, found_paths = _load_config( + defaults, partial(parse_config, accumulate_bad_lines=accumulate_bad_lines), merge_result_dicts, *paths, overrides=overrides) opts = Options(opts_dict) opts.alias_map = build_action_aliases(opts.kitten_alias, 'kitten') @@ -179,7 +180,8 @@ def load_config(*paths: str, overrides: Optional[Iterable[str]] = None, accumula if opts.background_opacity < 1.0 and opts.macos_titlebar_color > 0: log_error('Cannot use both macos_titlebar_color and background_opacity') opts.macos_titlebar_color = 0 - opts.config_paths = paths + opts.config_paths = found_paths + opts.all_config_paths = paths opts.config_overrides = overrides return opts diff --git a/kitty/options/types.py b/kitty/options/types.py index 720acf541..383723da6 100644 --- a/kitty/options/types.py +++ b/kitty/options/types.py @@ -663,6 +663,8 @@ class Options: 0xa8a8a8, 0xb2b2b2, 0xbcbcbc, 0xc6c6c6, 0xd0d0d0, 0xdadada, 0xe4e4e4, 0xeeeeee, )) config_paths: typing.Tuple[str, ...] = () + all_config_paths: typing.Tuple[str, ...] = () + config_paths: typing.Tuple[str, ...] = () config_overrides: typing.Tuple[str, ...] = () def __init__(self, options_dict: typing.Optional[typing.Dict[str, typing.Any]] = None) -> None: