Add a /runkey command
This allows the user to run the action defined on a key without having to press that key. The completion completes all the available keys that will have an effect.
This commit is contained in:
parent
d8623d1c50
commit
1c29b39a6e
2 changed files with 30 additions and 0 deletions
|
@ -318,6 +318,9 @@ These commands work in *any* tab.
|
|||
"/bind ^H KEY_UP" makes Control + h behave the same way as the Up key. See the
|
||||
link:keys.html[key bindings documentation page] for more details.
|
||||
|
||||
*/runkey <key>*:: Execute the action defined for _key_. For example,
|
||||
"/runkey KEY_PPAGE" will scroll up, or "/runkey ^N" will go to the next tab.
|
||||
|
||||
NOTE: The following command will work everywhere, except in the Roster tab.
|
||||
|
||||
*/close*:: Close the tab.
|
||||
|
|
27
src/core.py
27
src/core.py
|
@ -177,6 +177,7 @@ class Core(object):
|
|||
'bookmarks': (self.command_bookmarks, _("Usage: /bookmarks\nBookmarks: Show the current bookmarks."), None),
|
||||
'remove_bookmark': (self.command_remove_bookmark, _("Usage: /remove_bookmark [jid]\nRemove Bookmark: Remove the specified bookmark, or the bookmark on the current tab, if any."), self.completion_remove_bookmark),
|
||||
'xml_tab': (self.command_xml_tab, _("Usage: /xml_tab\nXML Tab: Open an XML tab."), None),
|
||||
'runkey': (self.command_runkey, _("Usage: /runkey <key>\nRunkey: Execute the action defined for <key>."), self.completion_runkey),
|
||||
}
|
||||
|
||||
# We are invisible
|
||||
|
@ -1162,6 +1163,32 @@ class Core(object):
|
|||
commands = list(self.commands.keys()) + list(self.current_tab().commands.keys())
|
||||
return the_input.auto_completion(commands, ' ', quotify=False)
|
||||
|
||||
def command_runkey(self, arg):
|
||||
"""
|
||||
/runkey <key>
|
||||
"""
|
||||
def replace_line_breaks(key):
|
||||
if key == '^J':
|
||||
return '\n'
|
||||
return key
|
||||
char = arg.strip()
|
||||
func = self.key_func.get(char, None)
|
||||
if func:
|
||||
func()
|
||||
else:
|
||||
res = self.do_command(replace_line_breaks(char), False)
|
||||
if res:
|
||||
self.refresh_window()
|
||||
|
||||
def completion_runkey(self, the_input):
|
||||
"""
|
||||
Completion for /runkey
|
||||
"""
|
||||
list_ = []
|
||||
list_.extend(self.key_func.keys())
|
||||
list_.extend(self.current_tab().key_func.keys())
|
||||
return the_input.auto_completion(list_, '', quotify=False)
|
||||
|
||||
def command_status(self, arg):
|
||||
"""
|
||||
/status <status> [msg]
|
||||
|
|
Loading…
Reference in a new issue