about summary refs log tree commit diff stats
path: root/ranger/api/commands.py
diff options
context:
space:
mode:
authornfnty <git@nfnty.se>2017-02-04 10:05:42 +0100
committernfnty <git@nfnty.se>2017-02-04 10:08:54 +0100
commitbb07a065b301d4393bb4382cf5066ec5905dff04 (patch)
treeeb9abcc8390027cf5bf27ed1c04e9380ffd94fb0 /ranger/api/commands.py
parentf9a5a4b6189d5e04bf429bdab8ce7369b889c9f5 (diff)
downloadranger-bb07a065b301d4393bb4382cf5066ec5905dff04.tar.gz
api.commands: Fix `FunctionCommand` aliases
Fixes #794
Diffstat (limited to 'ranger/api/commands.py')
-rw-r--r--ranger/api/commands.py20
1 files changed, 7 insertions, 13 deletions
diff --git a/ranger/api/commands.py b/ranger/api/commands.py
index 1997cde5..72af0ebd 100644
--- a/ranger/api/commands.py
+++ b/ranger/api/commands.py
@@ -17,10 +17,7 @@ from ranger.core.shared import FileManagerAware
 from ranger.ext.lazy_property import lazy_property
 
 _SETTINGS_RE = re.compile(r'^\s*([^\s]+?)=(.*)$')
-
-
-def _alias_line(full_command, line):
-    return full_command + ''.join(re.split(r'(\s+)', line)[1:])
+_ALIAS_LINE_RE = re.compile(r'(\s+)')
 
 
 class CommandContainer(FileManagerAware):
@@ -42,14 +39,11 @@ class CommandContainer(FileManagerAware):
         class CommandAlias(cmd):   # pylint: disable=too-few-public-methods
             def __init__(self, line, *args, **kwargs):
                 super(CommandAlias, self).__init__(
-                    _alias_line(self.full_command, line), *args, **kwargs)
-
-        cmd_alias = type(name, (CommandAlias, ), dict(full_command=full_command))
-        if issubclass(cmd_alias, FunctionCommand):
-            cmd_alias.based_function = name
-            cmd_alias.object_name = name
-            cmd_alias.function_name = name
-        self.commands[name] = cmd_alias
+                    self.full_command + ''.join(_ALIAS_LINE_RE.split(line)[1:]),
+                    *args,
+                    **kwargs,
+                )
+        self.commands[name] = type(name, (CommandAlias,), dict(full_command=full_command))
 
     def load_commands_from_module(self, module):
         for var in vars(module).values():
@@ -66,7 +60,7 @@ class CommandContainer(FileManagerAware):
                 continue
             attribute = getattr(obj, attribute_name)
             if hasattr(attribute, '__call__'):
-                cmd = type(attribute_name, (FunctionCommand, ), dict(__doc__=attribute.__doc__))
+                cmd = type(attribute_name, (FunctionCommand,), dict(__doc__=attribute.__doc__))
                 cmd.based_function = attribute
                 cmd.function_name = attribute.__name__
                 cmd.object_name = obj.__class__.__name__