From f434f955c2d626db03551dfee671405f304c91df Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Mon, 19 Jun 2017 18:15:00 +0200 Subject: [PATCH] Improve exception handling for :bind/:unbind --- qutebrowser/config/config.py | 14 +++++++------- qutebrowser/config/configexc.py | 10 ++++++++-- 2 files changed, 15 insertions(+), 9 deletions(-) diff --git a/qutebrowser/config/config.py b/qutebrowser/config/config.py index e1824f1f3..26d38daac 100644 --- a/qutebrowser/config/config.py +++ b/qutebrowser/config/config.py @@ -143,7 +143,7 @@ class NewKeyConfig: def _prepare(self, key, mode): """Make sure the given mode exists and normalize the key.""" if mode not in val.bindings.commands: - raise configexc.ValidationError( + raise configexc.KeybindingError( "Invalid mode {} while binding {}!".format(mode, key)) if utils.is_special_key(key): # , , and should be considered equivalent @@ -159,21 +159,21 @@ class NewKeyConfig: results = parser.parse_all(command) except cmdexc.Error as e: # FIXME: conf good message? - raise configexc.ValidationError("Invalid command: {}".format(e)) + raise configexc.KeybindingError("Invalid command: {}".format(e)) for result in results: try: result.cmd.validate_mode(usertypes.KeyMode[mode]) except cmdexc.PrerequisitesError as e: # FIXME: conf good message? - raise configexc.ValidationError(str(e)) + raise configexc.KeybindingError(str(e)) bindings = val.bindings.commands log.keyboard.vdebug("Adding binding {} -> {} in mode {}.".format( key, command, mode)) if key in bindings[mode] and not force: - raise configexc.DuplicateKeyError("Duplicate key {}".format(key)) + raise configexc.DuplicateKeyError(key) bindings[mode][key] = command val.bindings.commands = bindings # FIXME:conf @@ -183,7 +183,7 @@ class NewKeyConfig: try: del val.bindings.commands[mode][key] except KeyError: - raise configexc.ValidationError("Unknown binding {}".format(key)) + raise configexc.KeybindingError("Unknown binding {}".format(key)) val.bindings.commands = val.bindings.commands # FIXME:conf def get_command(self, key, mode): @@ -314,7 +314,7 @@ class ConfigCommands: key_instance.bind(key, command, mode=mode, force=force) except configexc.DuplicateKeyError as e: raise cmdexc.CommandError(str(e) + " - use --force to override!") - except configexc.ValidationError as e: + except configexc.KeybindingError as e: raise cmdexc.CommandError(str(e)) @cmdutils.register(instance='config-commands') @@ -327,7 +327,7 @@ class ConfigCommands: """ try: key_instance.unbind(key, mode=mode) - except configexc.ValidationError as e: + except configexc.KeybindingError as e: raise cmdexc.CommandError(str(e)) diff --git a/qutebrowser/config/configexc.py b/qutebrowser/config/configexc.py index 99e2a1a15..8293e5fe1 100644 --- a/qutebrowser/config/configexc.py +++ b/qutebrowser/config/configexc.py @@ -52,11 +52,17 @@ class ValidationError(Error): self.option = None -class DuplicateKeyError(ValidationError): +class KeybindingError(Error): + + """Raised for issues with keybindings.""" + + +class DuplicateKeyError(KeybindingError): """Raised when there was a duplicate key.""" - pass + def __init__(self, key): + super().__init__("Duplicate key {}".format(key)) class NoOptionError(Error):