diff --git a/qutebrowser/completion/models/instances.py b/qutebrowser/completion/models/instances.py index f515e7e25..2e65a3198 100644 --- a/qutebrowser/completion/models/instances.py +++ b/qutebrowser/completion/models/instances.py @@ -160,9 +160,3 @@ 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])) - keyconf.changed.connect( - functools.partial(update, [usertypes.Completion.bind])) diff --git a/qutebrowser/keyinput/basekeyparser.py b/qutebrowser/keyinput/basekeyparser.py index 46a506432..6722a4041 100644 --- a/qutebrowser/keyinput/basekeyparser.py +++ b/qutebrowser/keyinput/basekeyparser.py @@ -97,6 +97,7 @@ class BaseKeyParser(QObject): self._warn_on_keychains = True self.bindings = {} self.special_bindings = {} + config.instance.changed.connect(self._on_config_changed) def __repr__(self): return utils.get_repr(self, supports_count=self._supports_count, @@ -127,6 +128,7 @@ class BaseKeyParser(QObject): self._debug_log("Ignoring only-modifier keyeevent.") return False binding = binding.lower() + binding = config.val.bindings.key_mappings.get(binding, binding) try: cmdstr = self.special_bindings[binding] except KeyError: @@ -183,6 +185,7 @@ class BaseKeyParser(QObject): return self.Match.none self._stop_timers() + txt = config.val.bindings.key_mappings.get(txt, txt) self._keystring += txt count, cmd_input = self._split_count() @@ -314,7 +317,11 @@ class BaseKeyParser(QObject): self.keystring_updated.emit(self._keystring) return match != self.Match.none - def read_config(self, modename=None): + @config.change_filter('bindings') + def _on_config_changed(self): + self._read_config() + + def _read_config(self, modename=None): """Read the configuration. Config format: key = command, e.g.: @@ -332,8 +339,8 @@ class BaseKeyParser(QObject): self._modename = modename self.bindings = {} self.special_bindings = {} - keyconfparser = objreg.get('key-config') - for (key, cmd) in keyconfparser.get_bindings_for(modename).items(): + + for key, cmd in config.val.bindings.commands[modename].items(): assert cmd self._parse_key_command(modename, key, cmd) @@ -359,15 +366,6 @@ class BaseKeyParser(QObject): """ raise NotImplementedError - @pyqtSlot(str) - def on_keyconfig_changed(self, mode): - """Re-read the config if a key binding was changed.""" - if self._modename is None: - raise AssertionError("on_keyconfig_changed called but no section " - "defined!") - if mode == self._modename: - self.read_config() - def clear_keystring(self): """Clear the currently entered key sequence.""" if self._keystring: diff --git a/qutebrowser/keyinput/keyparser.py b/qutebrowser/keyinput/keyparser.py index f9a64edca..4f2c8bad5 100644 --- a/qutebrowser/keyinput/keyparser.py +++ b/qutebrowser/keyinput/keyparser.py @@ -69,7 +69,7 @@ class PassthroughKeyParser(CommandKeyParser): """ super().__init__(win_id, parent, supports_chains=False) self._warn_on_keychains = warn - self.read_config(mode) + self._read_config(mode) self._mode = mode def __repr__(self): diff --git a/qutebrowser/keyinput/modeparsers.py b/qutebrowser/keyinput/modeparsers.py index bd0a5a1e9..43ecd651d 100644 --- a/qutebrowser/keyinput/modeparsers.py +++ b/qutebrowser/keyinput/modeparsers.py @@ -48,7 +48,7 @@ class NormalKeyParser(keyparser.CommandKeyParser): def __init__(self, win_id, parent=None): super().__init__(win_id, parent, supports_count=True, supports_chains=True) - self.read_config('normal') + self._read_config('normal') self._partial_timer = usertypes.Timer(self, 'partial-match') self._partial_timer.setSingleShot(True) self._inhibited = False @@ -130,7 +130,7 @@ class PromptKeyParser(keyparser.CommandKeyParser): supports_chains=True) # We don't want an extra section for this in the config, so we just # abuse the prompt section. - self.read_config('prompt') + self._read_config('prompt') def __repr__(self): return utils.get_repr(self) @@ -150,7 +150,7 @@ class HintKeyParser(keyparser.CommandKeyParser): supports_chains=True) self._filtertext = '' self._last_press = LastPress.none - self.read_config('hint') + self._read_config('hint') self.keystring_updated.connect(self.on_keystring_updated) def _handle_special_key(self, e): @@ -264,7 +264,7 @@ class CaretKeyParser(keyparser.CommandKeyParser): def __init__(self, win_id, parent=None): super().__init__(win_id, parent, supports_count=True, supports_chains=True) - self.read_config('caret') + self._read_config('caret') class RegisterKeyParser(keyparser.CommandKeyParser): @@ -280,7 +280,7 @@ class RegisterKeyParser(keyparser.CommandKeyParser): super().__init__(win_id, parent, supports_count=False, supports_chains=False) self._mode = mode - self.read_config('register') + self._read_config('register') def handle(self, e): """Override handle to always match the next key and use the register. diff --git a/qutebrowser/mainwindow/mainwindow.py b/qutebrowser/mainwindow/mainwindow.py index 30a3caca1..6e1fab563 100644 --- a/qutebrowser/mainwindow/mainwindow.py +++ b/qutebrowser/mainwindow/mainwindow.py @@ -411,8 +411,6 @@ class MainWindow(QWidget): def _connect_signals(self): """Connect all mainwindow signals.""" - key_config = objreg.get('key-config') - status = self._get_object('statusbar') keyparsers = self._get_object('keyparsers') completion_obj = self._get_object('completion') @@ -442,10 +440,6 @@ class MainWindow(QWidget): parser.keystring_updated.connect(functools.partial( self._keyhint.update_keyhint, mode.name)) - # config - for obj in keyparsers.values(): - key_config.changed.connect(obj.on_keyconfig_changed) - # messages message.global_bridge.show_message.connect( self._messageview.show_message)