diff --git a/xml/tests/src/com/intellij/codeInsight/completion/XmlCompletionTest.java b/xml/tests/src/com/intellij/codeInsight/completion/XmlCompletionTest.java index 5e2f202fcd75..05eb6a341b17 100644 --- a/xml/tests/src/com/intellij/codeInsight/completion/XmlCompletionTest.java +++ b/xml/tests/src/com/intellij/codeInsight/completion/XmlCompletionTest.java @@ -677,6 +677,10 @@ public class XmlCompletionTest extends LightCodeInsightFixtureTestCase { myFixture.testCompletionVariants("Substitute/test.xml", "b:instance", "instance"); } + public void testAfterPrefix() throws Exception { + myFixture.testCompletion("Substitute/testAfterPrefix.xml", "Substitute/testAfterPrefix_after.xml", "Substitute/schema-a.xsd", "Substitute/schema-b.xsd"); + } + public void testEnumeratedTagValue() throws Exception { myFixture.configureByFile("tagValue/enumerated.xsd"); myFixture.testCompletionVariants("tagValue/completeEnum.xml", "none", "standard"); diff --git a/xml/tests/testData/completion/Substitute/testAfterPrefix.xml b/xml/tests/testData/completion/Substitute/testAfterPrefix.xml new file mode 100644 index 000000000000..fe3effdcc3fa --- /dev/null +++ b/xml/tests/testData/completion/Substitute/testAfterPrefix.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/xml/tests/testData/completion/Substitute/testAfterPrefix_after.xml b/xml/tests/testData/completion/Substitute/testAfterPrefix_after.xml new file mode 100644 index 000000000000..b6231adb7e63 --- /dev/null +++ b/xml/tests/testData/completion/Substitute/testAfterPrefix_after.xml @@ -0,0 +1,7 @@ + + + \ No newline at end of file diff --git a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/SchemaReferencesProvider.java b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/SchemaReferencesProvider.java index 063a169aab14..23cb9dbee8f6 100644 --- a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/SchemaReferencesProvider.java +++ b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/resolve/reference/impl/providers/SchemaReferencesProvider.java @@ -117,9 +117,7 @@ public class SchemaReferencesProvider extends PsiReferenceProvider { } public TextRange getRangeInElement() { - return myElement instanceof XmlAttributeValue - ? ((XmlAttributeValue)myElement).getValueTextRange() - : new TextRange(1,myElement.getTextLength()-1); + return new TextRange(1,myElement.getTextLength()-1); } @Nullable diff --git a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/TagNameVariantCollector.java b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/TagNameVariantCollector.java index 9ff2f8aeb175..b9840d656e16 100644 --- a/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/TagNameVariantCollector.java +++ b/xml/xml-psi-impl/src/com/intellij/psi/impl/source/xml/TagNameVariantCollector.java @@ -44,7 +44,7 @@ public class TagNameVariantCollector { @Nullable List nsInfo) { XmlElementDescriptor elementDescriptor = null; - String elementNamespace = null; + String elementNamespace = element.getNamespacePrefix().isEmpty() ? null : element.getNamespace(); final Map descriptorsMap = new HashMap(); PsiElement context = element.getParent(); @@ -62,7 +62,9 @@ public class TagNameVariantCollector { descriptorsMap.put(namespace, descriptor); if(elementDescriptor == null) { elementDescriptor = descriptor; - elementNamespace = namespace; + if (elementNamespace == null) { + elementNamespace = namespace; + } } } }