mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-159360 Custom file type: inconsistent highlighting of symbols added as keywords
This commit is contained in:
+4
-2
@@ -42,7 +42,9 @@ public class IdentifierParser extends TokenParser {
|
||||
}
|
||||
|
||||
private boolean isIdentifierPart(int position) {
|
||||
if (myBuffer.charAt(position) == '-') return !myKeywordParser.hasToken(position, myBuffer, null);
|
||||
return KeywordParser.isWordPart(position, myBuffer);
|
||||
if (myBuffer.charAt(position) == '-') {
|
||||
return !myKeywordParser.hasToken(position, myBuffer, null);
|
||||
}
|
||||
return Character.isJavaIdentifierPart(myBuffer.charAt(position));
|
||||
}
|
||||
}
|
||||
|
||||
+1
-6
@@ -96,12 +96,7 @@ public class KeywordParser {
|
||||
return true;
|
||||
}
|
||||
|
||||
return !isWordPart(offset - 1, sequence) || !isWordPart(offset, sequence);
|
||||
}
|
||||
|
||||
static boolean isWordPart(int offset, CharSequence sequence) {
|
||||
char ch = sequence.charAt(offset);
|
||||
return ch == '-' || Character.isJavaIdentifierPart(ch);
|
||||
return !Character.isJavaIdentifierPart(sequence.charAt(offset - 1)) || !Character.isJavaIdentifierPart(sequence.charAt(offset));
|
||||
}
|
||||
|
||||
private static IElementType getToken(int keywordSetIndex) {
|
||||
|
||||
+64
-2
@@ -33,7 +33,7 @@ import org.jetbrains.annotations.Nullable
|
||||
*/
|
||||
class CustomFileTypeLexerTest extends TestCase {
|
||||
|
||||
private void doTest(SyntaxTable table, @NonNls String text, @Nullable String expected) {
|
||||
private static void doTest(SyntaxTable table, @NonNls String text, @Nullable String expected) {
|
||||
def lexer = new CustomFileTypeLexer(table)
|
||||
doTest(lexer, text, expected);
|
||||
}
|
||||
@@ -97,6 +97,67 @@ WHITESPACE ('\\n')
|
||||
'''
|
||||
}
|
||||
|
||||
public void "test punctuation keywords"() {
|
||||
def table = createGenericTable()
|
||||
table.addKeyword4("+")
|
||||
table.addKeyword4("-")
|
||||
table.addKeyword4("=")
|
||||
doTest table, 'i++; i--; i-100; i -100; i- 100; a=-1; a= -1; a+=1; a= +1;', '''\
|
||||
IDENTIFIER ('i')
|
||||
KEYWORD_4 ('+')
|
||||
KEYWORD_4 ('+')
|
||||
PUNCTUATION (';')
|
||||
WHITESPACE (' ')
|
||||
IDENTIFIER ('i')
|
||||
KEYWORD_4 ('-')
|
||||
KEYWORD_4 ('-')
|
||||
PUNCTUATION (';')
|
||||
WHITESPACE (' ')
|
||||
IDENTIFIER ('i')
|
||||
KEYWORD_4 ('-')
|
||||
NUMBER ('100')
|
||||
PUNCTUATION (';')
|
||||
WHITESPACE (' ')
|
||||
IDENTIFIER ('i')
|
||||
WHITESPACE (' ')
|
||||
KEYWORD_4 ('-')
|
||||
NUMBER ('100')
|
||||
PUNCTUATION (';')
|
||||
WHITESPACE (' ')
|
||||
IDENTIFIER ('i')
|
||||
KEYWORD_4 ('-')
|
||||
WHITESPACE (' ')
|
||||
NUMBER ('100')
|
||||
PUNCTUATION (';')
|
||||
WHITESPACE (' ')
|
||||
IDENTIFIER ('a')
|
||||
KEYWORD_4 ('=')
|
||||
KEYWORD_4 ('-')
|
||||
NUMBER ('1')
|
||||
PUNCTUATION (';')
|
||||
WHITESPACE (' ')
|
||||
IDENTIFIER ('a')
|
||||
KEYWORD_4 ('=')
|
||||
WHITESPACE (' ')
|
||||
KEYWORD_4 ('-')
|
||||
NUMBER ('1')
|
||||
PUNCTUATION (';')
|
||||
WHITESPACE (' ')
|
||||
IDENTIFIER ('a')
|
||||
KEYWORD_4 ('+')
|
||||
KEYWORD_4 ('=')
|
||||
NUMBER ('1')
|
||||
PUNCTUATION (';')
|
||||
WHITESPACE (' ')
|
||||
IDENTIFIER ('a')
|
||||
KEYWORD_4 ('=')
|
||||
WHITESPACE (' ')
|
||||
KEYWORD_4 ('+')
|
||||
NUMBER ('1')
|
||||
PUNCTUATION (';')
|
||||
'''
|
||||
}
|
||||
|
||||
private static SyntaxTable createJavaSyntaxTable() {
|
||||
SyntaxTable table = new SyntaxTable();
|
||||
|
||||
@@ -341,7 +402,8 @@ KEYWORD_1 ('b-c')
|
||||
WHITESPACE (' ')
|
||||
KEYWORD_2 ('d#')
|
||||
WHITESPACE (' ')
|
||||
IDENTIFIER ('e-')
|
||||
KEYWORD_2 ('e')
|
||||
CHARACTER ('-')
|
||||
WHITESPACE (' ')
|
||||
KEYWORD_2 ('e')
|
||||
WHITESPACE (' ')
|
||||
|
||||
Reference in New Issue
Block a user