From 6ca39dd851e3d451000c511df69f4ea621600a86 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Tue, 21 Apr 2015 22:48:45 +0200 Subject: [PATCH] Handle --relaxed-config for keys.conf as well. --- qutebrowser/config/config.py | 2 ++ qutebrowser/config/parsers/keyconf.py | 20 ++++++++++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/qutebrowser/config/config.py b/qutebrowser/config/config.py index 15872004b..e1942667b 100644 --- a/qutebrowser/config/config.py +++ b/qutebrowser/config/config.py @@ -161,7 +161,9 @@ def _init_key_config(parent): parent: The parent to use for the KeyConfigParser. """ try: + args = objreg.get('args') key_config = keyconf.KeyConfigParser(standarddir.config(), 'keys.conf', + args.relaxed_config, parent=parent) except (keyconf.KeyConfigError, UnicodeDecodeError) as e: log.init.exception(e) diff --git a/qutebrowser/config/parsers/keyconf.py b/qutebrowser/config/parsers/keyconf.py index 1fdc24025..b15a9ae4a 100644 --- a/qutebrowser/config/parsers/keyconf.py +++ b/qutebrowser/config/parsers/keyconf.py @@ -75,12 +75,13 @@ class KeyConfigParser(QObject): config_dirty = pyqtSignal() UNBOUND_COMMAND = '' - def __init__(self, configdir, fname, parent=None): + def __init__(self, configdir, fname, relaxed=False, parent=None): """Constructor. Args: configdir: The directory to save the configs in. fname: The filename of the config. + relaxed: If given, unknwon commands are ignored. """ super().__init__(parent) self.is_dirty = False @@ -95,7 +96,7 @@ class KeyConfigParser(QObject): if self._configfile is None or not os.path.exists(self._configfile): self._load_default() else: - self._read() + self._read(relaxed) self._load_default(only_new=True) log.init.debug("Loaded bindings: {}".format(self.keybindings)) @@ -267,8 +268,12 @@ class KeyConfigParser(QObject): else: return True - def _read(self): - """Read the config file from disk and parse it.""" + def _read(self, relaxed=False): + """Read the config file from disk and parse it. + + Args: + relaxed: Ignore unknown commands. + """ try: with open(self._configfile, 'r', encoding='utf-8') as f: for i, line in enumerate(f): @@ -287,8 +292,11 @@ class KeyConfigParser(QObject): line = line.strip() self._read_command(line) except KeyConfigError as e: - e.lineno = i - raise + if relaxed: + continue + else: + e.lineno = i + raise except OSError: log.keyboard.exception("Failed to read key bindings!") for sectname in self.keybindings: