Remote control: Allow matching tabs by index number in currently active OS Window

Fixes #3708
This commit is contained in:
Kovid Goyal 2021-06-11 09:12:08 +05:30
parent 858a6dc27e
commit 5e4c98eae6
No known key found for this signature in database
GPG key ID: 06BC317B515ACE7C
3 changed files with 13 additions and 3 deletions

View file

@ -90,6 +90,9 @@ To update |kitty|, :doc:`follow the instructions <binary>`.
<https://github.com/be5invis/Iosevka>`_ font (requires Iosevka >= 7.0.4)
(:iss:`297`)
- Remote control: Allow matching tabs by index number in currently active OS
Window (:iss:`3708`)
0.20.3 [2021-05-06]
----------------------

View file

@ -299,6 +299,12 @@ def match_tabs(self, match: str) -> Generator[Tab, None, None]:
if q:
found = True
yield q
elif field == 'index':
tm = self.active_tab_manager
if tm is not None and len(tm.tabs) > 0:
idx = (int(pat.pattern) + len(tm.tabs)) % len(tm.tabs)
found = True
yield tm.tabs[idx]
if not found:
tabs = {self.tab_for_window(w) for w in self.match_windows(match)}
for q in tabs:

View file

@ -90,13 +90,14 @@ def __call__(self, key: str, opt_name: Optional[str] = None, missing: Any = None
--match -m
The tab to match. Match specifications are of the form:
:italic:`field:regexp`. Where field can be one of:
id, title, window_id, window_title, pid, cwd, env, cmdline.
id, index, 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,
numeric fields such as id, index 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. You can also use window_id and window_title to match
the tab that contains the window with the specified id or title.
the tab that contains the window with the specified id or title. The index number
is used to match the nth tab in the currently active OS window.
'''