From 6fbd8697725f37359222e3d70e26fcb135f744ef Mon Sep 17 00:00:00 2001 From: "Ilya.Kazakevich" Date: Thu, 27 Nov 2014 15:03:17 +0300 Subject: [PATCH] PY-12564 Django: Template directories auto-configuration is missing on opening existing project PY-12876 Jinja2 Unresolved template reference --- .../PythonTemplateLanguage.java | 41 +++++++++++++++++++ .../templateLanguages/TemplatesService.java | 40 ++++++++++++++++++ 2 files changed, 81 insertions(+) create mode 100644 python/openapi/src/com/jetbrains/python/templateLanguages/PythonTemplateLanguage.java diff --git a/python/openapi/src/com/jetbrains/python/templateLanguages/PythonTemplateLanguage.java b/python/openapi/src/com/jetbrains/python/templateLanguages/PythonTemplateLanguage.java new file mode 100644 index 000000000000..28a7e082ec65 --- /dev/null +++ b/python/openapi/src/com/jetbrains/python/templateLanguages/PythonTemplateLanguage.java @@ -0,0 +1,41 @@ +package com.jetbrains.python.templateLanguages; + +import com.intellij.lang.Language; +import com.intellij.openapi.module.Module; +import com.intellij.psi.templateLanguages.TemplateLanguage; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Python template language + * @author Ilya.Kazakevich + */ +public abstract class PythonTemplateLanguage extends Language implements TemplateLanguage { + + + protected PythonTemplateLanguage(@Nullable final Language baseLanguage, + @NotNull @NonNls final String ID, + @NotNull @NonNls final String... mimeTypes) { + super(baseLanguage, ID, mimeTypes); + } + + protected PythonTemplateLanguage(@NotNull @NonNls final String id) { + super(id); + } + + /** + * @return template language readable name + */ + @NotNull + public abstract String getTemplateLanguageName(); + + /** + * Checks if text contains some chars that make us think this text uses appropriate template language and we should set + * this language as our project language + * + * @param text text with chars to check + * @return text contains some chars that make us think this text uses appropriate template language and we should set this language as our project language + */ + public abstract boolean isFileLeadsToLanguageSelection(@NotNull String text); +} diff --git a/python/openapi/src/com/jetbrains/python/templateLanguages/TemplatesService.java b/python/openapi/src/com/jetbrains/python/templateLanguages/TemplatesService.java index 03d82e338144..e7873d1bb7e3 100644 --- a/python/openapi/src/com/jetbrains/python/templateLanguages/TemplatesService.java +++ b/python/openapi/src/com/jetbrains/python/templateLanguages/TemplatesService.java @@ -23,7 +23,9 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.util.containers.ContainerUtil; import com.jetbrains.python.packaging.PyPackageManager; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; +import java.util.ArrayList; import java.util.List; /** @@ -31,12 +33,42 @@ import java.util.List; */ public abstract class TemplatesService { public static final String NONE = "None"; + /** + * @deprecated Use {@link #getKnownTemplateLanguages()} + * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()} + */ + @Deprecated public static final String DJANGO = "Django"; + /** + * @deprecated Use {@link #getKnownTemplateLanguages()} + * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()} + */ + @Deprecated public static final String MAKO = "Mako"; + /** + * @deprecated Use {@link #getKnownTemplateLanguages()} + * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()} + */ + @Deprecated public static final String JINJA2 = "Jinja2"; + /** + * @deprecated Use {@link #getKnownTemplateLanguages()} + * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()} + */ + @Deprecated public static final String WEB2PY = "Web2Py"; + /** + * @deprecated Use {@link #getKnownTemplateLanguages()} + * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()} + */ + @Deprecated public static final String CHAMELEON = "Chameleon"; + /** + * @deprecated Use {@link #getKnownTemplateLanguages()} + * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()} + */ + @Deprecated private static List ALL_TEMPLATE_LANGUAGES = ContainerUtil.immutableList(NONE, DJANGO, MAKO, @@ -47,16 +79,24 @@ public abstract class TemplatesService { public static List ALL_TEMPLATE_BINDINGS = ContainerUtil.immutableList("django-mako", "django-jinja", "django-chameleon", "flask-mako", "pyramid_jinja2"); + @Nullable public abstract Language getSelectedTemplateLanguage(); public static TemplatesService getInstance(Module module) { return ModuleServiceManager.getService(module, TemplatesService.class); } + /** + * @deprecated Use {@link #getKnownTemplateLanguages()} + * or {@link com.jetbrains.python.templateLanguages.PythonTemplateLanguage#getTemplateLanguageName()} + */ + @Deprecated public static List getAllTemplateLanguages() { return ALL_TEMPLATE_LANGUAGES; } + public abstract List getKnownTemplateLanguages(); + public abstract void setTemplateLanguage(String templateLanguage); @NotNull