summaryrefslogtreecommitdiff
path: root/qutebrowser/keyinput/modeman.py
diff options
context:
space:
mode:
authorFlorian Bruhin <git@the-compiler.org>2016-11-10 07:16:52 +0100
committerFlorian Bruhin <git@the-compiler.org>2016-11-10 07:16:52 +0100
commit2ef85d6c3561bcc856274a5c823192e1f40216df (patch)
tree4fea216b3fde9fefd82cf5cb9e9ea25bfd8d2d33 /qutebrowser/keyinput/modeman.py
parent22cd42c515b95dfe483232db5085b918a9bad811 (diff)
downloadqutebrowser-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.py14
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