From 692b535a7d7f151db545fa0aa290a12f4f981fc3 Mon Sep 17 00:00:00 2001 From: Rainer Kottenhoff Date: Sat, 3 Apr 2021 15:07:34 +0200 Subject: [PATCH] + upd/chg: C/C++ Lexer: styles and keywords --- lexilla/lexers_x/LexerUtils.cxx | 2 +- src/StyleLexers/styleLexCPP.c | 42 ++-- src/StyleLexers/styleLexKotlin.c | 4 +- src/Styles.c | 229 +++++++++--------- src/Styles.h | 1 + .../StyleLexers/styleLexCPP/Config.cpp | 7 +- 6 files changed, 155 insertions(+), 130 deletions(-) diff --git a/lexilla/lexers_x/LexerUtils.cxx b/lexilla/lexers_x/LexerUtils.cxx index 45a42e6be..c914a2d21 100644 --- a/lexilla/lexers_x/LexerUtils.cxx +++ b/lexilla/lexers_x/LexerUtils.cxx @@ -187,7 +187,7 @@ namespace Scintilla { else if (ch <= 32 && len >= 3 && len < 16 && AnyOf(sc.ch, 'T', 'F', 'N', 'X')) { char s[8]; sc.GetCurrent(s, sizeof(s)); - marker = StrEqualsAny(s, "TODO", "FIXME", "NOTE", "XXX", "TBD") + marker = StrEqualsAny(s, "BUG", "FIXME", "HACK", "NOTE", "TBD", "TODO", "XXX") || StrStartsWith(s, "NOLINT"); // clang-tidy: NOLINT, NOLINTNEXTLINE } diff --git a/src/StyleLexers/styleLexCPP.c b/src/StyleLexers/styleLexCPP.c index f73a8a0dc..33981cfca 100644 --- a/src/StyleLexers/styleLexCPP.c +++ b/src/StyleLexers/styleLexCPP.c @@ -5,30 +5,38 @@ KEYWORDLIST KeyWords_CPP = { // Primary keywords - "_Alignas _Alignof _Atomic _Bool _Complex _Generic _Imaginary _Noreturn _Static_assert _Thread_local alignas " - "alignof auto bool break case catch char char16_t char32_t class const const_cast constexpr continue " - "decltype default defined delete do double dynamic_cast else enum explicit export extern false float for " - "friend goto if inline int long mutable naked namespace new noexcept noreturn nullptr operator private " - "protected public register reinterpret_cast restrict return short signed sizeof static static_assert " - "static_cast struct switch template this thread_local throw true try typedef typeid typename union " - "unsigned using virtual void volatile wchar_t while", + "alignas alignof asm audit auto axiom bitand bitor bool break case catch char class compl concept " + "const const_cast consteval constexpr continue co_await co_return co_yield " + "decltype default defined delete do double dynamic_cast else enum explicit export extern false final float for " + "friend goto if import inline int long module mutable naked namespace new noexcept not not_eq noreturn nullptr " + "operator or or_eq override private protected public " + "register reinterpret_cast requires restrict return " + "short signed sizeof static static_assert static_cast struct switch " + "template this thread_local throw true try typedef typeid typename " + "union unsigned using virtual void volatile while xor xor_eq", // Secondary keywords + "_Alignas _Alignof _Atomic _Bool _Complex _Generic _Imaginary _Noreturn _Static_assert _Thread_local " "_Pragma __DATE__ __FILE__ __LINE__ __STDCPP_DEFAULT_NEW_ALIGNMENT__ __STDCPP_STRICT_POINTER_SAFETY__ " "__STDCPP_THREADS__ __STDC_HOSTED__ __STDC_ISO_10646__ __STDC_MB_MIGHT_NEQ_WC__ __STDC_UTF_16__ " "__STDC_UTF_32__ __STDC_VERSION__ __STDC__ __TIME__ __VA_ARGS__ __VA_OPT__ __abstract __alignof __asm " "__assume __based __box __cdecl __cplusplus __declspec __delegate __event __except __except__try " "__fastcall __finally __gc __has_include __hook __identifier __if_exists __if_not_exists __inline " "__interface __leave __multiple_inheritance __nogc __noop __pin __property __raise __sealed " - "__single_inheritance __stdcall __super __try __try_cast __unhook __uuidof __value __virtual_inheritance " - "asm final override", + "__single_inheritance __stdcall __super __try __try_cast __unhook __uuidof __value __virtual_inheritance", // Documentation comment keywords - "", + "addindex addtogroup anchor arg attention author b brief bug c class code date def defgroup deprecated dontinclude " + "e em endcode endhtmlonly endif endlatexonly endlink endverbatim enum example exception f$ f[f] file" + "hideinitializer htmlinclude htmlonly if image include ingroup internal invariant interface latexonly li line link " + "mainpage name namespace nosubgrouping note overload p page par param param[in] param[out] post pre " + "ref relates remarks return retval sa section see showinitializer since skip skipline struct subsection " + "test throw throws todo typedef union until var verbatim verbinclude version warning weakgroup", // Global classes and typedefs - "__int16 __int32 __int64 __int8 __m128 __m128d __m128i __m64 __wchar_t complex imaginary int16_t int32_t " - "int64_t int8_t intmax_t intptr_t ptrdiff_t size_t uint16_t uint32_t uint64_t uint8_t uintmax_t uintptr_t", + "__int16 __int32 __int64 __int8 __m128 __m128d __m128i __m64 __wchar_t char16_t char32_t complex imaginary int16_t int32_t " + "int64_t int8_t intmax_t intptr_t ptrdiff_t size_t uint16_t uint32_t uint64_t uint8_t uintmax_t uintptr_t wchar_t", // Preprocessor definitions "DEBUG NDEBUG UNICODE _DEBUG _MSC_VER _UNICODE", // Task marker and error marker keywords + "BUG FIXME HACK NOTE TBD TODO UNDONE XXX", NULL, }; @@ -39,17 +47,21 @@ EDITLEXER lexCPP = { {STYLE_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, //{ {SCE_C_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, { {SCE_C_IDENTIFIER}, IDS_LEX_STR_63129, L"Identifier", L"", L"" }, - { {SCE_C_COMMENT}, IDS_LEX_STR_63127, L"Comment", L"fore:#008000", L"" }, + { {MULTI_STYLE(SCE_C_COMMENT,SCE_C_COMMENTLINE,0,0)}, IDS_LEX_STR_63127, L"Comment", L"fore:#008000", L"" }, { {SCE_C_WORD}, IDS_LEX_STR_63128, L"Keyword", L"bold; fore:#0A246A", L"" }, { {SCE_C_WORD2}, IDS_LEX_STR_63260, L"Keyword 2nd", L"bold; italic; fore:#3C6CDD", L"" }, { {SCE_C_GLOBALCLASS}, IDS_LEX_STR_63258, L"Typedefs/Classes", L"bold; italic; fore:#800000", L"" }, - { {MULTI_STYLE(SCE_C_STRING,SCE_C_CHARACTER,SCE_C_STRINGEOL,SCE_C_VERBATIM)}, IDS_LEX_STR_63131, L"String", L"fore:#008000", L"" }, + { {SCE_C_STRING}, IDS_LEX_STR_63131, L"String", L"fore:#008000", L"" }, { {SCE_C_NUMBER}, IDS_LEX_STR_63130, L"Number", L"fore:#FF0000", L"" }, { {SCE_C_OPERATOR}, IDS_LEX_STR_63132, L"Operator", L"fore:#B000B0", L"" }, { {MULTI_STYLE(SCE_C_PREPROCESSOR,SCE_C_PREPROCESSORCOMMENT,SCE_C_PREPROCESSORCOMMENTDOC,0)}, IDS_LEX_STR_63133, L"Preprocessor", L"fore:#FF8000", L"" }, + { {MULTI_STYLE(SCE_C_VERBATIM,SCE_C_TRIPLEVERBATIM,0,0)}, IDS_LEX_STR_63134, L"Verbatim", L"fore:#B000B0", L"" }, + { {MULTI_STYLE(SCE_C_COMMENTDOC,SCE_C_COMMENTLINEDOC,SCE_C_COMMENTDOCKEYWORD, SCE_C_COMMENTDOCKEYWORDERROR)}, IDS_LEX_STR_63259, L"Comment Doc", L"fore:#808080", L"" }, + { {SCE_C_TASKMARKER}, IDS_LEX_STR_63373, L"Task Marker", L"bold; fore:#208080", L"" }, //{ {SCE_C_UUID}, L"UUID", L"", L"" }, //{ {SCE_C_REGEX}, L"Regex", L"", L"" }, + //{ {SCE_C_USERLITERAL}, L"User Literal", L"", L"" }, + //{ {SCE_C_ESCAPESEQUENCE}, L"Esc Seq", L"", L"" }, EDITLEXER_SENTINEL } }; - diff --git a/src/StyleLexers/styleLexKotlin.c b/src/StyleLexers/styleLexKotlin.c index f9a921ad0..2a5fd974a 100644 --- a/src/StyleLexers/styleLexKotlin.c +++ b/src/StyleLexers/styleLexKotlin.c @@ -99,9 +99,9 @@ EDITLEXER lexKotlin = { { SCE_KOTLIN_ENUM }, IDS_LEX_STR_63203, L"Enumeration", L"fore:#FF8000", L"" }, { { SCE_KOTLIN_FUNCTION }, IDS_LEX_STR_63277, L"Function", L"fore:#A46000", L"" }, { { MULTI_STYLE(SCE_KOTLIN_COMMENTBLOCK, SCE_KOTLIN_COMMENTLINE, 0, 0) }, IDS_LEX_STR_63127, L"Comment", L"fore:#608060", L"" }, - { { SCE_KOTLIN_COMMENTDOCWORD }, IDS_LEX_STR_63371, L"Comment Doc Word", L"fore:#408080", L"" }, - { { SCE_KOTLIN_TASKMARKER }, IDS_LEX_STR_63373, L"Task Marker", L"bold; fore:#408080" }, { { MULTI_STYLE(SCE_KOTLIN_COMMENTBLOCKDOC, SCE_KOTLIN_COMMENTLINEDOC, 0, 0) }, IDS_LEX_STR_63259, L"Comment Doc", L"fore:#408080", L"" }, + { { SCE_KOTLIN_COMMENTDOCWORD }, IDS_LEX_STR_63371, L"Comment Doc Word", L"fore:#408080", L"" }, + { { SCE_KOTLIN_TASKMARKER }, IDS_LEX_STR_63373, L"Task Marker", L"bold; fore:#208080" }, { { MULTI_STYLE(SCE_KOTLIN_CHARACTER, SCE_KOTLIN_STRING, 0, 0) }, IDS_LEX_STR_63131, L"String", L"fore:#008000", L"" }, { { MULTI_STYLE(SCE_KOTLIN_RAWSTRING, SCE_KOTLIN_RAWSTRINGSTART, SCE_KOTLIN_RAWSTRINGEND, 0) }, IDS_LEX_STR_63134, L"Verbatim String", L"fore:#F08000", L"" }, { { SCE_KOTLIN_ESCAPECHAR }, IDS_LEX_STR_63366, L"ESC Sequence", L"fore:#0080C0", L"" }, diff --git a/src/Styles.c b/src/Styles.c index 8ed4d9790..1a46760c5 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -1470,118 +1470,8 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) COUNTOF(s_pLexCurrent->Styles[STY_CTRL_CHR].szValue)); } else if (s_pLexCurrent->lexerID != SCLEX_NULL) { - // ----------------------------------------------- - int i = 1; // don't re-apply lexer's default style - // ----------------------------------------------- - while (s_pLexCurrent->Styles[i].iStyle != -1) { - // apply MULTI_STYLE() MACRO - for (int j = 0; j < 4 && (s_pLexCurrent->Styles[i].iStyle8[j] != 0 || j == 0); ++j) { - Style_SetStyles(hwnd, s_pLexCurrent->Styles[i].iStyle8[j], s_pLexCurrent->Styles[i].szValue, false); - } - if (s_pLexCurrent->lexerID == SCLEX_HTML && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_HPHP_DEFAULT) { - int iRelated[] = { SCE_HPHP_COMMENT, SCE_HPHP_COMMENTLINE, SCE_HPHP_WORD, SCE_HPHP_HSTRING, SCE_HPHP_SIMPLESTRING, SCE_HPHP_NUMBER, - SCE_HPHP_OPERATOR, SCE_HPHP_VARIABLE, SCE_HPHP_HSTRING_VARIABLE, SCE_HPHP_COMPLEX_VARIABLE - }; - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd,iRelated[j],s_pLexCurrent->Styles[i].szValue, false); - } - } - - if (s_pLexCurrent->lexerID == SCLEX_HTML && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_HJ_DEFAULT) { - int iRelated[] = { SCE_HJ_COMMENT, SCE_HJ_COMMENTLINE, SCE_HJ_COMMENTDOC, SCE_HJ_KEYWORD, SCE_HJ_WORD, SCE_HJ_DOUBLESTRING, - SCE_HJ_SINGLESTRING, SCE_HJ_STRINGEOL, SCE_HJ_REGEX, SCE_HJ_NUMBER, SCE_HJ_SYMBOLS - }; - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd,iRelated[j],s_pLexCurrent->Styles[i].szValue, false); - } - } - - if (s_pLexCurrent->lexerID == SCLEX_HTML && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_HJA_DEFAULT) { - int iRelated[] = { SCE_HJA_COMMENT, SCE_HJA_COMMENTLINE, SCE_HJA_COMMENTDOC, SCE_HJA_KEYWORD, SCE_HJA_WORD, SCE_HJA_DOUBLESTRING, - SCE_HJA_SINGLESTRING, SCE_HJA_STRINGEOL, SCE_HJA_REGEX, SCE_HJA_NUMBER, SCE_HJA_SYMBOLS - }; - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd,iRelated[j],s_pLexCurrent->Styles[i].szValue, false); - } - } - - if (s_pLexCurrent->lexerID == SCLEX_HTML && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_HB_DEFAULT) { - int iRelated[] = { SCE_HB_COMMENTLINE, SCE_HB_WORD, SCE_HB_IDENTIFIER, SCE_HB_STRING, SCE_HB_STRINGEOL, SCE_HB_NUMBER }; - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd,iRelated[j],s_pLexCurrent->Styles[i].szValue, false); - } - } - - if (s_pLexCurrent->lexerID == SCLEX_HTML && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_HBA_DEFAULT) { - int iRelated[] = { SCE_HBA_COMMENTLINE, SCE_HBA_WORD, SCE_HBA_IDENTIFIER, SCE_HBA_STRING, SCE_HBA_STRINGEOL, SCE_HBA_NUMBER }; - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd,iRelated[j],s_pLexCurrent->Styles[i].szValue, false); - } - } - - if ((s_pLexCurrent->lexerID == SCLEX_HTML || s_pLexCurrent->lexerID == SCLEX_XML) && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_H_SGML_DEFAULT) { - int iRelated[] = { SCE_H_SGML_COMMAND, SCE_H_SGML_1ST_PARAM, SCE_H_SGML_DOUBLESTRING, SCE_H_SGML_SIMPLESTRING, SCE_H_SGML_ERROR, - SCE_H_SGML_SPECIAL, SCE_H_SGML_ENTITY, SCE_H_SGML_COMMENT, SCE_H_SGML_1ST_PARAM_COMMENT, SCE_H_SGML_BLOCK_DEFAULT - }; - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd,iRelated[j],s_pLexCurrent->Styles[i].szValue, false); - } - } - - if ((s_pLexCurrent->lexerID == SCLEX_HTML || s_pLexCurrent->lexerID == SCLEX_XML) && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_H_CDATA) { - int iRelated[] = { SCE_HP_START, SCE_HP_DEFAULT, SCE_HP_COMMENTLINE, SCE_HP_NUMBER, SCE_HP_STRING, - SCE_HP_CHARACTER, SCE_HP_WORD, SCE_HP_TRIPLE, SCE_HP_TRIPLEDOUBLE, SCE_HP_CLASSNAME, - SCE_HP_DEFNAME, SCE_HP_OPERATOR, SCE_HP_IDENTIFIER, SCE_HPA_START, SCE_HPA_DEFAULT, - SCE_HPA_COMMENTLINE, SCE_HPA_NUMBER, SCE_HPA_STRING, SCE_HPA_CHARACTER, SCE_HPA_WORD, - SCE_HPA_TRIPLE, SCE_HPA_TRIPLEDOUBLE, SCE_HPA_CLASSNAME, SCE_HPA_DEFNAME, SCE_HPA_OPERATOR, - SCE_HPA_IDENTIFIER - }; - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd,iRelated[j],s_pLexCurrent->Styles[i].szValue, false); - } - } - - if (s_pLexCurrent->lexerID == SCLEX_XML && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_H_CDATA) { - int iRelated[] = { SCE_H_SCRIPT, SCE_H_ASP, SCE_H_ASPAT, SCE_H_QUESTION, - SCE_HPHP_DEFAULT, SCE_HPHP_COMMENT, SCE_HPHP_COMMENTLINE, SCE_HPHP_WORD, SCE_HPHP_HSTRING, - SCE_HPHP_SIMPLESTRING, SCE_HPHP_NUMBER, SCE_HPHP_OPERATOR, SCE_HPHP_VARIABLE, - SCE_HPHP_HSTRING_VARIABLE, SCE_HPHP_COMPLEX_VARIABLE, SCE_HJ_START, SCE_HJ_DEFAULT, - SCE_HJ_COMMENT, SCE_HJ_COMMENTLINE, SCE_HJ_COMMENTDOC, SCE_HJ_KEYWORD, SCE_HJ_WORD, - SCE_HJ_DOUBLESTRING, SCE_HJ_SINGLESTRING, SCE_HJ_STRINGEOL, SCE_HJ_REGEX, SCE_HJ_NUMBER, - SCE_HJ_SYMBOLS, SCE_HJA_START, SCE_HJA_DEFAULT, SCE_HJA_COMMENT, SCE_HJA_COMMENTLINE, - SCE_HJA_COMMENTDOC, SCE_HJA_KEYWORD, SCE_HJA_WORD, SCE_HJA_DOUBLESTRING, SCE_HJA_SINGLESTRING, - SCE_HJA_STRINGEOL, SCE_HJA_REGEX, SCE_HJA_NUMBER, SCE_HJA_SYMBOLS, SCE_HB_START, SCE_HB_DEFAULT, - SCE_HB_COMMENTLINE, SCE_HB_WORD, SCE_HB_IDENTIFIER, SCE_HB_STRING, SCE_HB_STRINGEOL, - SCE_HB_NUMBER, SCE_HBA_START, SCE_HBA_DEFAULT, SCE_HBA_COMMENTLINE, SCE_HBA_WORD, - SCE_HBA_IDENTIFIER, SCE_HBA_STRING, SCE_HBA_STRINGEOL, SCE_HBA_NUMBER, SCE_HP_START, - SCE_HP_DEFAULT, SCE_HP_COMMENTLINE, SCE_HP_NUMBER, SCE_HP_STRING, SCE_HP_CHARACTER, SCE_HP_WORD, - SCE_HP_TRIPLE, SCE_HP_TRIPLEDOUBLE, SCE_HP_CLASSNAME, SCE_HP_DEFNAME, SCE_HP_OPERATOR, - SCE_HP_IDENTIFIER, SCE_HPA_START, SCE_HPA_DEFAULT, SCE_HPA_COMMENTLINE, SCE_HPA_NUMBER, - SCE_HPA_STRING, SCE_HPA_CHARACTER, SCE_HPA_WORD, SCE_HPA_TRIPLE, SCE_HPA_TRIPLEDOUBLE, - SCE_HPA_CLASSNAME, SCE_HPA_DEFNAME, SCE_HPA_OPERATOR, SCE_HPA_IDENTIFIER - }; - - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd, iRelated[j], s_pLexCurrent->Styles[i].szValue, false); - } - } - - if (s_pLexCurrent->lexerID == SCLEX_CPP && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_C_COMMENT) { - int iRelated[] = { SCE_C_COMMENTLINE, SCE_C_COMMENTDOC, SCE_C_COMMENTLINEDOC, SCE_C_COMMENTDOCKEYWORD, SCE_C_COMMENTDOCKEYWORDERROR }; - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd, iRelated[j], s_pLexCurrent->Styles[i].szValue, false); - } - } - - if (s_pLexCurrent->lexerID == SCLEX_SQL && s_pLexCurrent->Styles[i].iStyle8[0] == SCE_SQL_COMMENT) { - int iRelated[] = { SCE_SQL_COMMENTLINE, SCE_SQL_COMMENTDOC, SCE_SQL_COMMENTLINEDOC, SCE_SQL_COMMENTDOCKEYWORD, SCE_SQL_COMMENTDOCKEYWORDERROR }; - for (int j = 0; j < COUNTOF(iRelated); j++) { - Style_SetStyles(hwnd, iRelated[j], s_pLexCurrent->Styles[i].szValue, false); - } - } - ++i; - } + Style_FillRelatedStyles(hwnd, s_pLexCurrent); } // Lexer reserved indicator styles @@ -1635,6 +1525,123 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) } + +//============================================================================= +// +// Style_FillRelatedStyles() +// +void Style_FillRelatedStyles(HWND hwnd, const PEDITLEXER pLexer) { + + // ----------------------------------------------- + int i = 1; // don't re-apply lexer's default style + // ----------------------------------------------- + while (pLexer->Styles[i].iStyle != -1) { + + // apply MULTI_STYLE() MACRO + for (int j = 0; j < 4 && (pLexer->Styles[i].iStyle8[j] != 0 || j == 0); ++j) { + Style_SetStyles(hwnd, pLexer->Styles[i].iStyle8[j], pLexer->Styles[i].szValue, false); + } + + + if (pLexer->lexerID == SCLEX_HTML && pLexer->Styles[i].iStyle8[0] == SCE_HPHP_DEFAULT) { + int iRelated[] = { SCE_HPHP_COMMENT, SCE_HPHP_COMMENTLINE, SCE_HPHP_WORD, SCE_HPHP_HSTRING, SCE_HPHP_SIMPLESTRING, SCE_HPHP_NUMBER, + SCE_HPHP_OPERATOR, SCE_HPHP_VARIABLE, SCE_HPHP_HSTRING_VARIABLE, SCE_HPHP_COMPLEX_VARIABLE }; + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + + if (pLexer->lexerID == SCLEX_HTML && pLexer->Styles[i].iStyle8[0] == SCE_HJ_DEFAULT) { + int iRelated[] = { SCE_HJ_COMMENT, SCE_HJ_COMMENTLINE, SCE_HJ_COMMENTDOC, SCE_HJ_KEYWORD, SCE_HJ_WORD, SCE_HJ_DOUBLESTRING, + SCE_HJ_SINGLESTRING, SCE_HJ_STRINGEOL, SCE_HJ_REGEX, SCE_HJ_NUMBER, SCE_HJ_SYMBOLS }; + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + + if (pLexer->lexerID == SCLEX_HTML && pLexer->Styles[i].iStyle8[0] == SCE_HJA_DEFAULT) { + int iRelated[] = { SCE_HJA_COMMENT, SCE_HJA_COMMENTLINE, SCE_HJA_COMMENTDOC, SCE_HJA_KEYWORD, SCE_HJA_WORD, SCE_HJA_DOUBLESTRING, + SCE_HJA_SINGLESTRING, SCE_HJA_STRINGEOL, SCE_HJA_REGEX, SCE_HJA_NUMBER, SCE_HJA_SYMBOLS }; + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + + if (pLexer->lexerID == SCLEX_HTML && pLexer->Styles[i].iStyle8[0] == SCE_HB_DEFAULT) { + int iRelated[] = { SCE_HB_COMMENTLINE, SCE_HB_WORD, SCE_HB_IDENTIFIER, SCE_HB_STRING, SCE_HB_STRINGEOL, SCE_HB_NUMBER }; + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + + if (pLexer->lexerID == SCLEX_HTML && pLexer->Styles[i].iStyle8[0] == SCE_HBA_DEFAULT) { + int iRelated[] = { SCE_HBA_COMMENTLINE, SCE_HBA_WORD, SCE_HBA_IDENTIFIER, SCE_HBA_STRING, SCE_HBA_STRINGEOL, SCE_HBA_NUMBER }; + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + + if ((pLexer->lexerID == SCLEX_HTML || pLexer->lexerID == SCLEX_XML) && pLexer->Styles[i].iStyle8[0] == SCE_H_SGML_DEFAULT) { + int iRelated[] = { SCE_H_SGML_COMMAND, SCE_H_SGML_1ST_PARAM, SCE_H_SGML_DOUBLESTRING, SCE_H_SGML_SIMPLESTRING, SCE_H_SGML_ERROR, + SCE_H_SGML_SPECIAL, SCE_H_SGML_ENTITY, SCE_H_SGML_COMMENT, SCE_H_SGML_1ST_PARAM_COMMENT, SCE_H_SGML_BLOCK_DEFAULT }; + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + + if ((pLexer->lexerID == SCLEX_HTML || pLexer->lexerID == SCLEX_XML) && pLexer->Styles[i].iStyle8[0] == SCE_H_CDATA) { + int iRelated[] = { SCE_HP_START, SCE_HP_DEFAULT, SCE_HP_COMMENTLINE, SCE_HP_NUMBER, SCE_HP_STRING, + SCE_HP_CHARACTER, SCE_HP_WORD, SCE_HP_TRIPLE, SCE_HP_TRIPLEDOUBLE, SCE_HP_CLASSNAME, + SCE_HP_DEFNAME, SCE_HP_OPERATOR, SCE_HP_IDENTIFIER, SCE_HPA_START, SCE_HPA_DEFAULT, + SCE_HPA_COMMENTLINE, SCE_HPA_NUMBER, SCE_HPA_STRING, SCE_HPA_CHARACTER, SCE_HPA_WORD, + SCE_HPA_TRIPLE, SCE_HPA_TRIPLEDOUBLE, SCE_HPA_CLASSNAME, SCE_HPA_DEFNAME, SCE_HPA_OPERATOR, + SCE_HPA_IDENTIFIER }; + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + + if (pLexer->lexerID == SCLEX_XML && pLexer->Styles[i].iStyle8[0] == SCE_H_CDATA) { + int iRelated[] = { SCE_H_SCRIPT, SCE_H_ASP, SCE_H_ASPAT, SCE_H_QUESTION, + SCE_HPHP_DEFAULT, SCE_HPHP_COMMENT, SCE_HPHP_COMMENTLINE, SCE_HPHP_WORD, SCE_HPHP_HSTRING, + SCE_HPHP_SIMPLESTRING, SCE_HPHP_NUMBER, SCE_HPHP_OPERATOR, SCE_HPHP_VARIABLE, + SCE_HPHP_HSTRING_VARIABLE, SCE_HPHP_COMPLEX_VARIABLE, SCE_HJ_START, SCE_HJ_DEFAULT, + SCE_HJ_COMMENT, SCE_HJ_COMMENTLINE, SCE_HJ_COMMENTDOC, SCE_HJ_KEYWORD, SCE_HJ_WORD, + SCE_HJ_DOUBLESTRING, SCE_HJ_SINGLESTRING, SCE_HJ_STRINGEOL, SCE_HJ_REGEX, SCE_HJ_NUMBER, + SCE_HJ_SYMBOLS, SCE_HJA_START, SCE_HJA_DEFAULT, SCE_HJA_COMMENT, SCE_HJA_COMMENTLINE, + SCE_HJA_COMMENTDOC, SCE_HJA_KEYWORD, SCE_HJA_WORD, SCE_HJA_DOUBLESTRING, SCE_HJA_SINGLESTRING, + SCE_HJA_STRINGEOL, SCE_HJA_REGEX, SCE_HJA_NUMBER, SCE_HJA_SYMBOLS, SCE_HB_START, SCE_HB_DEFAULT, + SCE_HB_COMMENTLINE, SCE_HB_WORD, SCE_HB_IDENTIFIER, SCE_HB_STRING, SCE_HB_STRINGEOL, + SCE_HB_NUMBER, SCE_HBA_START, SCE_HBA_DEFAULT, SCE_HBA_COMMENTLINE, SCE_HBA_WORD, + SCE_HBA_IDENTIFIER, SCE_HBA_STRING, SCE_HBA_STRINGEOL, SCE_HBA_NUMBER, SCE_HP_START, + SCE_HP_DEFAULT, SCE_HP_COMMENTLINE, SCE_HP_NUMBER, SCE_HP_STRING, SCE_HP_CHARACTER, SCE_HP_WORD, + SCE_HP_TRIPLE, SCE_HP_TRIPLEDOUBLE, SCE_HP_CLASSNAME, SCE_HP_DEFNAME, SCE_HP_OPERATOR, + SCE_HP_IDENTIFIER, SCE_HPA_START, SCE_HPA_DEFAULT, SCE_HPA_COMMENTLINE, SCE_HPA_NUMBER, + SCE_HPA_STRING, SCE_HPA_CHARACTER, SCE_HPA_WORD, SCE_HPA_TRIPLE, SCE_HPA_TRIPLEDOUBLE, + SCE_HPA_CLASSNAME, SCE_HPA_DEFNAME, SCE_HPA_OPERATOR, SCE_HPA_IDENTIFIER }; + + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + + if (pLexer->lexerID == SCLEX_CPP && pLexer->Styles[i].iStyle8[0] == SCE_C_STRING) { + int iRelated[] = { SCE_C_CHARACTER, SCE_C_STRINGEOL, SCE_C_VERBATIM, SCE_C_STRINGRAW, SCE_C_HASHQUOTEDSTRING }; + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + + if (pLexer->lexerID == SCLEX_SQL && pLexer->Styles[i].iStyle8[0] == SCE_SQL_COMMENT) { + int iRelated[] = { SCE_SQL_COMMENTLINE, SCE_SQL_COMMENTDOC, SCE_SQL_COMMENTLINEDOC, SCE_SQL_COMMENTDOCKEYWORD, SCE_SQL_COMMENTDOCKEYWORDERROR }; + for (int j = 0; j < COUNTOF(iRelated); j++) { + Style_SetStyles(hwnd, iRelated[j], pLexer->Styles[i].szValue, false); + } + } + ++i; + } +} + //============================================================================= // // Style_SetUrlHotSpot() diff --git a/src/Styles.h b/src/Styles.h index 24b515579..a0e113c13 100644 --- a/src/Styles.h +++ b/src/Styles.h @@ -51,6 +51,7 @@ void Style_SetFoldingAvailability(PEDITLEXER pLexer); void Style_SetFoldingProperties(bool active); void Style_SetFoldingFocusedView(); void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew); +void Style_FillRelatedStyles(HWND hwnd, const PEDITLEXER pLexer); void Style_SetUrlHotSpot(HWND hwnd); void Style_SetInvisible(HWND hwnd, bool); void Style_SetReadonly(HWND hwnd, bool); diff --git a/test/test_files/StyleLexers/styleLexCPP/Config.cpp b/test/test_files/StyleLexers/styleLexCPP/Config.cpp index ec1032877..141a79841 100644 --- a/test/test_files/StyleLexers/styleLexCPP/Config.cpp +++ b/test/test_files/StyleLexers/styleLexCPP/Config.cpp @@ -1,12 +1,17 @@ /****************************************************************************** * * * Config.cpp * -* * +* TODO: HACK * + +addindex + *******************************************************************************/ #include #include +// TODO: fkdlkldfdl + // ---------------------------------------------------------------------------- extern "C" {