From 8d855a7eb4a1e09bd74ca419154407b24ff5e8a5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 6 Oct 2025 10:19:27 +0530 Subject: [PATCH] Remove the docs on using kitty config infrastructure in custom kittens That config infrastructure isnt really maintained anymore since builtin kittens have now been almost all ported to Go. So in future people should just use any of python's stdlib config modules such as tomllib to store and retrieve their kitten configs. --- docs/kittens/custom.rst | 102 ---------------------------------------- 1 file changed, 102 deletions(-) diff --git a/docs/kittens/custom.rst b/docs/kittens/custom.rst index f6d84c0f0..7c39e10ef 100644 --- a/docs/kittens/custom.rst +++ b/docs/kittens/custom.rst @@ -298,108 +298,6 @@ So if you run kitty from another kitty instance, the output will be visible in the first kitty instance. -Adding options to kittens ----------------------------- - -If you would like to use kitty's config framework to make your kittens -configurable, you will need some boilerplate. Put the following files in the -directory of your kitten. - -:file:`kitten_options_definition.py` - -.. code-block:: python - - from kitty.conf.types import Action, Definition - - definition = Definition( - '!kitten_options_utils', - Action( - 'map', 'parse_map', - {'key_definitions': 'kitty.conf.utils.KittensKeyMap'}, - ['kitty.types.ParsedShortcut', 'kitty.conf.utils.KeyAction'] - ), - ) - - agr = definition.add_group - egr = definition.end_group - opt = definition.add_option - map = definition.add_map - - # main options {{{ - agr('main', 'Main') - - opt('some_option', '33', - option_type='some_option_parser', - long_text=''' - Help text for this option - ''' - ) - egr() # }}} - - # shortcuts {{{ - agr('shortcuts', 'Keyboard shortcuts') - - map('Quit', 'quit q quit') - egr() # }}} - - -:file:`kitten_options_utils.py` - -.. code-block:: python - - from kitty.conf.utils import KittensKeyDefinition, key_func, parse_kittens_key - - func_with_args, args_funcs = key_func() - FuncArgsType = Tuple[str, Sequence[Any]] - - def some_option_parser(val: str) -> int: - return int(val) + 3000 - - def parse_map(val: str) -> Iterable[KittensKeyDefinition]: - x = parse_kittens_key(val, args_funcs) - if x is not None: - yield x - -Then run:: - - kitty +runpy 'from kitty.conf.generate import main; main()' /path/to/kitten_options_definition.py - -You can parse and read the options in your kitten using the following code: - -.. code-block:: python - - from .kitten_options_types import Options, defaults - from kitty.conf.utils import load_config as _load_config, parse_config_base - from typing import Optional, Iterable, Dict, Any - - def load_config(*paths: str, overrides: Optional[Iterable[str]] = None) -> Options: - from .kitten_options_parse import ( - create_result_dict, merge_result_dicts, parse_conf_item - ) - - def parse_config(lines: Iterable[str]) -> Dict[str, Any]: - ans: Dict[str, Any] = create_result_dict() - parse_config_base( - lines, - parse_conf_item, - ans, - ) - return ans - - overrides = tuple(overrides) if overrides is not None else () - opts_dict, found_paths = _load_config(defaults, parse_config, merge_result_dicts, *paths, overrides=overrides) - opts = Options(opts_dict) - opts.config_paths = found_paths - opts.all_config_paths = paths - opts.config_overrides = overrides - return opts - -See `the code -`__ -for the builtin :doc:`diff kitten ` for examples of creating more -options and keyboard shortcuts. - - Developing builtin kittens for inclusion with kitty ----------------------------------------------------------