Auto generate the list of all color config keys

This commit is contained in:
Kovid Goyal 2021-11-02 15:16:55 +05:30
parent 34d87b7a72
commit 39dcfb4e5d
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 309 additions and 43 deletions

View File

@ -4,26 +4,38 @@
import re import re
from typing import List
from kitty.conf.generate import write_output 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: def main() -> None:
from kitty.options.definition import definition from kitty.options.definition import definition
write_output('kitty', definition) write_output('kitty', definition)
nullable_colors = [] nullable_colors = []
all_colors = []
for opt in definition.iter_all_options(): 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'): if callable(opt.parser_func):
nullable_colors.append(opt.name) if opt.parser_func.__name__ in ('to_color_or_none', 'cursor_text_color'):
with open('kitty/rc/set_colors.py', 'r+') as f: nullable_colors.append(opt.name)
raw = f.read() all_colors.append(opt.name)
nraw = re.sub( elif opt.parser_func.__name__ in ('to_color', 'macos_titlebar_color'):
r'(# NULLABLE_COLORS_START).+?(\s+# NULLABLE_COLORS_END)', all_colors.append(opt.name)
r'\1' + '\n ' + '\n '.join(map(lambda x: f'{x!r},', sorted(nullable_colors))) + r'\2', patch_color_list('kitty/rc/set_colors.py', nullable_colors, 'NULLABLE')
raw, flags=re.DOTALL | re.MULTILINE) patch_color_list('kittens/themes/collection.py', all_colors, 'ALL', ' ' * 8)
if nraw != raw:
f.seek(0)
f.truncate()
f.write(nraw)
from kittens.diff.options.definition import definition as kd from kittens.diff.options.definition import definition as kd
write_output('kittens.diff', kd) write_output('kittens.diff', kd)

View File

@ -35,37 +35,291 @@ def patch_conf(raw: str, theme_name: str) -> str:
raw += '\n\n' raw += '\n\n'
nraw = raw + addition nraw = raw + addition
# comment out all existing color definitions # comment out all existing color definitions
color_conf_items = [f'color{i}' for i in range(256)] + list(filter(None, ''' color_conf_items = ( # {{{
foreground # generated by gen_config.py do not EDIT
background # ALL_COLORS_START
selection_foreground 'active_border_color',
selection_background 'active_tab_background',
'active_tab_foreground',
cursor 'background',
cursor_text_color 'bell_border_color',
'color0',
url_color 'color1',
'color10',
active_border_color 'color100',
inactive_border_color 'color101',
bell_border_color 'color102',
'color103',
wayland_titlebar_color 'color104',
macos_titlebar_color 'color105',
'color106',
active_tab_foreground 'color107',
active_tab_background 'color108',
inactive_tab_foreground 'color109',
inactive_tab_background 'color11',
tab_bar_background 'color110',
'color111',
mark1_foreground 'color112',
mark1_background 'color113',
mark2_foreground 'color114',
mark2_background 'color115',
mark3_foreground 'color116',
mark3_background 'color117',
'''.splitlines())) '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' pat = fr'^\s*({"|".join(color_conf_items)})\b'
return re.sub(pat, r'# \1', nraw, flags=re.MULTILINE) return re.sub(pat, r'# \1', nraw, flags=re.MULTILINE)