Merge branch 'rcorre-special_key_count'

This commit is contained in:
Florian Bruhin 2016-04-28 22:25:46 +02:00
commit 868f7c6ea5
3 changed files with 16 additions and 3 deletions

View File

@ -38,6 +38,7 @@ Changed
- `:navigate` now clears the URL fragment
- `:completion-item-del` (`Ctrl-D`) can now be used in `:buffer` completion to
close a tab
- Counts can now be used with special keybindings (e.g. with modifiers)
Fixed
~~~~~

View File

@ -131,7 +131,9 @@ class BaseKeyParser(QObject):
except KeyError:
self._debug_log("No binding found for {}.".format(binding))
return False
self.execute(cmdstr, self.Type.special)
count, _ = self._split_count()
self.execute(cmdstr, self.Type.special, count)
self.clear_keystring()
return True
def _split_count(self):

View File

@ -183,7 +183,17 @@ class TestSpecialKeys:
keyparser.handle(fake_keyevent_factory(Qt.Key_A, modifier))
keyparser.handle(fake_keyevent_factory(Qt.Key_X, modifier))
keyparser.execute.assert_called_once_with(
'ctrla', keyparser.Type.special)
'ctrla', keyparser.Type.special, None)
def test_valid_key_count(self, fake_keyevent_factory, keyparser):
if sys.platform == 'darwin':
modifier = Qt.MetaModifier
else:
modifier = Qt.ControlModifier
keyparser.handle(fake_keyevent_factory(5, text='5'))
keyparser.handle(fake_keyevent_factory(Qt.Key_A, modifier, text='A'))
keyparser.execute.assert_called_once_with(
'ctrla', keyparser.Type.special, 5)
def test_invalid_key(self, fake_keyevent_factory, keyparser):
keyparser.handle(fake_keyevent_factory(
@ -217,7 +227,7 @@ class TestKeyChain:
keyparser.handle(fake_keyevent_factory(Qt.Key_A, modifier))
keyparser.handle(fake_keyevent_factory(Qt.Key_X, modifier))
keyparser.execute.assert_called_once_with(
'ctrla', keyparser.Type.special)
'ctrla', keyparser.Type.special, None)
assert keyparser._keystring == ''
def test_invalid_special_key(self, fake_keyevent_factory, keyparser):