diff --git a/xml/impl/src/com/intellij/codeInsight/editorActions/XmlTagNameSynchronizer.java b/xml/impl/src/com/intellij/codeInsight/editorActions/XmlTagNameSynchronizer.java index 8d1e3638dc40..1ca2bcf64986 100644 --- a/xml/impl/src/com/intellij/codeInsight/editorActions/XmlTagNameSynchronizer.java +++ b/xml/impl/src/com/intellij/codeInsight/editorActions/XmlTagNameSynchronizer.java @@ -43,6 +43,7 @@ import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; +import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.SmartList; import com.intellij.xml.util.XmlUtil; import org.jetbrains.annotations.NotNull; @@ -279,11 +280,12 @@ public class XmlTagNameSynchronizer extends CommandAdapter implements Applicatio } private static RangeMarker findSupport(RangeMarker leader, PsiFile file, Document document) { - final PsiElement element = file.findElementAt(leader.getStartOffset()); + final PsiElement element = InjectedLanguageUtil.findElementAtNoCommit(file, leader.getStartOffset()); PsiElement support = RenameTagBeginOrEndIntentionAction.findOtherSide(element, false); support = support == null || element == support ? RenameTagBeginOrEndIntentionAction.findOtherSide(element, true) : support; + int diff = leader.getStartOffset() - element.getTextRange().getStartOffset(); final TextRange range = support != null ? support.getTextRange() : null; - return range != null ? document.createRangeMarker(range.getStartOffset(), range.getEndOffset(), true) : null; + return range != null ? document.createRangeMarker(range.getStartOffset() + diff, range.getEndOffset() + diff, true) : null; } } } diff --git a/xml/tests/src/com/intellij/codeInsight/completion/XmlSyncTagTest.java b/xml/tests/src/com/intellij/codeInsight/completion/XmlSyncTagTest.java index 5c12e528b5a3..88a36fc08631 100644 --- a/xml/tests/src/com/intellij/codeInsight/completion/XmlSyncTagTest.java +++ b/xml/tests/src/com/intellij/codeInsight/completion/XmlSyncTagTest.java @@ -17,10 +17,22 @@ package com.intellij.codeInsight.completion; import com.intellij.application.options.editor.WebEditorOptions; import com.intellij.ide.highlighter.XmlFileType; +import com.intellij.lang.injection.InjectedLanguageManager; +import com.intellij.lang.injection.MultiHostInjector; +import com.intellij.lang.injection.MultiHostRegistrar; +import com.intellij.lang.xml.XMLLanguage; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.CommandProcessor; import com.intellij.openapi.editor.actionSystem.DocCommandGroupId; +import com.intellij.openapi.util.TextRange; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiLanguageInjectionHost; +import com.intellij.psi.xml.XmlAttributeValue; import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase; +import org.jetbrains.annotations.NotNull; + +import java.util.Collections; +import java.util.List; /** * @author Dennis.Ushakov @@ -87,10 +99,36 @@ public class XmlSyncTagTest extends LightPlatformCodeInsightFixtureTestCase { "