mirror of
https://github.com/kovidgoyal/kitty
synced 2026-07-25 17:52:02 +02:00
DRYer
Make CLI Only kittens run in overlay windows when run via the kitten action mapping by default.
This commit is contained in:
@@ -7,10 +7,11 @@ import os
|
||||
import sys
|
||||
from contextlib import contextmanager
|
||||
from functools import partial
|
||||
from typing import TYPE_CHECKING, Any, Dict, FrozenSet, Generator, List, Optional, cast
|
||||
from typing import TYPE_CHECKING, Any, Callable, Dict, FrozenSet, Generator, List, NamedTuple, Optional, cast
|
||||
|
||||
from kitty.constants import list_kitty_resources
|
||||
from kitty.types import run_once
|
||||
from kitty.typing import BossType, WindowType
|
||||
from kitty.utils import resolve_abs_or_config_path
|
||||
|
||||
aliases = {'url_hints': 'hints'}
|
||||
@@ -72,16 +73,27 @@ def import_kitten_main_module(config_dir: str, kitten: str) -> Dict[str, Any]:
|
||||
}
|
||||
|
||||
|
||||
def create_kitten_handler(kitten: str, orig_args: List[str]) -> Any:
|
||||
class KittenMetadata(NamedTuple):
|
||||
handle_result: Callable[[Any, int, BossType], None] = lambda *a: None
|
||||
|
||||
type_of_input: Optional[str] = None
|
||||
no_ui: bool = False
|
||||
has_ready_notification: bool = False
|
||||
open_url_handler: Optional[Callable[[BossType, WindowType, str, int, str], bool]] = None
|
||||
|
||||
|
||||
|
||||
def create_kitten_handler(kitten: str, orig_args: List[str]) -> KittenMetadata:
|
||||
from kitty.constants import config_dir
|
||||
kitten = resolved_kitten(kitten)
|
||||
m = import_kitten_main_module(config_dir, kitten)
|
||||
ans = partial(m['end'], [kitten] + orig_args)
|
||||
setattr(ans, 'type_of_input', getattr(m['end'], 'type_of_input', None))
|
||||
setattr(ans, 'no_ui', getattr(m['end'], 'no_ui', False))
|
||||
setattr(ans, 'has_ready_notification', getattr(m['end'], 'has_ready_notification', False))
|
||||
setattr(ans, 'open_url_handler', getattr(m['end'], 'open_url_handler', None))
|
||||
return ans
|
||||
handle_result = m['end']
|
||||
return KittenMetadata(
|
||||
handle_result=partial(handle_result, [kitten] + orig_args),
|
||||
type_of_input=getattr(handle_result, 'type_of_input', None),
|
||||
no_ui=getattr(handle_result, 'no_ui', False),
|
||||
has_ready_notification=getattr(handle_result, 'has_ready_notification', False),
|
||||
open_url_handler=getattr(handle_result, 'open_url_handler', None))
|
||||
|
||||
|
||||
def set_debug(kitten: str) -> None:
|
||||
|
||||
Reference in New Issue
Block a user