diff options
author | Jonas Schäfer <j.wielicki@sotecware.net> | 2020-05-10 11:21:56 +0200 |
---|---|---|
committer | Jonas Schäfer <j.wielicki@sotecware.net> | 2020-05-12 22:26:51 +0200 |
commit | eab4615fe046d40aefdf4cd18643f99183fc4aba (patch) | |
tree | 64532b6b07f693401ebfea56a7031f55afda1b94 | |
parent | c1863addfd33d3d3f3f03bcb036a0966097914cb (diff) | |
download | poezio-eab4615fe046d40aefdf4cd18643f99183fc4aba.tar.gz poezio-eab4615fe046d40aefdf4cd18643f99183fc4aba.tar.bz2 poezio-eab4615fe046d40aefdf4cd18643f99183fc4aba.tar.xz poezio-eab4615fe046d40aefdf4cd18643f99183fc4aba.zip |
Add /wup command
The `/wup` command selects a tab by the prefix of its name only.
The `/win` will do a substring match based on the first tab
going from the current tab which matches the substring. This can
be confusing, especially since `/win` matches on different types
of tab "names" not only on the name which is shown in the info bar
by default.
The `/wup` command exclusively matches based on the prefix of the
tab.name string. This has the advantage that it is consistent,
deterministic and independent of the currently selected tab.
-rw-r--r-- | doc/source/commands.rst | 9 | ||||
-rw-r--r-- | poezio/core/commands.py | 14 | ||||
-rw-r--r-- | poezio/core/core.py | 6 | ||||
-rw-r--r-- | poezio/core/tabs.py | 1 |
4 files changed, 30 insertions, 0 deletions
diff --git a/doc/source/commands.rst b/doc/source/commands.rst index dab2eceb..5ea69abd 100644 --- a/doc/source/commands.rst +++ b/doc/source/commands.rst @@ -93,6 +93,15 @@ These commands work in *any* tab. Go to the matching tab. If the argument is a number, it goes to the tab with that number. Otherwise, it goes to the next tab whose name contains the given string. + /wup + + **Usage:** ``/wup <prefix>`` + + Go to the tab whose name starts with `prefix`. If multiple tabs start + with that prefix, no action is taken. + + (Mnemonic: Window by Unique Prefix) + /status **Usage:** ``/status <availability> [status message]`` diff --git a/poezio/core/commands.py b/poezio/core/commands.py index 6bf1d338..46dab5cc 100644 --- a/poezio/core/commands.py +++ b/poezio/core/commands.py @@ -219,6 +219,20 @@ class CommandCore: return self.core.tabs.set_current_tab(match) + @command_args_parser.quoted(1) + def wup(self, args): + """ + /wup <prefix of name> + """ + if args is None: + return self.help('wup') + + prefix = args[0] + _, match = self.core.tabs.find_by_unique_prefix(prefix) + if match is None: + return + self.core.tabs.set_current_tab(match) + @command_args_parser.quoted(2) def move_tab(self, args): """ diff --git a/poezio/core/core.py b/poezio/core/core.py index 06d56062..eac9d539 100644 --- a/poezio/core/core.py +++ b/poezio/core/core.py @@ -1709,6 +1709,12 @@ class Core: usage='<number or name>', shortdesc='Go to the specified room', completion=self.completion.win) + self.register_command( + 'wup', + self.command.wup, + usage='<prefix>', + shortdesc='Go to the tab whose name uniquely starts with prefix', + completion=self.completion.win) self.commands['w'] = self.commands['win'] self.register_command( 'move_tab', diff --git a/poezio/core/tabs.py b/poezio/core/tabs.py index c5ecb206..d5909d39 100644 --- a/poezio/core/tabs.py +++ b/poezio/core/tabs.py @@ -29,6 +29,7 @@ from collections import defaultdict from slixmpp import JID from poezio import tabs from poezio.events import EventHandler +from poezio.config import config class Tabs: |