diff options
-rw-r--r-- | ranger/api/apps.py | 22 |
1 files changed, 13 insertions, 9 deletions
diff --git a/ranger/api/apps.py b/ranger/api/apps.py index d44f92e1..d2e9ac4f 100644 --- a/ranger/api/apps.py +++ b/ranger/api/apps.py @@ -76,7 +76,7 @@ class Applications(FileManagerAware): application_handler = getattr(self, 'app_' + app) except AttributeError: if app in get_executables(): - return tup(app, *context) + return _generic_app(app, context) continue if self._meets_dependencies(application_handler): return application_handler(context) @@ -99,7 +99,7 @@ class Applications(FileManagerAware): handler = getattr(self, 'app_' + app) except AttributeError: if app in get_executables(): - return tup(app, *context) # generic app + return _generic_app(app, context) handler = self.app_default return handler(context) @@ -121,7 +121,7 @@ class Applications(FileManagerAware): flags = 'flags' in keywords and keywords['flags'] or "" for name in args: assert isinstance(name, str) - setattr(cls, "app_" + name, _generic_app(name, flags=flags)) + setattr(cls, "app_" + name, _generic_wrapper(name, flags=flags)) def tup(*args): @@ -143,10 +143,14 @@ def depends_on(*args): return decorator -def _generic_app(name, flags=''): +def _generic_app(name, context, flags=''): + """Use this function when no other information is given""" + context.flags += flags + return tup(name, *context) + + +def _generic_wrapper(name, flags=''): + """Wraps _generic_app into a method for Applications""" assert isinstance(name, str) - @depends_on(name) - def handler(self, context): - context.flags += flags - return tup(name, *context) - return handler + return depends_on(name)(lambda self, context: + _generic_app(name, context, flags)) |