From f119c2e7c69bb5ed1da5bae29c8754550ab96bde Mon Sep 17 00:00:00 2001 From: Konstantin Ulitin Date: Mon, 25 Nov 2013 12:15:28 +0400 Subject: [PATCH] IDEA-108838 Wrong code when introducing variable in injection --- .../com/intellij/codeInsight/template/TemplateBuilderImpl.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateBuilderImpl.java b/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateBuilderImpl.java index 29125be518ed..26d46527065b 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateBuilderImpl.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/template/TemplateBuilderImpl.java @@ -115,7 +115,8 @@ public class TemplateBuilderImpl implements TemplateBuilder { } public void replaceElement(PsiElement element, TextRange textRange, String primaryVariableName, String otherVariableName, boolean alwaysStopAt) { - final RangeMarker key = myDocument.createRangeMarker(textRange.shiftRight(element.getTextRange().getStartOffset())); + final TextRange elementTextRange = InjectedLanguageManager.getInstance(element.getProject()).injectedToHost(element, element.getTextRange()); + final RangeMarker key = myDocument.createRangeMarker(textRange.shiftRight(elementTextRange.getStartOffset())); myAlwaysStopAtMap.put(key, alwaysStopAt ? Boolean.TRUE : Boolean.FALSE); myVariableNamesMap.put(key, primaryVariableName); myVariableExpressions.put(key, otherVariableName);