Get rid of _warn_on_keychains and _supports_chains

This commit is contained in:
Florian Bruhin 2018-02-27 10:55:16 +01:00
parent ba012c6ba8
commit ec3ad8a969
5 changed files with 14 additions and 74 deletions

View File

@ -48,13 +48,9 @@ class BaseKeyParser(QObject):
Attributes:
bindings: Bound key bindings
_win_id: The window ID this keyparser is associated with.
_warn_on_keychains: Whether a warning should be logged when binding
keychains in a section which does not support them.
_sequence: The currently entered key sequence
_modename: The name of the input mode associated with this keyparser.
_supports_count: Whether count is supported
# FIXME is this still needed?
_supports_chains: Whether keychains are supported
Signals:
keystring_updated: Emitted when the keystring is updated.
@ -70,24 +66,18 @@ class BaseKeyParser(QObject):
do_log = True
passthrough = False
def __init__(self, win_id, parent=None, supports_count=None,
supports_chains=False):
def __init__(self, win_id, parent=None, supports_count=True):
super().__init__(parent)
self._win_id = win_id
self._modename = None
self._sequence = keyutils.KeySequence()
self._count = ''
if supports_count is None:
supports_count = supports_chains
self._supports_count = supports_count
self._supports_chains = supports_chains
self._warn_on_keychains = True
self.bindings = {}
config.instance.changed.connect(self._on_config_changed)
def __repr__(self):
return utils.get_repr(self, supports_count=self._supports_count,
supports_chains=self._supports_chains)
return utils.get_repr(self, supports_count=self._supports_count)
def _debug_log(self, message):
"""Log a message to the debug log if logging is active.
@ -195,10 +185,6 @@ class BaseKeyParser(QObject):
"""
match = self._handle_key(e)
# FIXME
# if handled or not self._supports_chains:
# return handled
# don't emit twice if the keystring was cleared in self.clear_keystring
if self._sequence:
self.keystring_updated.emit(self._count + str(self._sequence))
@ -232,14 +218,6 @@ class BaseKeyParser(QObject):
assert cmd
self.bindings[key] = cmd
# FIXME
# def _parse_key_command(self, modename, key, cmd):
# """Parse the keys and their command and store them in the object."""
# elif self._warn_on_keychains:
# log.keyboard.warning("Ignoring keychain '{}' in mode '{}' "
# "because keychains are not supported there."
# .format(key, modename))
def execute(self, cmdstr, count=None):
"""Handle a completed keychain.

View File

@ -34,9 +34,8 @@ class CommandKeyParser(BaseKeyParser):
_commandrunner: CommandRunner instance.
"""
def __init__(self, win_id, parent=None, supports_count=None,
supports_chains=False):
super().__init__(win_id, parent, supports_count, supports_chains)
def __init__(self, win_id, parent=None, supports_count=None):
super().__init__(win_id, parent, supports_count)
self._commandrunner = runners.CommandRunner(win_id)
def execute(self, cmdstr, count=None):
@ -60,7 +59,7 @@ class PassthroughKeyParser(CommandKeyParser):
# do_log = False
passthrough = True
def __init__(self, win_id, mode, parent=None, warn=True):
def __init__(self, win_id, mode, parent=None):
"""Constructor.
Args:
@ -68,11 +67,9 @@ class PassthroughKeyParser(CommandKeyParser):
parent: Qt parent.
warn: Whether to warn if an ignored key was bound.
"""
super().__init__(win_id, parent, supports_chains=False)
self._warn_on_keychains = warn
super().__init__(win_id, parent)
self._read_config(mode)
self._mode = mode
def __repr__(self):
return utils.get_repr(self, mode=self._mode,
warn=self._warn_on_keychains)
return utils.get_repr(self, mode=self._mode)

View File

