Merge branch 'rcorre-command_binding_completion'

This commit is contained in:
Florian Bruhin 2016-05-18 18:48:56 +02:00
commit 9111d1b10f
2 changed files with 18 additions and 1 deletions

View File

@ -186,3 +186,7 @@ def init():
history = objreg.get('web-history')
history.async_read_done.connect(
functools.partial(update, [usertypes.Completion.url]))
keyconf = objreg.get('key-config')
keyconf.changed.connect(
functools.partial(update, [usertypes.Completion.command]))

View File

@ -19,6 +19,7 @@
"""Misc. CompletionModels."""
from collections import defaultdict
from PyQt5.QtCore import Qt, QTimer, pyqtSlot
from qutebrowser.browser import webview
@ -35,6 +36,8 @@ class CommandCompletionModel(base.BaseCompletionModel):
# https://github.com/The-Compiler/qutebrowser/issues/545
# pylint: disable=abstract-method
COLUMN_WIDTHS = (20, 60, 20)
def __init__(self, parent=None):
super().__init__(parent)
assert cmdutils.cmd_dict
@ -48,8 +51,18 @@ class CommandCompletionModel(base.BaseCompletionModel):
for name, cmd in config.section('aliases').items():
cmdlist.append((name, "Alias for '{}'".format(cmd)))
cat = self.new_category("Commands")
# map each command to its bound keys and show these in the misc column
keyconf = objreg.get('key-config')
cmd_to_keys = defaultdict(list)
for key, cmd in keyconf.get_bindings_for('normal').items():
# put special bindings last
if key.startswith('<') and key.endswith('>'):
cmd_to_keys[cmd].append(key)
else:
cmd_to_keys[cmd].insert(0, key)
for (name, desc) in sorted(cmdlist):
self.new_item(cat, name, desc)
self.new_item(cat, name, desc, ', '.join(cmd_to_keys[name]))
class HelpCompletionModel(base.BaseCompletionModel):