simplify code to always update keymap
This commit is contained in:
@@ -642,16 +642,16 @@ class KeyMap(object):
|
|||||||
self._keymap = None
|
self._keymap = None
|
||||||
self.set_bindings(bindings)
|
self.set_bindings(bindings)
|
||||||
|
|
||||||
def set_bindings(self, bindings, mode='update'):
|
def set_bindings(self, bindings):
|
||||||
new_keymap = {}
|
new_keymap = {}
|
||||||
for command, keys in bindings.items():
|
for command, keys in bindings.items():
|
||||||
if not isinstance(command, Command):
|
if not isinstance(command, Command):
|
||||||
command = Command(command)
|
command = Command(command)
|
||||||
new_keymap[command] = keys
|
new_keymap[command] = keys
|
||||||
|
|
||||||
if not self._keymap or mode == 'replace':
|
if not self._keymap:
|
||||||
self._keymap = new_keymap
|
self._keymap = new_keymap
|
||||||
elif mode == 'update':
|
else:
|
||||||
self._keymap.update(new_keymap)
|
self._keymap.update(new_keymap)
|
||||||
|
|
||||||
def get(self, command):
|
def get(self, command):
|
||||||
|
|||||||
@@ -136,9 +136,10 @@ def test_config_from_file():
|
|||||||
|
|
||||||
fargs, fbindings = Config.get_file(filename=fp.name)
|
fargs, fbindings = Config.get_file(filename=fp.name)
|
||||||
config = Config(**fargs)
|
config = Config(**fargs)
|
||||||
config.keymap.set_bindings(fbindings, 'replace')
|
default_keymap = config.keymap._keymap.copy()
|
||||||
|
config.keymap.set_bindings(fbindings)
|
||||||
assert config.config == {}
|
assert config.config == {}
|
||||||
assert config.keymap._keymap == {}
|
assert config.keymap._keymap == default_keymap
|
||||||
|
|
||||||
# [rtv]
|
# [rtv]
|
||||||
rows = ['{0}={1}'.format(key, val) for key, val in args.items()]
|
rows = ['{0}={1}'.format(key, val) for key, val in args.items()]
|
||||||
@@ -153,7 +154,7 @@ def test_config_from_file():
|
|||||||
fp.flush()
|
fp.flush()
|
||||||
fargs, fbindings = Config.get_file(filename=fp.name)
|
fargs, fbindings = Config.get_file(filename=fp.name)
|
||||||
config.update(**fargs)
|
config.update(**fargs)
|
||||||
config.keymap.set_bindings(fbindings, 'replace')
|
config.keymap.set_bindings(fbindings)
|
||||||
assert config.config == args
|
assert config.config == args
|
||||||
assert config.keymap.get('REFRESH') == ['r', '<KEY_F5>']
|
assert config.keymap.get('REFRESH') == ['r', '<KEY_F5>']
|
||||||
assert config.keymap.get('UPVOTE') == ['']
|
assert config.keymap.get('UPVOTE') == ['']
|
||||||
|
|||||||
@@ -372,12 +372,13 @@ def test_objects_keymap():
|
|||||||
|
|
||||||
bindings = {'refresh': ['a', 0x12, '<LF>', '<KEY_UP>']}
|
bindings = {'refresh': ['a', 0x12, '<LF>', '<KEY_UP>']}
|
||||||
bindings2 = {'upvote': ['b', 0x13, '<KEY_DOWN>']}
|
bindings2 = {'upvote': ['b', 0x13, '<KEY_DOWN>']}
|
||||||
keymap.set_bindings(bindings, 'replace')
|
keymap._keymap = {}
|
||||||
|
keymap.set_bindings(bindings)
|
||||||
assert keymap.get('refresh')
|
assert keymap.get('refresh')
|
||||||
with pytest.raises(exceptions.ConfigError) as e:
|
with pytest.raises(exceptions.ConfigError) as e:
|
||||||
keymap.get('upvote')
|
keymap.get('upvote')
|
||||||
assert 'UPVOTE' in six.text_type(e)
|
assert 'UPVOTE' in six.text_type(e)
|
||||||
keymap.set_bindings(bindings2, 'update')
|
keymap.set_bindings(bindings2)
|
||||||
assert keymap.get('refresh')
|
assert keymap.get('refresh')
|
||||||
assert keymap.get('upvote')
|
assert keymap.get('upvote')
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user