autoclosing in jspx
authorEugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com>
Tue, 23 Mar 2010 17:10:37 +0000 (20:10 +0300)
committerEugene Kudelevsky <Eugene.Kudelevsky@jetbrains.com>
Tue, 23 Mar 2010 17:10:37 +0000 (20:10 +0300)
xml/impl/src/com/intellij/codeInsight/template/zencoding/XmlZenCodingInterpreter.java
xml/impl/src/com/intellij/codeInsight/template/zencoding/XmlZenCodingTemplate.java

index fdc6cd52e827f83a9089338dd62e1e10491f26d7..7392a13680b582e2eb072b0f9fcfd9a14dbe7864 100644 (file)
@@ -24,7 +24,6 @@ import com.intellij.openapi.diagnostic.Logger;
 import com.intellij.openapi.editor.Document;
 import com.intellij.openapi.editor.Editor;
 import com.intellij.openapi.fileEditor.FileDocumentManager;
-import com.intellij.openapi.fileTypes.StdFileTypes;
 import com.intellij.openapi.project.Project;
 import com.intellij.openapi.util.Pair;
 import com.intellij.openapi.util.TextRange;
@@ -410,7 +409,7 @@ class XmlZenCodingInterpreter {
                                                     int numberInIteration,
                                                     List<Pair<String, String>> attr2value) {
     if (token.myTemplate != null) {
-      if (attr2value.size() > 0 || callback.getFileType() == StdFileTypes.XHTML) {
+      if (attr2value.size() > 0 || XmlZenCodingTemplate.autoclosingAvailable(callback)) {
         TemplateImpl modifiedTemplate = token.myTemplate.copy();
         XmlTag tag = XmlZenCodingTemplate.parseXmlTagInTemplate(token.myTemplate.getString(), callback, true);
         if (tag != null) {
@@ -421,7 +420,9 @@ class XmlZenCodingInterpreter {
               iterator.remove();
             }
           }
-          closeUnclosingTags(tag);
+          if (XmlZenCodingTemplate.autoclosingAvailable(callback)) {
+            closeUnclosingTags(tag);
+          }
           String text = null;
           if (!containsAttrsVar(modifiedTemplate) && attr2value.size() > 0) {
             String textWithAttrs = addAttrsVar(modifiedTemplate, tag);
index e7edaa48ed1930fea021a42801e73d1101af2918..626f2d1ae6c5cfc86bc97ed3d6a1d0017209aeca 100644 (file)
@@ -23,6 +23,7 @@ import com.intellij.codeInsight.template.impl.TemplateImpl;
 import com.intellij.codeInsight.template.impl.TemplateSettings;
 import com.intellij.lang.xml.XMLLanguage;
 import com.intellij.openapi.editor.Editor;
+import com.intellij.openapi.fileTypes.FileType;
 import com.intellij.openapi.fileTypes.StdFileTypes;
 import com.intellij.openapi.util.Pair;
 import com.intellij.psi.PsiElement;
@@ -177,6 +178,11 @@ public class XmlZenCodingTemplate {
     return template;
   }
 
+  public static boolean autoclosingAvailable(CustomTemplateCallback callback) {
+    FileType type = callback.getFileType();
+    return type == StdFileTypes.XHTML || type == StdFileTypes.JSPX;
+  }
+
   @Nullable
   private static List<Token> parse(@NotNull String text, @NotNull CustomTemplateCallback callback) {
     text += MARKER;
@@ -204,7 +210,7 @@ public class XmlZenCodingTemplate {
           if (token == null) {
             return null;
           }
-          if (applicable && (token.myAttribute2Value.size() > 0 || callback.getFileType() == StdFileTypes.XHTML)) {
+          if (applicable && (token.myAttribute2Value.size() > 0 || autoclosingAvailable(callback))) {
             assert prefix.equals(token.myKey);
             TemplateImpl template = cacheTemplate(token, callback);
             if (token.myAttribute2Value.size() > 0) {