mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
html: generalize prefix references api
This commit is contained in:
@@ -35,10 +35,7 @@ import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.psi.util.CachedValueProvider.Result;
|
||||
import com.intellij.psi.xml.*;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CharTable;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.PlatformIcons;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.BidirectionalMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.xml.XmlAttributeDescriptor;
|
||||
@@ -174,7 +171,7 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag, HintedReferenc
|
||||
final ASTNode startTagName = XmlChildRole.START_TAG_NAME_FINDER.findChild(this);
|
||||
if (startTagName == null) return PsiReference.EMPTY_ARRAY;
|
||||
final ASTNode endTagName = XmlChildRole.CLOSING_TAG_NAME_FINDER.findChild(this);
|
||||
List<PsiReference> refs = new ArrayList<>();
|
||||
List<PsiReference> refs = new SmartList<>();
|
||||
String prefix = getNamespacePrefix();
|
||||
|
||||
boolean inStartTag = hints.offsetInElement == null || childContainsOffset(startTagName.getPsi(), hints.offsetInElement);
|
||||
@@ -184,7 +181,7 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag, HintedReferenc
|
||||
refs.add(startTagRef);
|
||||
}
|
||||
if (!prefix.isEmpty()) {
|
||||
refs.add(createPrefixReference(startTagName, prefix, startTagRef));
|
||||
refs.addAll(createPrefixReferences(startTagName, prefix, startTagRef));
|
||||
}
|
||||
}
|
||||
boolean inEndTag = endTagName != null && (hints.offsetInElement == null || childContainsOffset(endTagName.getPsi(), hints.offsetInElement));
|
||||
@@ -193,9 +190,9 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag, HintedReferenc
|
||||
if (endTagRef != null) {
|
||||
refs.add(endTagRef);
|
||||
}
|
||||
prefix = XmlUtil.findPrefixByQualifiedName(endTagName.getText());
|
||||
prefix = getNamespacePrefix(endTagName.getText());
|
||||
if (StringUtil.isNotEmpty(prefix)) {
|
||||
refs.add(createPrefixReference(endTagName, prefix, endTagRef));
|
||||
refs.addAll(createPrefixReferences(endTagName, prefix, endTagRef));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -236,9 +233,10 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag, HintedReferenc
|
||||
return elements;
|
||||
}
|
||||
|
||||
private SchemaPrefixReference createPrefixReference(ASTNode startTagName, String prefix, TagNameReference tagRef) {
|
||||
return new SchemaPrefixReference(this, TextRange.from(startTagName.getStartOffset() - getStartOffset(), prefix.length()), prefix,
|
||||
tagRef);
|
||||
@NotNull
|
||||
protected Collection<PsiReference> createPrefixReferences(ASTNode startTagName, String prefix, TagNameReference tagRef) {
|
||||
return Collections.singleton(new SchemaPrefixReference(this, TextRange.from(startTagName.getStartOffset() - getStartOffset(), prefix.length()), prefix,
|
||||
tagRef));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -786,7 +784,12 @@ public class XmlTagImpl extends XmlElementImpl implements XmlTag, HintedReferenc
|
||||
@Override
|
||||
@NotNull
|
||||
public String getNamespacePrefix() {
|
||||
return XmlUtil.findPrefixByQualifiedName(getName());
|
||||
return getNamespacePrefix(getName());
|
||||
}
|
||||
|
||||
@NotNull
|
||||
protected String getNamespacePrefix(@NotNull String name) {
|
||||
return XmlUtil.findPrefixByQualifiedName(name);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user