Commit eab4615f authored by Jonas Schäfer's avatar Jonas Schäfer

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.
parent c1863add
...@@ -93,6 +93,15 @@ These commands work in *any* tab. ...@@ -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. 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. 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 /status
**Usage:** ``/status <availability> [status message]`` **Usage:** ``/status <availability> [status message]``
......
...@@ -219,6 +219,20 @@ class CommandCore: ...@@ -219,6 +219,20 @@ class CommandCore:
return return
self.core.tabs.set_current_tab(match) 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) @command_args_parser.quoted(2)
def move_tab(self, args): def move_tab(self, args):
""" """
......
...@@ -1709,6 +1709,12 @@ class Core: ...@@ -1709,6 +1709,12 @@ class Core:
usage='<number or name>', usage='<number or name>',
shortdesc='Go to the specified room', shortdesc='Go to the specified room',
completion=self.completion.win) 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.commands['w'] = self.commands['win']
self.register_command( self.register_command(
'move_tab', 'move_tab',
......
...@@ -29,6 +29,7 @@ from collections import defaultdict ...@@ -29,6 +29,7 @@ from collections import defaultdict
from slixmpp import JID from slixmpp import JID
from poezio import tabs from poezio import tabs
from poezio.events import EventHandler from poezio.events import EventHandler
from poezio.config import config
class Tabs: class Tabs:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment