Merge pull request #3912 from KevCui/master

#3911 Support keybinding for different contexts with different commands
This commit is contained in:
Maximilian Hils 2020-04-08 17:41:43 +02:00 committed by GitHub
commit 4d6886a0f4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 19 additions and 5 deletions

View File

@ -202,7 +202,7 @@ class KeymapConfig:
user_ctxs = v.get("ctx", ["global"])
try:
km._check_contexts(user_ctxs)
km.remove(v["key"], Contexts)
km.remove(v["key"], user_ctxs)
km.add(
key = v["key"],
command = v["cmd"],

View File

@ -117,6 +117,21 @@ def test_load_path(tmpdir):
kmc.load_path(km, dst)
assert(km.get("chooser", "key1"))
with open(dst, 'w') as f:
f.write(
"""
- key: key2
ctx: [flowlist]
cmd: foo
- key: key2
ctx: [flowview]
cmd: bar
"""
)
kmc.load_path(km, dst)
assert(km.get("flowlist", "key2"))
assert(km.get("flowview", "key2"))
km.add("key123", "str", ["flowlist", "flowview"])
with open(dst, 'w') as f:
f.write(
@ -127,10 +142,9 @@ def test_load_path(tmpdir):
"""
)
kmc.load_path(km, dst)
for b in km.bindings:
if b.key == "key123":
assert b.contexts == ["options"]
break
assert(km.get("flowlist", "key123"))
assert(km.get("flowview", "key123"))
assert(km.get("options", "key123"))
def test_parse():