From b1e4c06220de0ef09545b48ded66013028b8c9a5 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Tue, 21 Nov 2023 07:49:33 +0530 Subject: [PATCH] Cleanup matching code for @ls and @send-text Use the same utility function as other commands uses. Fixes #6835 --- kitty/rc/ls.py | 9 ++------- kitty/rc/send_text.py | 22 ++-------------------- 2 files changed, 4 insertions(+), 27 deletions(-) diff --git a/kitty/rc/ls.py b/kitty/rc/ls.py index 73cdb930d..d8fcee6df 100644 --- a/kitty/rc/ls.py +++ b/kitty/rc/ls.py @@ -49,16 +49,11 @@ Only list the window this command is run in. tab_filter: Optional[Callable[[Tab], bool]] = None window_filter: Optional[Callable[[Window], bool]] = None - if payload_get('match') is not None: - window_ids = frozenset(w.id for w in self.windows_for_match_payload(boss, window, payload_get)) + if payload_get('match') is not None or payload_get('match_tab') is not None: + window_ids = frozenset(w.id for w in self.windows_for_payload(boss, window, payload_get)) def wf(w: Window) -> bool: return w.id in window_ids window_filter = wf - if payload_get('match_tab') is not None: - tab_ids = frozenset(w.id for w in self.tabs_for_match_payload(boss, window, payload_get)) - def tf(w: Tab) -> bool: - return w.id in tab_ids - tab_filter = tf data = list(boss.list_os_windows(window, tab_filter, window_filter)) if not payload_get('all_env_vars'): all_env_blocks: List[Dict[str, str]] = [] diff --git a/kitty/rc/send_text.py b/kitty/rc/send_text.py index bbe32430b..dc9a88ac5 100644 --- a/kitty/rc/send_text.py +++ b/kitty/rc/send_text.py @@ -3,7 +3,7 @@ import base64 import sys -from typing import TYPE_CHECKING, Any, Dict, List, Optional, Set, Union +from typing import TYPE_CHECKING, Any, Dict, Optional, Set, Union from kitty.fast_data_types import KeyEvent as WindowSystemKeyEvent from kitty.fast_data_types import get_boss @@ -16,7 +16,6 @@ from .base import ( ArgsType, Boss, CmdGenerator, - MatchError, PayloadGetType, PayloadType, RCOptions, @@ -178,24 +177,7 @@ are sent as is, not interpreted for escapes. def response_from_kitty(self, boss: Boss, window: Optional[Window], payload_get: PayloadGetType) -> ResponseType: sid = payload_get('session_id', '') - if payload_get('all'): - windows: List[Optional[Window]] = list(boss.all_windows) - else: - windows = [boss.active_window] - match = payload_get('match') - if match: - windows = [w for w in self.windows_for_match_payload(boss, window, payload_get)] - if not windows and not sid: - raise MatchError(payload_get('match')) - mt = payload_get('match_tab') - if mt: - windows = [] - tabs = self.tabs_for_match_payload(boss, window, payload_get) - if not tabs and not sid: - raise MatchError(payload_get('match_tab'), 'tabs') - for tab in tabs: - if tab: - windows += tuple(tab) + windows = self.windows_for_payload(boss, None, payload_get) pdata: str = payload_get('data') encoding, _, q = pdata.partition(':') session = ''