1
0
forked from VimPlug/jedi

Remove classes from plugins and use decorators instead

This commit is contained in:
Dave Halter
2019-07-16 10:23:19 +02:00
parent 60415033b4
commit 8329e2e969
5 changed files with 69 additions and 94 deletions

View File

@@ -1,5 +1,5 @@
from jedi.plugins.stdlib import StdlibPlugin
from jedi.plugins.flask import FlaskPlugin
from jedi.plugins import stdlib
from jedi.plugins import flask
class _PluginManager(object):
@@ -12,12 +12,12 @@ class _PluginManager(object):
"""
self._registered_plugins.append(plugin_class)
def _build_chain(self, evaluator):
def _build_chain(self):
for plugin_class in self._registered_plugin_classes:
yield plugin_class(evaluator)
yield plugin_class
def get_callbacks(self, evaluator):
return _PluginCallbacks(self._build_chain(evaluator))
def get_callbacks(self):
return _PluginCallbacks(self._build_chain())
class _PluginCallbacks(object):
@@ -27,11 +27,13 @@ class _PluginCallbacks(object):
def decorate(self, name, callback):
for plugin in reversed(self._plugins):
# Need to reverse so the first plugin is run first.
callback = getattr(plugin, name)(callback)
try:
func = getattr(plugin, name)
except AttributeError:
pass
else:
callback = func(callback)
return callback
plugin_manager = _PluginManager([
StdlibPlugin,
FlaskPlugin,
])
plugin_manager = _PluginManager([stdlib, flask])