mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
- do not scan words when token is expected to have no words (e.g. whitespace)
- skip filterlexer creation when indexing
This commit is contained in:
+22
-3
@@ -22,18 +22,37 @@ import com.intellij.psi.impl.cache.impl.OccurrenceConsumer;
|
||||
import com.intellij.psi.impl.source.tree.ElementType;
|
||||
import com.intellij.psi.search.UsageSearchContext;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.psi.tree.TokenSet;
|
||||
|
||||
/**
|
||||
* @author ven
|
||||
*/
|
||||
public class JavaFilterLexer extends BaseFilterLexer {
|
||||
private static final TokenSet ourSkipWordsScanSet = TokenSet.orSet(
|
||||
TokenSet.create(
|
||||
JavaTokenType.WHITE_SPACE,
|
||||
JavaTokenType.LPARENTH,
|
||||
JavaTokenType.RPARENTH,
|
||||
JavaTokenType.LBRACE,
|
||||
JavaTokenType.RBRACE,
|
||||
JavaTokenType.LBRACKET,
|
||||
JavaTokenType.RBRACKET,
|
||||
JavaTokenType.SEMICOLON,
|
||||
JavaTokenType.COMMA,
|
||||
JavaTokenType.DOT,
|
||||
JavaTokenType.ELLIPSIS,
|
||||
JavaTokenType.AT
|
||||
),
|
||||
JavaTokenType.OPERATION_BIT_SET
|
||||
);
|
||||
|
||||
public JavaFilterLexer(final Lexer originalLexer, final OccurrenceConsumer table) {
|
||||
super(originalLexer, table);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void advance() {
|
||||
final IElementType tokenType = getDelegate().getTokenType();
|
||||
final IElementType tokenType = myDelegate.getTokenType();
|
||||
|
||||
if (tokenType == JavaTokenType.IDENTIFIER
|
||||
|| tokenType == JavaTokenType.LONG_LITERAL
|
||||
@@ -48,10 +67,10 @@ public class JavaFilterLexer extends BaseFilterLexer {
|
||||
scanWordsInToken(UsageSearchContext.IN_COMMENTS, false, false);
|
||||
advanceTodoItemCountsInToken();
|
||||
}
|
||||
else {
|
||||
else if (!ourSkipWordsScanSet.contains(tokenType)) {
|
||||
scanWordsInToken(UsageSearchContext.IN_PLAIN_TEXT, false, false);
|
||||
}
|
||||
|
||||
getDelegate().advance();
|
||||
myDelegate.advance();
|
||||
}
|
||||
}
|
||||
|
||||
+1
-4
@@ -15,13 +15,11 @@
|
||||
*/
|
||||
package com.intellij.psi.impl.cache.impl.idCache;
|
||||
|
||||
import com.intellij.lexer.FilterLexer;
|
||||
import com.intellij.lexer.JavaLexer;
|
||||
import com.intellij.lexer.Lexer;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.impl.cache.impl.OccurrenceConsumer;
|
||||
import com.intellij.psi.impl.cache.impl.id.LexerBasedIdIndexer;
|
||||
import com.intellij.psi.impl.source.tree.StdTokenSets;
|
||||
|
||||
public class JavaIdIndexer extends LexerBasedIdIndexer {
|
||||
@Override
|
||||
@@ -31,7 +29,6 @@ public class JavaIdIndexer extends LexerBasedIdIndexer {
|
||||
|
||||
public static Lexer createIndexingLexer(OccurrenceConsumer consumer) {
|
||||
final JavaLexer javaLexer = new JavaLexer(LanguageLevel.JDK_1_3);
|
||||
final JavaFilterLexer filterLexer = new JavaFilterLexer(javaLexer, consumer);
|
||||
return new FilterLexer(filterLexer, new FilterLexer.SetFilter(StdTokenSets.WHITE_SPACE_OR_COMMENT_BIT_SET));
|
||||
return new JavaFilterLexer(javaLexer, consumer);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user