mirror of
https://github.com/kovidgoyal/kitty.git
synced 2026-08-04 06:36:24 +00:00
Cleanup matching code for @ls and @send-text
Use the same utility function as other commands uses. Fixes #6835
This commit is contained in:
parent
ef9dada80d
commit
b1e4c06220
2 changed files with 4 additions and 27 deletions
|
|
@ -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]] = []
|
||||
|
|
|
|||
|
|
@ -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 = ''
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue