From 75c996c13ee52eaedc57c5c67a5b9fd8e67d21e7 Mon Sep 17 00:00:00 2001 From: Jan Verbeek Date: Fri, 11 Nov 2016 02:45:59 +0100 Subject: [PATCH 1/3] Cancel register key input with escape --- qutebrowser/keyinput/modeparsers.py | 4 ++++ tests/end2end/features/keyinput.feature | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/qutebrowser/keyinput/modeparsers.py b/qutebrowser/keyinput/modeparsers.py index 6fa881ad7..25243b1be 100644 --- a/qutebrowser/keyinput/modeparsers.py +++ b/qutebrowser/keyinput/modeparsers.py @@ -290,6 +290,10 @@ class RegisterKeyParser(keyparser.BaseKeyParser): Return: True if event has been handled, False otherwise. """ + if e.key() == Qt.Key_Escape: + self.request_leave.emit(self._mode, "register key cancelled", True) + return True + if utils.keyevent_to_string(e) is None: # this is a modifier key, let it pass and keep going return False diff --git a/tests/end2end/features/keyinput.feature b/tests/end2end/features/keyinput.feature index 6b671825d..1e94b10ac 100644 --- a/tests/end2end/features/keyinput.feature +++ b/tests/end2end/features/keyinput.feature @@ -255,3 +255,8 @@ Feature: Keyboard input And I press the key "a" And I wait for "hints: *" in the log Then no crash should happen + + Scenario: Cancelling key input + When I run :record-macro + And I press the key "" + Then "Leaving mode KeyMode.record_macro (reason: register key cancelled)" should be logged From f0d215e07a6508d421beb4ed3e404912ae2e423a Mon Sep 17 00:00:00 2001 From: Jan Verbeek Date: Mon, 14 Nov 2016 23:28:38 +0100 Subject: [PATCH 2/3] Change hard-coded escape to leave-mode binding --- qutebrowser/keyinput/modeparsers.py | 11 ++++------- tests/end2end/features/keyinput.feature | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/qutebrowser/keyinput/modeparsers.py b/qutebrowser/keyinput/modeparsers.py index 25243b1be..050f0dc50 100644 --- a/qutebrowser/keyinput/modeparsers.py +++ b/qutebrowser/keyinput/modeparsers.py @@ -267,7 +267,7 @@ class CaretKeyParser(keyparser.CommandKeyParser): self.read_config('caret') -class RegisterKeyParser(keyparser.BaseKeyParser): +class RegisterKeyParser(keyparser.CommandKeyParser): """KeyParser for modes that record a register key. @@ -280,6 +280,7 @@ class RegisterKeyParser(keyparser.BaseKeyParser): super().__init__(win_id, parent, supports_count=False, supports_chains=False) self._mode = mode + self.read_config('register') def handle(self, e): """Override handle to always match the next key and use the register. @@ -290,8 +291,8 @@ class RegisterKeyParser(keyparser.BaseKeyParser): Return: True if event has been handled, False otherwise. """ - if e.key() == Qt.Key_Escape: - self.request_leave.emit(self._mode, "register key cancelled", True) + + if super().handle(e): return True if utils.keyevent_to_string(e) is None: @@ -327,7 +328,3 @@ class RegisterKeyParser(keyparser.BaseKeyParser): def on_keyconfig_changed(self, mode): """RegisterKeyParser has no config section (no bindable keys).""" pass - - def execute(self, cmdstr, _keytype, count=None): - """Should never be called on RegisterKeyParser.""" - assert False diff --git a/tests/end2end/features/keyinput.feature b/tests/end2end/features/keyinput.feature index 1e94b10ac..3b4248e83 100644 --- a/tests/end2end/features/keyinput.feature +++ b/tests/end2end/features/keyinput.feature @@ -259,4 +259,4 @@ Feature: Keyboard input Scenario: Cancelling key input When I run :record-macro And I press the key "" - Then "Leaving mode KeyMode.record_macro (reason: register key cancelled)" should be logged + Then "Leaving mode KeyMode.record_macro (reason: leave current)" should be logged From fc79349af68ea52a9e2208d1265df637e2155fc8 Mon Sep 17 00:00:00 2001 From: Jan Verbeek Date: Tue, 15 Nov 2016 00:30:54 +0100 Subject: [PATCH 3/3] Remove misplaced blank line --- qutebrowser/keyinput/modeparsers.py | 1 - 1 file changed, 1 deletion(-) diff --git a/qutebrowser/keyinput/modeparsers.py b/qutebrowser/keyinput/modeparsers.py index 050f0dc50..257937852 100644 --- a/qutebrowser/keyinput/modeparsers.py +++ b/qutebrowser/keyinput/modeparsers.py @@ -291,7 +291,6 @@ class RegisterKeyParser(keyparser.CommandKeyParser): Return: True if event has been handled, False otherwise. """ - if super().handle(e): return True