This commit is contained in:
Kovid Goyal
2024-01-17 08:39:00 +05:30
parent 22dbc94c5f
commit 5e934c081e
2 changed files with 11 additions and 8 deletions

View File

@@ -375,20 +375,23 @@ class RemoteCommand:
return [t] return [t]
return [] return []
def windows_for_payload(self, boss: 'Boss', window: Optional['Window'], payload_get: PayloadGetType) -> List['Window']: def windows_for_payload(
self, boss: 'Boss', window: Optional['Window'], payload_get: PayloadGetType,
window_match_name: str = 'match_window', tab_match_name: str = 'match_tab',
) -> List['Window']:
if payload_get('all'): if payload_get('all'):
windows = list(boss.all_windows) windows = list(boss.all_windows)
else: else:
window = window or boss.active_window window = window or boss.active_window
windows = [window] if window else [] windows = [window] if window else []
if payload_get('match_window'): if payload_get(window_match_name):
windows = list(boss.match_windows(payload_get('match_window'))) windows = list(boss.match_windows(payload_get(window_match_name)))
if not windows: if not windows:
raise MatchError(payload_get('match_window')) raise MatchError(payload_get(window_match_name))
if payload_get('match_tab'): if payload_get(tab_match_name):
tabs = tuple(boss.match_tabs(payload_get('match_tab'))) tabs = tuple(boss.match_tabs(payload_get(tab_match_name)))
if not tabs: if not tabs:
raise MatchError(payload_get('match_tab'), 'tabs') raise MatchError(payload_get(tab_match_name), 'tabs')
for tab in tabs: for tab in tabs:
windows += list(tab) windows += list(tab)
return windows return windows

View File

@@ -177,7 +177,7 @@ are sent as is, not interpreted for escapes.
def response_from_kitty(self, boss: Boss, window: Optional[Window], payload_get: PayloadGetType) -> ResponseType: def response_from_kitty(self, boss: Boss, window: Optional[Window], payload_get: PayloadGetType) -> ResponseType:
sid = payload_get('session_id', '') sid = payload_get('session_id', '')
windows = self.windows_for_payload(boss, None, payload_get) windows = self.windows_for_payload(boss, None, payload_get, window_match_name='match')
pdata: str = payload_get('data') pdata: str = payload_get('data')
encoding, _, q = pdata.partition(':') encoding, _, q = pdata.partition(':')
session = '' session = ''