From c7fcd44ecf64e23daaca3f77d6060a991af727d5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Thu, 19 Jun 2025 11:58:02 +0530 Subject: [PATCH] ... --- kitty/conf/generate.py | 52 +++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 23 deletions(-) diff --git a/kitty/conf/generate.py b/kitty/conf/generate.py index 73e956345..e6ca5c706 100644 --- a/kitty/conf/generate.py +++ b/kitty/conf/generate.py @@ -650,30 +650,36 @@ def basic_defval(d: Any) -> str: a(f'default: return ans, fmt.Errorf("%#v is not a valid value for %s. Valid values are: %s", val, "{c}", "{vals}")') a('}''}') + has_parsers = bool(go_parsers or keyboard_shortcuts) a('func (c *Config) Parse(key, val string) (err error) {') - a('switch key {') - a('default: return fmt.Errorf("Unknown configuration key: %#v", key)') - for oname, pname in go_parsers.items(): - ol = oname.lower() - is_multiple = oname in multiopts - a(f'case "{ol}":') - if is_multiple: - a(f'var temp_val []{go_types[oname]}') - else: - a(f'var temp_val {go_types[oname]}') - a(f'temp_val, err = {pname}') - a(f'if err != nil {{ return fmt.Errorf("Failed to parse {ol} = %#v with error: %w", val, err) }}') - if is_multiple: - a(f'c.{oname} = append(c.{oname}, temp_val...)') - else: - a(f'c.{oname} = temp_val') - if keyboard_shortcuts: - a('case "map":') - a('tempsc, err := config.ParseMap(val)') - a('if err != nil { return fmt.Errorf("Failed to parse map = %#v with error: %w", val, err) }') - a('c.KeyboardShortcuts = append(c.KeyboardShortcuts, tempsc)') - a('}') - a('return}') + if has_parsers: + if go_parsers: + a('switch key {') + a('default: return fmt.Errorf("Unknown configuration key: %#v", key)') + for oname, pname in go_parsers.items(): + ol = oname.lower() + is_multiple = oname in multiopts + a(f'case "{ol}":') + if is_multiple: + a(f'var temp_val []{go_types[oname]}') + else: + a(f'var temp_val {go_types[oname]}') + a(f'temp_val, err = {pname}') + a(f'if err != nil {{ return fmt.Errorf("Failed to parse {ol} = %#v with error: %w", val, err) }}') + if is_multiple: + a(f'c.{oname} = append(c.{oname}, temp_val...)') + else: + a(f'c.{oname} = temp_val') + if keyboard_shortcuts: + a('case "map":') + a('tempsc, err := config.ParseMap(val)') + a('if err != nil { return fmt.Errorf("Failed to parse map = %#v with error: %w", val, err) }') + a('c.KeyboardShortcuts = append(c.KeyboardShortcuts, tempsc)') + a('}') + a('return}') + else: + a('return fmt.Errorf("Unknown configuration key: %#v", key)') + a('}') return '\n'.join(lines)