Search in sources :

Example 11 with BracePair

use of com.intellij.lang.BracePair in project intellij-community by JetBrains.

the class XmlBraceMatcher method getBraceTokenGroupId.

@Override
public int getBraceTokenGroupId(IElementType tokenType) {
    final Language l = tokenType.getLanguage();
    PairedBraceMatcher matcher = LanguageBraceMatching.INSTANCE.forLanguage(l);
    if (matcher != null) {
        BracePair[] pairs = matcher.getPairs();
        for (BracePair pair : pairs) {
            if (pair.getLeftBraceType() == tokenType || pair.getRightBraceType() == tokenType) {
                return l.hashCode();
            }
        }
    }
    if (tokenType instanceof IXmlLeafElementType) {
        return tokenType == XmlTokenType.XML_ATTRIBUTE_VALUE_START_DELIMITER || tokenType == XmlTokenType.XML_ATTRIBUTE_VALUE_END_DELIMITER ? XML_VALUE_DELIMITER_GROUP : XML_TAG_TOKEN_GROUP;
    } else {
        return BraceMatchingUtil.UNDEFINED_TOKEN_GROUP;
    }
}
Also used : PairedBraceMatcher(com.intellij.lang.PairedBraceMatcher) Language(com.intellij.lang.Language) IXmlLeafElementType(com.intellij.psi.tree.xml.IXmlLeafElementType) BracePair(com.intellij.lang.BracePair)

Example 12 with BracePair

use of com.intellij.lang.BracePair in project intellij-community by JetBrains.

the class XmlBraceMatcher method isPairBraces.

@Override
public boolean isPairBraces(IElementType tokenType1, IElementType tokenType2) {
    PairedBraceMatcher matcher = LanguageBraceMatching.INSTANCE.forLanguage(tokenType1.getLanguage());
    if (matcher != null) {
        BracePair[] pairs = matcher.getPairs();
        for (BracePair pair : pairs) {
            if (pair.getLeftBraceType() == tokenType1)
                return pair.getRightBraceType() == tokenType2;
            if (pair.getRightBraceType() == tokenType1)
                return pair.getLeftBraceType() == tokenType2;
        }
    }
    if (tokenType2.equals(PAIRING_TOKENS.get(tokenType1)))
        return true;
    List<IElementType> keys = PAIRING_TOKENS.getKeysByValue(tokenType1);
    return keys != null && keys.contains(tokenType2);
}
Also used : IElementType(com.intellij.psi.tree.IElementType) PairedBraceMatcher(com.intellij.lang.PairedBraceMatcher) BracePair(com.intellij.lang.BracePair)

Aggregations

BracePair (com.intellij.lang.BracePair)12 IElementType (com.intellij.psi.tree.IElementType)10 PairedBraceMatcher (com.intellij.lang.PairedBraceMatcher)8 BraceMatcher (com.intellij.codeInsight.highlighting.BraceMatcher)3 CfmlFileType (com.intellij.coldFusion.model.files.CfmlFileType)3 XmlFileType (com.intellij.ide.highlighter.XmlFileType)3 FileType (com.intellij.openapi.fileTypes.FileType)3 Nullable (org.jetbrains.annotations.Nullable)2 XmlLikeFileType (com.intellij.ide.highlighter.XmlLikeFileType)1 Language (com.intellij.lang.Language)1 IXmlLeafElementType (com.intellij.psi.tree.xml.IXmlLeafElementType)1