diff --git a/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyContextTypeVariables.java b/plugins/org.python.pydev.ast/src/org/python/pydev/core/templates/PyAddTemplateResolvers.java similarity index 56% rename from plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyContextTypeVariables.java rename to plugins/org.python.pydev.ast/src/org/python/pydev/core/templates/PyAddTemplateResolvers.java index f014ee9245..1515e0e5cb 100644 --- a/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyContextTypeVariables.java +++ b/plugins/org.python.pydev.ast/src/org/python/pydev/core/templates/PyAddTemplateResolvers.java @@ -1,10 +1,40 @@ -package org.python.pydev.editor.templates; +package org.python.pydev.core.templates; +import org.eclipse.jface.text.templates.GlobalTemplateVariables; import org.eclipse.jface.text.templates.TemplateContext; +import org.eclipse.jface.text.templates.TemplateContextType; import org.python.pydev.core.IGrammarVersionProvider; -import org.python.pydev.core.templates.PyDocumentTemplateContext; import org.python.pydev.shared_core.callbacks.ICallback; +public class PyAddTemplateResolvers { + + public static void addDefaultResolvers(TemplateContextType ctx) { + ctx.addResolver(new GlobalTemplateVariables.Cursor()); + ctx.addResolver(new GlobalTemplateVariables.WordSelection()); + ctx.addResolver(new GlobalTemplateVariables.LineSelection()); + ctx.addResolver(new GlobalTemplateVariables.Dollar()); + ctx.addResolver(new GlobalTemplateVariables.Date()); + ctx.addResolver(new GlobalTemplateVariables.Year()); + ctx.addResolver(new GlobalTemplateVariables.Time()); + ctx.addResolver(new GlobalTemplateVariables.User()); + ctx.addResolver(PyTemplatesDefault.IsoDate()); + ctx.addResolver(PyTemplatesDefault.IsoDate1()); + ctx.addResolver(PyTemplatesDefault.IsoDate2()); + ctx.addResolver(PyTemplatesDefault.ModuleName()); + ctx.addResolver(PyTemplatesDefault.QualifiedNameScope()); + ctx.addResolver(PyTemplatesDefault.CurrentClass()); + ctx.addResolver(PyTemplatesDefault.SelfOrCls()); + ctx.addResolver(PyTemplatesDefault.PydevdFileLocation()); + ctx.addResolver(PyTemplatesDefault.PydevdDirLocation()); + ctx.addResolver(PyTemplatesDefault.CurrentMethod()); + ctx.addResolver(PyTemplatesDefault.PreviousClassOrMethod()); + ctx.addResolver(PyTemplatesDefault.NextClassOrMethod()); + ctx.addResolver(PyTemplatesDefault.Superclass()); + + PyContextTypeVariables.addResolvers(ctx); + } +} + class CallableTemplateVariableResolver extends PyTemplateVariableResolver { private ICallback callable; @@ -25,7 +55,7 @@ protected String[] resolveAll(TemplateContext context) { } }; -public class PyContextTypeVariables { +class PyContextTypeVariables { private static boolean isGrammar3(PyDocumentTemplateContext context) { if (context == null) { @@ -34,7 +64,7 @@ private static boolean isGrammar3(PyDocumentTemplateContext context) { return context.getGrammarVersion() >= IGrammarVersionProvider.GRAMMAR_PYTHON_VERSION_3_5; } - public static void addResolvers(PyContextType pyContextType) { + public static void addResolvers(TemplateContextType pyContextType) { pyContextType.addResolver(new CallableTemplateVariableResolver("file", "Full path for file", (context) -> { return context.getEditorFile().toString().replace("\\", "/"); diff --git a/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyTemplateVariableResolver.java b/plugins/org.python.pydev.ast/src/org/python/pydev/core/templates/PyTemplateVariableResolver.java similarity index 95% rename from plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyTemplateVariableResolver.java rename to plugins/org.python.pydev.ast/src/org/python/pydev/core/templates/PyTemplateVariableResolver.java index ee56d34a14..e89ec12e36 100644 --- a/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyTemplateVariableResolver.java +++ b/plugins/org.python.pydev.ast/src/org/python/pydev/core/templates/PyTemplateVariableResolver.java @@ -4,7 +4,7 @@ * Please see the license.txt included with this distribution for details. * Any modifications to this file must keep this entire header intact. */ -package org.python.pydev.editor.templates; +package org.python.pydev.core.templates; import org.eclipse.jface.text.templates.TemplateContext; import org.eclipse.jface.text.templates.TemplateVariableResolver; diff --git a/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyTemplatesDefault.java b/plugins/org.python.pydev.ast/src/org/python/pydev/core/templates/PyTemplatesDefault.java similarity index 99% rename from plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyTemplatesDefault.java rename to plugins/org.python.pydev.ast/src/org/python/pydev/core/templates/PyTemplatesDefault.java index 153854fdfe..b41a0c2f42 100644 --- a/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyTemplatesDefault.java +++ b/plugins/org.python.pydev.ast/src/org/python/pydev/core/templates/PyTemplatesDefault.java @@ -1,4 +1,4 @@ -package org.python.pydev.editor.templates; +package org.python.pydev.core.templates; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -14,7 +14,6 @@ import org.python.pydev.core.CorePlugin; import org.python.pydev.core.docutils.PySelection; import org.python.pydev.core.log.Log; -import org.python.pydev.core.templates.PyDocumentTemplateContext; import org.python.pydev.parser.fastparser.FastParser; import org.python.pydev.parser.jython.ast.ClassDef; import org.python.pydev.parser.jython.ast.FunctionDef; diff --git a/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyContextType.java b/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyContextType.java index 883049c060..f65358f6ad 100644 --- a/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyContextType.java +++ b/plugins/org.python.pydev/src/org/python/pydev/editor/templates/PyContextType.java @@ -13,8 +13,8 @@ import java.util.HashMap; -import org.eclipse.jface.text.templates.GlobalTemplateVariables; import org.eclipse.jface.text.templates.TemplateContextType; +import org.python.pydev.core.templates.PyAddTemplateResolvers; import org.python.pydev.jython.JythonPlugin; import org.python.pydev.shared_core.jython.IPythonInterpreter; @@ -44,37 +44,10 @@ public PyContextType() { //fRegistry.addContextType(PyContextType.PY_MODULES_CONTEXT_TYPE); interpreter = JythonPlugin.newPythonInterpreter(); - addGlobalResolvers(); - - } - - private void addGlobalResolvers() { - addResolver(new GlobalTemplateVariables.Cursor()); - addResolver(new GlobalTemplateVariables.WordSelection()); - addResolver(new GlobalTemplateVariables.LineSelection()); - addResolver(new GlobalTemplateVariables.Dollar()); - addResolver(new GlobalTemplateVariables.Date()); - addResolver(new GlobalTemplateVariables.Year()); - addResolver(new GlobalTemplateVariables.Time()); - addResolver(new GlobalTemplateVariables.User()); - addResolver(PyTemplatesDefault.IsoDate()); - addResolver(PyTemplatesDefault.IsoDate1()); - addResolver(PyTemplatesDefault.IsoDate2()); - addResolver(PyTemplatesDefault.ModuleName()); - addResolver(PyTemplatesDefault.QualifiedNameScope()); - addResolver(PyTemplatesDefault.CurrentClass()); - addResolver(PyTemplatesDefault.SelfOrCls()); - addResolver(PyTemplatesDefault.PydevdFileLocation()); - addResolver(PyTemplatesDefault.PydevdDirLocation()); - addResolver(PyTemplatesDefault.CurrentMethod()); - addResolver(PyTemplatesDefault.PreviousClassOrMethod()); - addResolver(PyTemplatesDefault.NextClassOrMethod()); - addResolver(PyTemplatesDefault.Superclass()); - - PyContextTypeVariables.addResolvers(this); + PyAddTemplateResolvers.addDefaultResolvers(this); HashMap locals = new HashMap(); locals.put("py_context_type", this); - + //execute all the files that start with 'pytemplate' that are located beneath //the org.python.pydev.jython/jysrc directory and some user specified dir (if any). JythonPlugin.execAll(locals, "pytemplate", interpreter); diff --git a/plugins/org.python.pydev/tests_completions/org/python/pydev/ast/codecompletion/templates/TemplatesTest.java b/plugins/org.python.pydev/tests_completions/org/python/pydev/ast/codecompletion/templates/TemplatesTest.java index 1f0aff803f..8a67eb78ae 100644 --- a/plugins/org.python.pydev/tests_completions/org/python/pydev/ast/codecompletion/templates/TemplatesTest.java +++ b/plugins/org.python.pydev/tests_completions/org/python/pydev/ast/codecompletion/templates/TemplatesTest.java @@ -1,6 +1,6 @@ package org.python.pydev.ast.codecompletion.templates; -import org.python.pydev.editor.templates.PyTemplatesDefault; +import org.python.pydev.core.templates.PyTemplatesDefault; import org.python.pydev.shared_core.string.StringUtils; import junit.framework.TestCase;