Run :bind <key> to print the current binding.
The <command> arg is now optional. If omitted, :bind prints the current binding as a message. If --mode is given, the binding for that mode is printed.
This commit is contained in:
parent
e6ab681a08
commit
2536766cac
@ -27,7 +27,7 @@ from PyQt5.QtCore import pyqtSignal, QObject
|
|||||||
|
|
||||||
from qutebrowser.config import configdata, textwrapper
|
from qutebrowser.config import configdata, textwrapper
|
||||||
from qutebrowser.commands import cmdutils, cmdexc
|
from qutebrowser.commands import cmdutils, cmdexc
|
||||||
from qutebrowser.utils import log, utils, qtutils
|
from qutebrowser.utils import log, utils, qtutils, message
|
||||||
|
|
||||||
|
|
||||||
class KeyConfigError(Exception):
|
class KeyConfigError(Exception):
|
||||||
@ -150,19 +150,32 @@ class KeyConfigParser(QObject):
|
|||||||
data = str(self)
|
data = str(self)
|
||||||
f.write(data)
|
f.write(data)
|
||||||
|
|
||||||
@cmdutils.register(instance='key-config', maxsplit=1, no_cmd_split=True)
|
@cmdutils.register(instance='key-config', maxsplit=1, no_cmd_split=True,
|
||||||
def bind(self, key, command, *, mode=None, force=False):
|
win_id='win_id')
|
||||||
|
def bind(self, key, win_id, command=None, *, mode=None, force=False):
|
||||||
"""Bind a key to a command.
|
"""Bind a key to a command.
|
||||||
|
|
||||||
Args:
|
Args:
|
||||||
key: The keychain or special key (inside `<...>`) to bind.
|
key: The keychain or special key (inside `<...>`) to bind.
|
||||||
command: The command to execute, with optional args.
|
command: The command to execute, with optional args, or None to
|
||||||
|
print the current binding.
|
||||||
mode: A comma-separated list of modes to bind the key in
|
mode: A comma-separated list of modes to bind the key in
|
||||||
(default: `normal`).
|
(default: `normal`).
|
||||||
force: Rebind the key if it is already bound.
|
force: Rebind the key if it is already bound.
|
||||||
"""
|
"""
|
||||||
if mode is None:
|
if mode is None:
|
||||||
mode = 'normal'
|
mode = 'normal'
|
||||||
|
|
||||||
|
if command is None:
|
||||||
|
cmd = self.get_bindings_for(mode).get(key, None)
|
||||||
|
if cmd is None:
|
||||||
|
message.info(win_id, "{} is unbound in {} mode".format(
|
||||||
|
key, mode))
|
||||||
|
else:
|
||||||
|
message.info(win_id, "{} is bound to '{}' in {} mode".format(
|
||||||
|
key, cmd, mode))
|
||||||
|
return
|
||||||
|
|
||||||
mode = self._normalize_sectname(mode)
|
mode = self._normalize_sectname(mode)
|
||||||
for m in mode.split(','):
|
for m in mode.split(','):
|
||||||
if m not in configdata.KEY_DATA:
|
if m not in configdata.KEY_DATA:
|
||||||
|
@ -31,6 +31,20 @@ Feature: Keyboard input
|
|||||||
And I press the keys "test5"
|
And I press the keys "test5"
|
||||||
Then the message "test5-2" should be shown
|
Then the message "test5-2" should be shown
|
||||||
|
|
||||||
|
Scenario: Printing an unbound key
|
||||||
|
When I run :bind test6
|
||||||
|
Then the message "test6 is not bound in normal mode" should be shown
|
||||||
|
|
||||||
|
Scenario: Printing a bound key
|
||||||
|
When I run :bind test6 message-info foo
|
||||||
|
And I run :bind test6
|
||||||
|
Then the message "test6 is bound to 'message-info foo' in normal mode" should be shown
|
||||||
|
|
||||||
|
Scenario: Printing a bound key in a given mode
|
||||||
|
When I run :bind --mode=caret test6 message-info bar
|
||||||
|
And I run :bind --mode=caret test6
|
||||||
|
Then the message "test6 is bound to 'message-info bar' in caret mode" should be shown
|
||||||
|
|
||||||
# :unbind
|
# :unbind
|
||||||
|
|
||||||
Scenario: Binding and unbinding a keychain
|
Scenario: Binding and unbinding a keychain
|
||||||
|
Loading…
Reference in New Issue
Block a user