diff options
-rw-r--r-- | ranger/container/commandlist.py | 11 | ||||
-rw-r--r-- | test/tc_commandlist.py | 8 |
2 files changed, 19 insertions, 0 deletions
diff --git a/ranger/container/commandlist.py b/ranger/container/commandlist.py index 2ba22ef7..e66871ea 100644 --- a/ranger/container/commandlist.py +++ b/ranger/container/commandlist.py @@ -126,6 +126,17 @@ class CommandList(object): self.commandlist.append(obj) for key in obj.keys: self.paths[key] = obj + + def alias(self, existing, *new): + """bind the <new> keys to the command of the <existing> key""" + existing = self._str_to_tuple(existing) + new = tuple(map(self._str_to_tuple, new)) + + cmd = self.paths[existing] + + for key in new: + self.paths[key] = cmd + cmd.keys |= set([key]) def unbind(self, *keys): i = len(self.commandlist) diff --git a/test/tc_commandlist.py b/test/tc_commandlist.py index 86afdc99..5062be9f 100644 --- a/test/tc_commandlist.py +++ b/test/tc_commandlist.py @@ -51,6 +51,14 @@ class Test(TestCase): self.assertEqual(dmy, cl['aaa']) self.assertEqual(fnc, cl['aaaa'].execute) + cl.alias('aaaa', 'c') + cl.rebuild_paths() + self.assertEqual(cl['c'], cl['aaaa']) + cl.unbind('c') + cl.rebuild_paths() + self.assertEqual(fnc, cl['aaaa'].execute) + self.assertKeyError(cl, 'c') + cl.clear() self.assertKeyError(cl, 'a') self.assertKeyError(cl, 'aa') |