From e05dabefdf3e156bae0953686d92bb27ad814ba3 Mon Sep 17 00:00:00 2001 From: Panagiotis Ktistakis Date: Sun, 26 Nov 2017 13:34:18 +0200 Subject: [PATCH] Show default keybinding in :bind completion --- qutebrowser/completion/models/configmodel.py | 17 +++++++++++++---- qutebrowser/config/config.py | 7 +++++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/qutebrowser/completion/models/configmodel.py b/qutebrowser/completion/models/configmodel.py index f1d706cd5..53a2adc19 100644 --- a/qutebrowser/completion/models/configmodel.py +++ b/qutebrowser/completion/models/configmodel.py @@ -77,17 +77,26 @@ def bind(key, *, info): key: the key being bound. """ model = completionmodel.CompletionModel(column_widths=(20, 60, 20)) - cmd_text = info.keyconf.get_command(key, 'normal') + data = [] + cmd_text = info.keyconf.get_command(key, 'normal') if cmd_text: parser = runners.CommandParser() try: cmd = parser.parse(cmd_text).cmd except cmdexc.NoSuchCommandError: - data = [(cmd_text, 'Invalid command!', key)] + data.append((cmd_text, '(Current) Invalid command!', key)) else: - data = [(cmd_text, cmd.desc, key)] - model.add_category(listcategory.ListCategory("Current", data)) + data.append((cmd_text, '(Current) {}'.format(cmd.desc), key)) + + cmd_text = info.keyconf.get_command(key, 'normal', default=True) + if cmd_text: + parser = runners.CommandParser() + cmd = parser.parse(cmd_text).cmd + data.append((cmd_text, '(Default) {}'.format(cmd.desc), key)) + + if data: + model.add_category(listcategory.ListCategory("Current/Default", data)) cmdlist = util.get_cmd_completions(info, include_hidden=True, include_aliases=True) diff --git a/qutebrowser/config/config.py b/qutebrowser/config/config.py index ff09e2a5b..770546df6 100644 --- a/qutebrowser/config/config.py +++ b/qutebrowser/config/config.py @@ -162,10 +162,13 @@ class KeyConfig: cmd_to_keys[cmd].insert(0, key) return cmd_to_keys - def get_command(self, key, mode): + def get_command(self, key, mode, default=False): """Get the command for a given key (or None).""" key = self._prepare(key, mode) - bindings = self.get_bindings_for(mode) + if default: + bindings = dict(val.bindings.default[mode]) + else: + bindings = self.get_bindings_for(mode) return bindings.get(key, None) def bind(self, key, command, *, mode, save_yaml=False):