simplify code to always update keymap

This commit is contained in:
woorst
2017-07-23 13:31:11 -05:00
parent f43a4894fb
commit eb837716d8
3 changed files with 10 additions and 8 deletions

View File

@@ -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):

View File

@@ -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') == ['']

View File

@@ -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')