Update command completion on setting an alias.

Wire up the config change event to update command completion on
changing aliases, so the new aliases will be included.

Fixes #1814.

Currently we do not have tests at a high enough level to test whether
signals are wired up correctly to update completions.
This commit is contained in:
Ryan Roden-Corrent 2016-08-09 08:23:31 -04:00
parent 245212efa1
commit 91ec5cc356
2 changed files with 11 additions and 2 deletions

View File

@ -29,7 +29,7 @@ import functools
from qutebrowser.completion.models import miscmodels, urlmodel, configmodel from qutebrowser.completion.models import miscmodels, urlmodel, configmodel
from qutebrowser.utils import objreg, usertypes, log, debug from qutebrowser.utils import objreg, usertypes, log, debug
from qutebrowser.config import configdata from qutebrowser.config import configdata, config
_instances = {} _instances = {}
@ -155,6 +155,12 @@ def update(completions):
did_run.append(func) did_run.append(func)
@config.change_filter('aliases', function=True)
def _update_aliases():
"""Update completions that include command aliases."""
update([usertypes.Completion.command])
def init(): def init():
"""Initialize completions. Note this only connects signals.""" """Initialize completions. Note this only connects signals."""
quickmark_manager = objreg.get('quickmark-manager') quickmark_manager = objreg.get('quickmark-manager')
@ -176,3 +182,5 @@ def init():
keyconf = objreg.get('key-config') keyconf = objreg.get('key-config')
keyconf.changed.connect( keyconf.changed.connect(
functools.partial(update, [usertypes.Completion.command])) functools.partial(update, [usertypes.Completion.command]))
objreg.get('config').changed.connect(_update_aliases)

View File

@ -214,7 +214,7 @@ class TestKeyConfigParser:
"""Test config.parsers.keyconf.KeyConfigParser.""" """Test config.parsers.keyconf.KeyConfigParser."""
def test_cmd_binding(self, cmdline_test): def test_cmd_binding(self, cmdline_test, config_stub):
"""Test various command bindings. """Test various command bindings.
See https://github.com/The-Compiler/qutebrowser/issues/615 See https://github.com/The-Compiler/qutebrowser/issues/615
@ -222,6 +222,7 @@ class TestKeyConfigParser:
Args: Args:
cmdline_test: A pytest fixture which provides testcases. cmdline_test: A pytest fixture which provides testcases.
""" """
config_stub.data = {'aliases': []}
kcp = keyconf.KeyConfigParser(None, None) kcp = keyconf.KeyConfigParser(None, None)
kcp._cur_section = 'normal' kcp._cur_section = 'normal'
if cmdline_test.valid: if cmdline_test.valid: