Haml customizes Live Templates from Ruby language
authorAndrey Vokin <andrey.vokin@jetbrains.com>
Thu, 27 Nov 2014 17:08:30 +0000 (20:08 +0300)
committerAndrey Vokin <andrey.vokin@jetbrains.com>
Thu, 27 Nov 2014 17:09:42 +0000 (20:09 +0300)
platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplatePreprocessor.java
platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java

index d8ce52138edf033bfe89f76c72dd8102d44944a6..4f049c83ef5dcdba3fbe6b3385421bcce78952ad 100644 (file)
@@ -26,6 +26,5 @@ import com.intellij.psi.PsiFile;
 public interface TemplatePreprocessor {
   ExtensionPointName<TemplatePreprocessor> EP_NAME = ExtensionPointName.create("com.intellij.liveTemplatePreprocessor");
 
-  TemplateImpl preprocessTemplate(final Editor editor, final PsiFile file, int caretOffset, final TemplateImpl tempalte,
-                                  final String textToInsert);
+  TemplateImpl preprocessTemplate(final Editor editor, final PsiFile file, int caretOffset, final TemplateImpl template);
 }
index 8f097994f24fef6929f1c58734294d1aeb63b830..3f2a0b87ed10029fda93b373ac89024be5a49125 100644 (file)
@@ -320,25 +320,28 @@ public class TemplateState implements Disposable {
     myTemplateIndented = false;
     myCurrentVariableNumber = -1;
     mySegments = new TemplateSegments(myEditor);
-    myPrevTemplate = myTemplate;
 
     //myArgument = argument;
     myPredefinedVariableValues = predefinedVarValues;
 
     if (template.isInline()) {
+      myPrevTemplate = myTemplate;
       int caretOffset = myEditor.getCaretModel().getOffset();
       myTemplateRange = myDocument.createRangeMarker(caretOffset, caretOffset + template.getTemplateText().length());
     }
     else {
       PsiFile file = getPsiFile();
-      template = preprocessTemplate(file, myEditor.getCaretModel().getOffset(), myTemplate.getTemplateText());
+      preprocessTemplate(file, myEditor.getCaretModel().getOffset());
+      myPrevTemplate = myTemplate;
+      assert !myTemplate.isInline();
+
       int caretOffset = myEditor.getCaretModel().getOffset();
       myTemplateRange = myDocument.createRangeMarker(caretOffset, caretOffset);
     }
     myTemplateRange.setGreedyToLeft(true);
     myTemplateRange.setGreedyToRight(true);
 
-    processAllExpressions(template);
+    processAllExpressions(myTemplate);
   }
 
   private void fireTemplateCancelled() {
@@ -349,13 +352,10 @@ public class TemplateState implements Disposable {
     }
   }
 
-  private TemplateImpl preprocessTemplate(final PsiFile file, int caretOffset, final String textToInsert) {
-    TemplateImpl result = myTemplate;
+  private void preprocessTemplate(final PsiFile file, int caretOffset) {
     for (TemplatePreprocessor preprocessor : Extensions.getExtensions(TemplatePreprocessor.EP_NAME)) {
-      result = preprocessor.preprocessTemplate(myEditor, file, caretOffset, myTemplate, textToInsert);
+      myTemplate = preprocessor.preprocessTemplate(myEditor, file, caretOffset, myTemplate);
     }
-
-    return result;
   }
 
   private void processAllExpressions(@NotNull final TemplateImpl template) {