diff options
author | Florian Bruhin <git@the-compiler.org> | 2016-11-10 07:16:52 +0100 |
---|---|---|
committer | Florian Bruhin <git@the-compiler.org> | 2016-11-10 07:16:52 +0100 |
commit | 2ef85d6c3561bcc856274a5c823192e1f40216df (patch) | |
tree | 4fea216b3fde9fefd82cf5cb9e9ea25bfd8d2d33 /qutebrowser/keyinput/modeman.py | |
parent | 22cd42c515b95dfe483232db5085b918a9bad811 (diff) | |
download | qutebrowser-2ef85d6c3561bcc856274a5c823192e1f40216df.tar.gz qutebrowser-2ef85d6c3561bcc856274a5c823192e1f40216df.zip |
Fix macros with a mode-switching command
Diffstat (limited to 'qutebrowser/keyinput/modeman.py')
-rw-r--r-- | qutebrowser/keyinput/modeman.py | 14 |
1 files changed, 11 insertions, 3 deletions
diff --git a/qutebrowser/keyinput/modeman.py b/qutebrowser/keyinput/modeman.py index d09fb20f2..d541072ce 100644 --- a/qutebrowser/keyinput/modeman.py +++ b/qutebrowser/keyinput/modeman.py @@ -276,16 +276,24 @@ class ModeManager(QObject): raise cmdexc.CommandError("Mode {} does not exist!".format(mode)) self.enter(m, 'command') - @pyqtSlot(usertypes.KeyMode, str) - def leave(self, mode, reason=None): + @pyqtSlot(usertypes.KeyMode, str, bool) + def leave(self, mode, reason=None, maybe=False): """Leave a key mode. Args: mode: The mode to leave as a usertypes.KeyMode member. reason: Why the mode was left. + maybe: If set, ignore the request if we're not in that mode. """ if self.mode != mode: - raise NotInModeError("Not in mode {}!".format(mode)) + if maybe: + log.modes.debug("Ignoring leave request for {} (reason {}) as " + "we're in mode {}".format( + mode, reason, self.mode)) + return + else: + raise NotInModeError("Not in mode {}!".format(mode)) + log.modes.debug("Leaving mode {}{}".format( mode, '' if reason is None else ' (reason: {})'.format(reason))) # leaving a mode implies clearing keychain, see |