@ -71,8 +71,7 @@ def init(win_id, parent):
KM.passthrough: keyparser.PassthroughKeyParser(win_id, 'passthrough',
modeman),
KM.command: keyparser.PassthroughKeyParser(win_id, 'command', modeman),
KM.prompt: keyparser.PassthroughKeyParser(win_id, 'prompt', modeman,
warn=False),
KM.prompt: keyparser.PassthroughKeyParser(win_id, 'prompt', modeman),
KM.yesno: modeparsers.PromptKeyParser(win_id, modeman),
KM.caret: modeparsers.CaretKeyParser(win_id, modeman),
KM.set_mark: modeparsers.RegisterKeyParser(win_id, KM.set_mark,

View File

@ -48,8 +48,7 @@ class NormalKeyParser(keyparser.CommandKeyParser):
"""
def __init__(self, win_id, parent=None):
super().__init__(win_id, parent, supports_count=True,
supports_chains=True)
super().__init__(win_id, parent, supports_count=True)
self._read_config('normal')
self._partial_timer = usertypes.Timer(self, 'partial-match')
self._partial_timer.setSingleShot(True)
@ -131,8 +130,7 @@ class PromptKeyParser(keyparser.CommandKeyParser):
"""KeyParser for yes/no prompts."""
def __init__(self, win_id, parent=None):
super().__init__(win_id, parent, supports_count=False,
supports_chains=True)
super().__init__(win_id, parent, supports_count=False)
self._read_config('yesno')
def __repr__(self):
@ -149,8 +147,7 @@ class HintKeyParser(keyparser.CommandKeyParser):
"""
def __init__(self, win_id, parent=None):
super().__init__(win_id, parent, supports_count=False,
supports_chains=True)
super().__init__(win_id, parent, supports_count=False)
self._filtertext = ''
self._last_press = LastPress.none
self._read_config('hint')
@ -261,8 +258,7 @@ class CaretKeyParser(keyparser.CommandKeyParser):
passthrough = True
def __init__(self, win_id, parent=None):
super().__init__(win_id, parent, supports_count=True,
supports_chains=True)
super().__init__(win_id, parent, supports_count=True)
self._read_config('caret')
@ -276,8 +272,7 @@ class RegisterKeyParser(keyparser.CommandKeyParser):
"""
def __init__(self, win_id, mode, parent=None):
super().__init__(win_id, parent, supports_count=False,
supports_chains=False)
super().__init__(win_id, parent, supports_count=False)
self._mode = mode
self._read_config('register')

View File

@ -19,7 +19,6 @@
"""Tests for BaseKeyParser."""
import logging
from unittest import mock
from PyQt5.QtCore import Qt
@ -37,8 +36,7 @@ def keyseq(s):
@pytest.fixture
def keyparser(key_config_stub):
"""Fixture providing a BaseKeyParser supporting count/chains."""
kp = basekeyparser.BaseKeyParser(
0, supports_count=True, supports_chains=True)
kp = basekeyparser.BaseKeyParser(0, supports_count=True)
kp.execute = mock.Mock()
yield kp
@ -56,19 +54,6 @@ def handle_text(fake_keyevent_factory, keyparser):
return func
@pytest.mark.parametrize('count, chains, count_expected, chains_expected', [
(True, False, True, False),
(False, True, False, True),
(None, True, True, True),
])
def test_supports_args(config_stub, count, chains, count_expected,
chains_expected):
kp = basekeyparser.BaseKeyParser(
0, supports_count=count, supports_chains=chains)
assert kp._supports_count == count_expected
assert kp._supports_chains == chains_expected
class TestDebugLog:
"""Make sure _debug_log only logs when do_log is set."""
@ -154,20 +139,6 @@ class TestReadConfig:
assert keyseq('a') in keyparser.bindings
assert (keyseq('new') in keyparser.bindings) == expected
# FIXME do we still need this?
@pytest.mark.parametrize('warn_on_keychains', [True, False])
@pytest.mark.skip(reason='unneeded?')
def test_warn_on_keychains(self, caplog, warn_on_keychains):
"""Test _warn_on_keychains."""
kp = basekeyparser.BaseKeyParser(
0, supports_count=False, supports_chains=False)
kp._warn_on_keychains = warn_on_keychains
with caplog.at_level(logging.WARNING):
kp._read_config('normal')
assert bool(caplog.records) == warn_on_keychains
class TestSpecialKeys: