diff --git a/kittens/panel/main.py b/kittens/panel/main.py index 32b771a6d..7312fa699 100644 --- a/kittens/panel/main.py +++ b/kittens/panel/main.py @@ -29,7 +29,7 @@ from kitty.fast_data_types import ( toggle_os_window_visibility, ) from kitty.os_window_size import WindowSizeData, edge_spacing -from kitty.simple_cli_definitions import panel_kitten_options_spec +from kitty.simple_cli_definitions import build_panel_cli_spec from kitty.types import LayerShellConfig from kitty.typing_compat import BossType, EdgeLiteral from kitty.utils import log_error @@ -47,6 +47,12 @@ help_text = 'Use a command line program to draw a GPU accelerated panel on your usage = '[cmdline-to-run ...]' +def panel_kitten_options_spec() -> str: + if not hasattr(panel_kitten_options_spec, 'ans'): + setattr(panel_kitten_options_spec, 'ans', build_panel_cli_spec({})) + ans: str = getattr(panel_kitten_options_spec, 'ans') + return ans + def parse_panel_args(args: list[str]) -> tuple[PanelCLIOptions, list[str]]: return parse_args(args, panel_kitten_options_spec, usage, help_text, 'kitty +kitten panel', result_class=PanelCLIOptions) diff --git a/kitty/cli_stub.py b/kitty/cli_stub.py index 2edb40533..5944b8555 100644 --- a/kitty/cli_stub.py +++ b/kitty/cli_stub.py @@ -20,7 +20,7 @@ ThemesCLIOptions = TransferCLIOptions = LoadConfigRCOptions = ActionRCOptions = def generate_stub() -> None: from .cli import as_type_stub from .conf.utils import save_type_stub - from .simple_cli_definitions import panel_kitten_options_spec, parse_option_spec + from .simple_cli_definitions import parse_option_spec text = 'import typing\n\n\n' def do(otext: str | None = None, cls: str = 'CLIOptions', extra_fields: Sequence[str] = ()) -> None: @@ -59,6 +59,7 @@ def generate_stub() -> None: from kittens.icat.main import OPTIONS as OS do(OS, 'IcatCLIOptions') + from kittens.panel.main import panel_kitten_options_spec do(panel_kitten_options_spec(), 'PanelCLIOptions') from kittens.resize_window.main import OPTIONS diff --git a/kitty/main.py b/kitty/main.py index 4b86ca41d..86e015b11 100644 --- a/kitty/main.py +++ b/kitty/main.py @@ -471,7 +471,6 @@ def kitty_main(called_from_panel: bool = False) -> None: 'Run kitty and open the specified files or URLs in it, using launch-actions.conf. For details' ' see https://sw.kovidgoyal.net/kitty/open_actions/#scripting-the-opening-of-files-with-kitty-on-macos' '\n\nAll the normal kitty options can be used.') - cli_flags = None else: if not called_from_panel: cli_flags = getattr(sys, 'kitty_run_data', {}).get('cli_flags', None) diff --git a/kitty/simple_cli_definitions.py b/kitty/simple_cli_definitions.py index 195bb560d..834ad877b 100644 --- a/kitty/simple_cli_definitions.py +++ b/kitty/simple_cli_definitions.py @@ -303,7 +303,7 @@ def generate_c_parsers() -> Iterator[str]: yield from generate_c_parser_for('kitty', kitty_options_spec()) yield '' yield '' - yield from generate_c_parser_for('panel_kitten', panel_kitten_options_spec()) + yield from generate_c_parser_for('panel_kitten', build_panel_cli_spec({})) yield '' @@ -524,9 +524,8 @@ type=bool-set # panel CLI spec {{{ -def panel_kitten_options_spec() -> str: - if not hasattr(panel_kitten_options_spec, 'ans'): - OPTIONS = r''' +def build_panel_cli_spec(defaults: dict[str, str]) -> str: + return r''' --lines default=1 The number of lines shown in the panel. Ignored for background, centered, and vertical panels. @@ -689,10 +688,7 @@ Path to a log file to store STDOUT/STDERR when using :option:`--detach` --debug-rendering type=bool-set For internal debugging use. -''' - setattr(panel_kitten_options_spec, 'ans', OPTIONS.format( - appname=appname, listen_on_defn=listen_on_defn, - )) - ans: str = getattr(panel_kitten_options_spec, 'ans') - return ans +'''.format(appname=appname, listen_on_defn=listen_on_defn, **defaults) + + # }}}