From c3c5a5446ff0aca38f358becdd3d0516ce8d7f64 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Sun, 20 Dec 2020 19:39:09 +0530 Subject: [PATCH] Add window_id and window_title fields to --match-tab --- kitty/boss.py | 7 +++++++ kitty/rc/base.py | 6 ++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/kitty/boss.py b/kitty/boss.py index d57ad4171..99111dbe4 100644 --- a/kitty/boss.py +++ b/kitty/boss.py @@ -280,6 +280,13 @@ class Boss: if tab.matches(field, pat): yield tab found = True + elif field in ('window_id', 'window_title'): + wf = field.split('_')[1] + tabs = {self.tab_for_window(w) for w in self.match_windows(f'{wf}:{exp}')} + for q in tabs: + if q: + found = True + yield q if not found: tabs = {self.tab_for_window(w) for w in self.match_windows(match)} for q in tabs: diff --git a/kitty/rc/base.py b/kitty/rc/base.py index 145e093ed..75aad55da 100644 --- a/kitty/rc/base.py +++ b/kitty/rc/base.py @@ -89,12 +89,14 @@ and value, for example, :italic:`env:MY_ENV_VAR=2` MATCH_TAB_OPTION = '''\ --match -m The tab to match. Match specifications are of the form: -:italic:`field:regexp`. Where field can be one of: id, title, pid, cwd, env, cmdline. +:italic:`field:regexp`. Where field can be one of: +id, title, window_id, window_title, pid, cwd, env, cmdline. You can use the :italic:`ls` command to get a list of tabs. Note that for numeric fields such as id and pid the expression is interpreted as a number, not a regular expression. When using title or id, first a matching tab is looked for and if not found a matching window is looked for, and the tab -for that window is used. +for that window is used. You can also use window_id and window_title to match +the tab that contains the window with the specified id or title. '''