diff --git a/gen-config.py b/gen-config.py index 73b46660b..56b566bd2 100755 --- a/gen-config.py +++ b/gen-config.py @@ -4,26 +4,38 @@ import re +from typing import List + from kitty.conf.generate import write_output +def patch_color_list(path: str, colors: List[str], name: str, spc: str = ' ') -> None: + with open(path, 'r+') as f: + raw = f.read() + nraw = re.sub( + fr'(# {name}_COLORS_START).+?(\s+# {name}_COLORS_END)', + r'\1' + f'\n{spc}' + f'\n{spc}'.join(map(lambda x: f'{x!r},', sorted(colors))) + r'\2', + raw, flags=re.DOTALL | re.MULTILINE) + if nraw != raw: + f.seek(0) + f.truncate() + f.write(nraw) + + def main() -> None: from kitty.options.definition import definition write_output('kitty', definition) nullable_colors = [] + all_colors = [] for opt in definition.iter_all_options(): - if callable(opt.parser_func) and opt.parser_func.__name__ in ('to_color_or_none', 'cursor_text_color'): - nullable_colors.append(opt.name) - with open('kitty/rc/set_colors.py', 'r+') as f: - raw = f.read() - nraw = re.sub( - r'(# NULLABLE_COLORS_START).+?(\s+# NULLABLE_COLORS_END)', - r'\1' + '\n ' + '\n '.join(map(lambda x: f'{x!r},', sorted(nullable_colors))) + r'\2', - raw, flags=re.DOTALL | re.MULTILINE) - if nraw != raw: - f.seek(0) - f.truncate() - f.write(nraw) + if callable(opt.parser_func): + if opt.parser_func.__name__ in ('to_color_or_none', 'cursor_text_color'): + nullable_colors.append(opt.name) + all_colors.append(opt.name) + elif opt.parser_func.__name__ in ('to_color', 'macos_titlebar_color'): + all_colors.append(opt.name) + patch_color_list('kitty/rc/set_colors.py', nullable_colors, 'NULLABLE') + patch_color_list('kittens/themes/collection.py', all_colors, 'ALL', ' ' * 8) from kittens.diff.options.definition import definition as kd write_output('kittens.diff', kd) diff --git a/kittens/themes/collection.py b/kittens/themes/collection.py index 282aab1b5..508089773 100644 --- a/kittens/themes/collection.py +++ b/kittens/themes/collection.py @@ -35,37 +35,291 @@ def patch_conf(raw: str, theme_name: str) -> str: raw += '\n\n' nraw = raw + addition # comment out all existing color definitions - color_conf_items = [f'color{i}' for i in range(256)] + list(filter(None, ''' -foreground -background -selection_foreground -selection_background - -cursor -cursor_text_color - -url_color - -active_border_color -inactive_border_color -bell_border_color - -wayland_titlebar_color -macos_titlebar_color - -active_tab_foreground -active_tab_background -inactive_tab_foreground -inactive_tab_background -tab_bar_background - -mark1_foreground -mark1_background -mark2_foreground -mark2_background -mark3_foreground -mark3_background -'''.splitlines())) + color_conf_items = ( # {{{ + # generated by gen_config.py do not EDIT + # ALL_COLORS_START + 'active_border_color', + 'active_tab_background', + 'active_tab_foreground', + 'background', + 'bell_border_color', + 'color0', + 'color1', + 'color10', + 'color100', + 'color101', + 'color102', + 'color103', + 'color104', + 'color105', + 'color106', + 'color107', + 'color108', + 'color109', + 'color11', + 'color110', + 'color111', + 'color112', + 'color113', + 'color114', + 'color115', + 'color116', + 'color117', + 'color118', + 'color119', + 'color12', + 'color120', + 'color121', + 'color122', + 'color123', + 'color124', + 'color125', + 'color126', + 'color127', + 'color128', + 'color129', + 'color13', + 'color130', + 'color131', + 'color132', + 'color133', + 'color134', + 'color135', + 'color136', + 'color137', + 'color138', + 'color139', + 'color14', + 'color140', + 'color141', + 'color142', + 'color143', + 'color144', + 'color145', + 'color146', + 'color147', + 'color148', + 'color149', + 'color15', + 'color150', + 'color151', + 'color152', + 'color153', + 'color154', + 'color155', + 'color156', + 'color157', + 'color158', + 'color159', + 'color16', + 'color160', + 'color161', + 'color162', + 'color163', + 'color164', + 'color165', + 'color166', + 'color167', + 'color168', + 'color169', + 'color17', + 'color170', + 'color171', + 'color172', + 'color173', + 'color174', + 'color175', + 'color176', + 'color177', + 'color178', + 'color179', + 'color18', + 'color180', + 'color181', + 'color182', + 'color183', + 'color184', + 'color185', + 'color186', + 'color187', + 'color188', + 'color189', + 'color19', + 'color190', + 'color191', + 'color192', + 'color193', + 'color194', + 'color195', + 'color196', + 'color197', + 'color198', + 'color199', + 'color2', + 'color20', + 'color200', + 'color201', + 'color202', + 'color203', + 'color204', + 'color205', + 'color206', + 'color207', + 'color208', + 'color209', + 'color21', + 'color210', + 'color211', + 'color212', + 'color213', + 'color214', + 'color215', + 'color216', + 'color217', + 'color218', + 'color219', + 'color22', + 'color220', + 'color221', + 'color222', + 'color223', + 'color224', + 'color225', + 'color226', + 'color227', + 'color228', + 'color229', + 'color23', + 'color230', + 'color231', + 'color232', + 'color233', + 'color234', + 'color235', + 'color236', + 'color237', + 'color238', + 'color239', + 'color24', + 'color240', + 'color241', + 'color242', + 'color243', + 'color244', + 'color245', + 'color246', + 'color247', + 'color248', + 'color249', + 'color25', + 'color250', + 'color251', + 'color252', + 'color253', + 'color254', + 'color255', + 'color26', + 'color27', + 'color28', + 'color29', + 'color3', + 'color30', + 'color31', + 'color32', + 'color33', + 'color34', + 'color35', + 'color36', + 'color37', + 'color38', + 'color39', + 'color4', + 'color40', + 'color41', + 'color42', + 'color43', + 'color44', + 'color45', + 'color46', + 'color47', + 'color48', + 'color49', + 'color5', + 'color50', + 'color51', + 'color52', + 'color53', + 'color54', + 'color55', + 'color56', + 'color57', + 'color58', + 'color59', + 'color6', + 'color60', + 'color61', + 'color62', + 'color63', + 'color64', + 'color65', + 'color66', + 'color67', + 'color68', + 'color69', + 'color7', + 'color70', + 'color71', + 'color72', + 'color73', + 'color74', + 'color75', + 'color76', + 'color77', + 'color78', + 'color79', + 'color8', + 'color80', + 'color81', + 'color82', + 'color83', + 'color84', + 'color85', + 'color86', + 'color87', + 'color88', + 'color89', + 'color9', + 'color90', + 'color91', + 'color92', + 'color93', + 'color94', + 'color95', + 'color96', + 'color97', + 'color98', + 'color99', + 'cursor', + 'cursor_text_color', + 'foreground', + 'inactive_border_color', + 'inactive_tab_background', + 'inactive_tab_foreground', + 'macos_titlebar_color', + 'mark1_background', + 'mark1_foreground', + 'mark2_background', + 'mark2_foreground', + 'mark3_background', + 'mark3_foreground', + 'selection_background', + 'selection_foreground', + 'tab_bar_background', + 'tab_bar_margin_color', + 'url_color', + 'wayland_titlebar_color', + # ALL_COLORS_END + ) # }}} pat = fr'^\s*({"|".join(color_conf_items)})\b' return re.sub(pat, r'# \1', nraw, flags=re.MULTILINE)