diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplatePreprocessor.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplatePreprocessor.java index 0bc04d7dc6c0..d8ce52138edf 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplatePreprocessor.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplatePreprocessor.java @@ -26,5 +26,6 @@ import com.intellij.psi.PsiFile; public interface TemplatePreprocessor { ExtensionPointName EP_NAME = ExtensionPointName.create("com.intellij.liveTemplatePreprocessor"); - void preprocessTemplate(final Editor editor, final PsiFile file, int caretOffset, final String textToInsert, final String templateText); + TemplateImpl preprocessTemplate(final Editor editor, final PsiFile file, int caretOffset, final TemplateImpl tempalte, + final String textToInsert); } diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java index 2e620c2379c9..8f097994f24f 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/impl/TemplateState.java @@ -331,7 +331,7 @@ public class TemplateState implements Disposable { } else { PsiFile file = getPsiFile(); - preprocessTemplate(file, myEditor.getCaretModel().getOffset(), myTemplate.getTemplateText()); + template = preprocessTemplate(file, myEditor.getCaretModel().getOffset(), myTemplate.getTemplateText()); int caretOffset = myEditor.getCaretModel().getOffset(); myTemplateRange = myDocument.createRangeMarker(caretOffset, caretOffset); } @@ -349,10 +349,13 @@ public class TemplateState implements Disposable { } } - private void preprocessTemplate(final PsiFile file, int caretOffset, final String textToInsert) { + private TemplateImpl preprocessTemplate(final PsiFile file, int caretOffset, final String textToInsert) { + TemplateImpl result = myTemplate; for (TemplatePreprocessor preprocessor : Extensions.getExtensions(TemplatePreprocessor.EP_NAME)) { - preprocessor.preprocessTemplate(myEditor, file, caretOffset, textToInsert, myTemplate.getTemplateText()); + result = preprocessor.preprocessTemplate(myEditor, file, caretOffset, myTemplate, textToInsert); } + + return result; } private void processAllExpressions(@NotNull final TemplateImpl template) {