Skip to content

Commit

Permalink
Fix #461: Better rendering of #include'd files in C and C++ files
Browse files Browse the repository at this point in the history
  • Loading branch information
bobbylight committed Oct 22, 2022
1 parent aa6d5e0 commit 78b37e0
Show file tree
Hide file tree
Showing 7 changed files with 2,672 additions and 2,531 deletions.
Expand Up @@ -571,6 +571,13 @@ URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?)
{WhiteSpace}+ { addToken(Token.WHITESPACE); }

/* Preprocessor directives */
/* Special-case <includes> for uniform appearance with "string" includes "*/
"#include <"[A-Za-z0-9_.]+">" {
int start = zzStartRead;
addToken(start, start+7, TokenTypes.PREPROCESSOR);
addToken(start+8, start+8, TokenTypes.WHITESPACE);
addToken(start+9, zzMarkedPos - 1, TokenTypes.LITERAL_STRING_DOUBLE_QUOTE);
}
"#"{WhiteSpace}*{PreprocessorWord} { addToken(Token.PREPROCESSOR); }

/* String/Character Literals. */
Expand Down
2,755 changes: 1,383 additions & 1,372 deletions RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/modes/CPlusPlusTokenMaker.java 100755 → 100644

Large diffs are not rendered by default.

Expand Up @@ -538,6 +538,13 @@ URL = (((https?|f(tp|ile))"://"|"www.")({URLCharacters}{URLEndCharacter})?)
{WhiteSpace}+ { addToken(Token.WHITESPACE); }

/* Preprocessor directives */
/* Special-case <includes> for uniform appearance with "string" includes "*/
"#include <"[A-Za-z0-9_.]+">" {
int start = zzStartRead;
addToken(start, start+7, TokenTypes.PREPROCESSOR);
addToken(start+8, start+8, TokenTypes.WHITESPACE);
addToken(start+9, zzMarkedPos - 1, TokenTypes.LITERAL_STRING_DOUBLE_QUOTE);
}
"#"{WhiteSpace}*{PreprocessorWord} { addToken(Token.PREPROCESSOR); }

/* String/Character Literals. */
Expand Down
2,332 changes: 1,174 additions & 1,158 deletions RSyntaxTextArea/src/main/java/org/fife/ui/rsyntaxtextarea/modes/CTokenMaker.java 100755 → 100644

Large diffs are not rendered by default.

Expand Up @@ -576,6 +576,41 @@ void testOperators() {
}


@Test
void testPreprocessorWords() {
assertAllTokensOfType(TokenTypes.PREPROCESSOR,
"#define",
"#elif",
"#else",
"#endif",
"#error",
"#if",
"#ifdef",
"#ifndef",
"#include",
"#line",
"#pragma",
"#undef"
);
}


@Test
void testPreprocessor_renderIncludesAsStrings() {

String code = "#include <something.h>";
Segment segment = createSegment(code);
TokenMaker tm = createTokenMaker();
Token t = tm.getTokenList(segment, TokenTypes.NULL, 0);

Assertions.assertTrue(t.is(TokenTypes.PREPROCESSOR, "#include"));
t = t.getNextToken();
Assertions.assertTrue(t.isSingleChar(TokenTypes.WHITESPACE, ' '));
t = t.getNextToken();
Assertions.assertTrue(t.is(TokenTypes.LITERAL_STRING_DOUBLE_QUOTE, "<something.h>"));
}


@Test
void testSeparators() {

Expand Down Expand Up @@ -621,4 +656,18 @@ void testStringLiterals() {
}


@Test
void testTrigraph() {
assertAllTokensOfType(TokenTypes.OPERATOR,
"??=",
"??(",
"??)",
"??/",
"??'",
"??<",
"??>",
"??!",
"??-"
);
}
}
Expand Up @@ -559,6 +559,41 @@ void testOperators() {
}


@Test
void testPreprocessorWords() {
assertAllTokensOfType(TokenTypes.PREPROCESSOR,
"#define",
"#elif",
"#else",
"#endif",
"#error",
"#if",
"#ifdef",
"#ifndef",
"#include",
"#line",
"#pragma",
"#undef"
);
}


@Test
void testPreprocessor_renderIncludesAsStrings() {

String code = "#include <something.h>";
Segment segment = createSegment(code);
TokenMaker tm = createTokenMaker();
Token t = tm.getTokenList(segment, TokenTypes.NULL, 0);

Assertions.assertTrue(t.is(TokenTypes.PREPROCESSOR, "#include"));
t = t.getNextToken();
Assertions.assertTrue(t.isSingleChar(TokenTypes.WHITESPACE, ' '));
t = t.getNextToken();
Assertions.assertTrue(t.is(TokenTypes.LITERAL_STRING_DOUBLE_QUOTE, "<something.h>"));
}


@Test
void testSeparators() {

Expand Down Expand Up @@ -604,4 +639,20 @@ void testStringLiterals() {
}


@Test
void testTrigraph() {
assertAllTokensOfType(TokenTypes.OPERATOR,
"??=",
"??(",
"??)",
"??/",
"??'",
"??<",
"??>",
"??!",
"??-"
);
}


}
Expand Up @@ -100,7 +100,7 @@ private JMenuBar createMenuBar() {
ButtonGroup bg = new ButtonGroup();
addSyntaxItem("6502 Assembler", "Assembler6502.txt", SYNTAX_STYLE_ASSEMBLER_6502, bg, menu);
addSyntaxItem("ActionScript", "ActionScriptExample.txt", SYNTAX_STYLE_ACTIONSCRIPT, bg, menu);
addSyntaxItem("C", "CExample.txt", SYNTAX_STYLE_CPLUSPLUS, bg, menu);
addSyntaxItem("C", "CExample.txt", SYNTAX_STYLE_C, bg, menu);
addSyntaxItem("CSS", "CssExample.txt", SYNTAX_STYLE_CSS, bg, menu);
addSyntaxItem("Dockerfile", "DockerfileExample.txt", SYNTAX_STYLE_DOCKERFILE, bg, menu);
addSyntaxItem("Go", "GoExample.txt", SYNTAX_STYLE_GO, bg, menu);
Expand Down

0 comments on commit 78b37e0

Please sign in to comment.