Cleanup matching code for @ls and @send-text

Use the same utility function as other commands uses. Fixes #6835
This commit is contained in:
Kovid Goyal 2023-11-21 07:49:33 +05:30
parent ef9dada80d
commit b1e4c06220
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
2 changed files with 4 additions and 27 deletions

View file

@ -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]] = []

View file

@ -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 = ''