diff --git a/Versions/build.txt b/Versions/build.txt index 758f7c981..058fbb17e 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -1712 +1713 diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index 618dbab69..90187888a 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 RC diff --git a/sciXlexers/LexAHKL.cxx b/sciXlexers/LexAHKL.cxx index cd199a908..83e7191d5 100644 --- a/sciXlexers/LexAHKL.cxx +++ b/sciXlexers/LexAHKL.cxx @@ -40,12 +40,10 @@ struct OptionsAHKL { bool fold; bool foldComment; bool foldCompact; - bool skipFolding; OptionsAHKL() { fold = false; foldComment = true; foldCompact = true; - skipFolding = false; } }; @@ -68,7 +66,6 @@ struct OptionSetAHKL : public OptionSet { DefineProperty("fold", &OptionsAHKL::fold); DefineProperty("fold.comment", &OptionsAHKL::foldComment); DefineProperty("fold.compact", &OptionsAHKL::foldCompact); - DefineProperty("fold.ahkl.skip", &OptionsAHKL::skipFolding); DefineWordListSets(ahklWordLists); } }; @@ -718,7 +715,7 @@ void SCI_METHOD LexerAHKL::Lex(Sci_PositionU startPos, Sci_Position lengthDoc, i void SCI_METHOD LexerAHKL::Fold(Sci_PositionU startPos, Sci_Position lengthDoc, int initStyle, IDocument *pAccess) { - if (!options.fold || options.skipFolding) { + if (!options.fold) { return; } diff --git a/scintilla/lexers/LexTCL.cxx b/scintilla/lexers/LexTCL.cxx index 1ea6ecf6e..4fdeae5f3 100644 --- a/scintilla/lexers/LexTCL.cxx +++ b/scintilla/lexers/LexTCL.cxx @@ -45,6 +45,8 @@ static inline bool IsANumberChar(int ch) { static void ColouriseTCLDoc(Sci_PositionU startPos, Sci_Position length, int , WordList *keywordlists[], Accessor &styler) { #define isComment(s) (s==SCE_TCL_COMMENT || s==SCE_TCL_COMMENTLINE || s==SCE_TCL_COMMENT_BOX || s==SCE_TCL_BLOCK_COMMENT) + + bool fold = (styler.GetPropertyInt("fold") != 0); bool foldComment = styler.GetPropertyInt("fold.comment") != 0; bool commentLevel = false; bool subBrace = false; // substitution begin with a brace ${.....} @@ -81,7 +83,8 @@ static void ColouriseTCLDoc(Sci_PositionU startPos, Sci_Position length, int , W currentLevel = styler.LevelAt(currentLine - 1) >> 17; commentLevel = (styler.LevelAt(currentLine - 1) >> 16) & 1; } else - styler.SetLevel(0, SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG); + if (fold) { styler.SetLevel(0, SC_FOLDLEVELBASE | SC_FOLDLEVELHEADERFLAG); } + bool visibleChars = false; int previousLevel = currentLevel; @@ -203,8 +206,10 @@ next: flag = SC_FOLDLEVELWHITEFLAG; if (currentLevel > previousLevel) flag = SC_FOLDLEVELHEADERFLAG; - styler.SetLevel(currentLine, flag + previousLevel + SC_FOLDLEVELBASE + (currentLevel << 17) + (commentLevel << 16)); + if (fold) { + styler.SetLevel(currentLine, flag + previousLevel + SC_FOLDLEVELBASE + (currentLevel << 17) + (commentLevel << 16)); + } // Update the line state, so it can be seen by next line if (sc.state == SCE_TCL_IN_QUOTE) { lineState = LS_OPEN_DOUBLE_QUOTE; diff --git a/src/Edit.c b/src/Edit.c index c17761e59..a675cca77 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -6840,8 +6840,9 @@ void EditFinalizeStyling(HWND hwnd, DocPos iEndPos) { UNUSED(hwnd); DocPos const startPos = SciCall_PositionFromLine(SciCall_LineFromPosition(SciCall_GetEndStyled())); - if ((iEndPos < 0) || (startPos < iEndPos)) { - Sci_ApplyLexerStyle(startPos, iEndPos); + DocPos const endPos = (iEndPos < 0) ? (DocPos)-1 : SciCall_GetLineEndPosition(SciCall_LineFromPosition(iEndPos)); + if (startPos < endPos) { + Sci_ApplyLexerStyle(startPos, endPos); } } @@ -6921,17 +6922,17 @@ void EditHideNotMarkedLineRange(HWND hwnd, bool bHideLines) Style_SetFoldingProperties(FocusedView.CodeFoldingAvailable); Style_SetFolding(hwnd, FocusedView.CodeFoldingAvailable && FocusedView.ShowCodeFolding); SciCall_FoldAll(EXPAND); + EditFinalizeStyling(hwnd, -1); EditMarkAllOccurrences(hwnd, true); UpdateVisibleUrlIndics(); } - else // ===== hide lines without marker ===== + else // ===== fold lines without marker ===== { // prepare hidden (folding) settings EditFinalizeStyling(hwnd, -1); FocusedView.CodeFoldingAvailable = true; FocusedView.ShowCodeFolding = true; Style_SetFoldingFocusedView(); - Style_SetFolding(hwnd, true); DocLn const iStartLine = 0; diff --git a/src/Helpers.h b/src/Helpers.h index b20a08f6d..8b50546c1 100644 --- a/src/Helpers.h +++ b/src/Helpers.h @@ -44,7 +44,7 @@ #define UNUSED(expr) (void)(expr) #define SIZEOF(ar) sizeof(ar) -//#define ARRAYSIZE(A) (assert(!(sizeof(A) % sizeof(*(A)))), (sizeof(A) / sizeof(*(A)))) +//#define ARRAYSIZE(A) (assert(!(sizeof(A) % sizeof(*(A)))), (sizeof(A) / sizeof((A)[0]))) #define COUNTOF(ar) ARRAYSIZE(ar) #define CSTRLEN(s) (COUNTOF(s)-1) diff --git a/src/Notepad3.c b/src/Notepad3.c index 24c8bbf08..51a568629 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -1550,9 +1550,10 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) int const vspaceOpt = Settings2.DenyVirtualSpaceAccess ? SCVS_NONE : NP3_VIRTUAL_SPACE_ACCESS_OPTIONS; SendMessage(hwndEditCtrl, SCI_SETVIRTUALSPACEOPTIONS, vspaceOpt, 0); + SendMessage(hwndEditCtrl, SCI_SETIDLESTYLING, SC_IDLESTYLING_NONE, 0); // needed for focused view // Idle Styling (very large text) - SendMessage(hwndEditCtrl, SCI_SETIDLESTYLING, SC_IDLESTYLING_AFTERVISIBLE, 0); - //~SendMessage(hwndEditCtrl, SCI_SETIDLESTYLING, SC_IDLESTYLING_ALL, 0); + //~~~SendMessage(hwndEditCtrl, SCI_SETIDLESTYLING, SC_IDLESTYLING_AFTERVISIBLE, 0); + //~~~SendMessage(hwndEditCtrl, SCI_SETIDLESTYLING, SC_IDLESTYLING_ALL, 0); SendMessage(hwndEditCtrl, SCI_SETCOMMANDEVENTS, false, 0); // speedup folding // assign command keys diff --git a/src/StyleLexers/styleLexStandard.c b/src/StyleLexers/styleLexStandard.c index 714127b21..ce4ff2200 100644 --- a/src/StyleLexers/styleLexStandard.c +++ b/src/StyleLexers/styleLexStandard.c @@ -43,7 +43,7 @@ SCLEX_NULL, IDS_LEX_STR_63266, L"2nd Default Text", L"txt; text; tmp; log; asc; /* 11 */ { {_STYLE_GETSTYLEID(STY_X_LN_SPACE)}, IDS_LEX_2ND_X_SPC, L"2nd Extra Line Spacing (Size)", L"", L"" }, /* 12 */ { {_STYLE_GETSTYLEID(STY_BOOK_MARK)}, IDS_LEX_2ND_BKMRK, L"2nd Bookmarks and Folding (Colors, Size)", L"size:+2; fore:#000000; back:#00DC00; charset:2; case:U; alpha:100", L"" }, /* 13 */ { {_STYLE_GETSTYLEID(STY_MARK_OCC)}, IDS_LEX_STR_63263, L"2nd Mark Occurrences (Indicator)", L"fore:#000000; alpha:100; alpha2:220; indic_box", L"" }, - /* 14 */ { {_STYLE_GETSTYLEID(STY_URL_HOTSPOT)}, IDS_LEX_STR_63265, L"2nd Hyperlink Hotspots", L"fore:#00D000; back:#009C00; alpha:180; indic_compositionthin; ", L"" }, + /* 14 */ { {_STYLE_GETSTYLEID(STY_URL_HOTSPOT)}, IDS_LEX_STR_63265, L"2nd Hyperlink Hotspots", L"fore:#00D000; back:#009C00; alpha:180; indic_compositionthin", L"" }, /* 15 */ { {_STYLE_GETSTYLEID(STY_IME_COLOR)}, IDS_LEX_STR_63353, L"2nd Inline-IME Color", L"fore:#FF0000", L"" }, EDITLEXER_SENTINEL } }; diff --git a/src/Styles.c b/src/Styles.c index b93067c15..2adeca52c 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -810,7 +810,6 @@ void Style_SetFoldingProperties(bool active) SciCall_SetProperty("fold.foldsyntaxbased", "1"); SciCall_SetProperty("fold.html", "1"); - SciCall_SetProperty("fold.ahkl.skip", "0"); SciCall_SetProperty("fold.preprocessor", "1"); SciCall_SetProperty("fold.cpp.comment.explicit", "0"); } @@ -826,26 +825,89 @@ void Style_SetFoldingProperties(bool active) // void Style_SetFoldingFocusedView() { - SciCall_SetProperty("fold", "1"); - SciCall_SetProperty("fold.comment", "1"); - SciCall_SetProperty("fold.compact", "0"); - SciCall_SetProperty("fold.foldsyntaxbased", "1"); - SciCall_SetProperty("fold.ahkl.skip", "1"); + SciCall_SetProperty("fold", "0"); // disable folding by lexers + SciCall_SetProperty("fold.comment", "1"); + SciCall_SetProperty("fold.compact", "0"); } +//============================================================================= +// +// void Style_SetLexerSpecificProperties() +// +void Style_SetLexerSpecificProperties(const int lexerId) +{ + switch (lexerId) + { + case SCLEX_XML: + SciCall_SetProperty("lexer.xml.allow.scripts", "1"); + break; + + case SCLEX_CPP: + SciCall_SetProperty("styling.within.preprocessor", "1"); + SciCall_SetProperty("lexer.cpp.track.preprocessor", "0"); + SciCall_SetProperty("lexer.cpp.update.preprocessor", "0"); + break; + + case SCLEX_PASCAL: + SciCall_SetProperty("lexer.pascal.smart.highlighting", "1"); + break; + + case SCLEX_SQL: + SciCall_SetProperty("sql.backslash.escapes", "1"); + SciCall_SetProperty("lexer.sql.backticks.identifier", "1"); + SciCall_SetProperty("lexer.sql.numbersign.comment", "1"); + break; + + case SCLEX_NSIS: + SciCall_SetProperty("nsis.ignorecase", "1"); + break; + + case SCLEX_CSS: + SciCall_SetProperty("lexer.css.scss.language", "1"); + SciCall_SetProperty("lexer.css.less.language", "1"); + break; + + case SCLEX_JSON: + SciCall_SetProperty("json.allow.comments", "1"); + SciCall_SetProperty("json.escape.sequence", "1"); + break; + + case SCLEX_PYTHON: + SciCall_SetProperty("tab.timmy.whinge.level", "1"); + break; + + default: + break; + } +} + + +//============================================================================= +// +// _IsItemInStyleString() +// +static inline bool _IsItemInStyleString(LPCWSTR lpszStyleStrg, LPCWSTR item) +{ + LPCWSTR pFound = StrStrI(lpszStyleStrg, item); + if (pFound) { + const WCHAR pre = (pFound == lpszStyleStrg) ? L' ' : pFound[-1]; + if ((pre == L' ') || (pre == L';')) { + const WCHAR end = pFound[lstrlen(item)]; + if ((end == L'\0') || (end == L' ') || (end == L';')) { + return true; + } + } + } + return false; +} + //============================================================================= // // Style_SetLexer() // -void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) +void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) { - int iValue; - COLORREF rgb; - COLORREF dColor; - - WCHAR wchSpecificStyle[80] = { L'\0' }; - // Select standard if NULL is specified if (!pLexNew) { pLexNew = GetDefaultLexer(); @@ -853,49 +915,23 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) pLexNew = GetCurrentStdLexer(); } } - const WCHAR* const wchNewLexerStyleStrg = pLexNew->Styles[STY_DEFAULT].szValue; + + // ! dont check for (pLexNew == s_pLexCurrent) <= "reapply current lexer" + // assert(pLexNew != s_pLexCurrent); + + bool const bFocusedView = FocusedView.HideNonMatchedLines; + if (bFocusedView) { EditToggleView(Globals.hwndEdit); } // first set standard lexer's default values - if (IsLexerStandard(pLexNew)) { - s_pLexCurrent = pLexNew; - Style_SetUse2ndDefault(s_pLexCurrent == &lexStandard2nd); // sync if forced - } - else { - s_pLexCurrent = GetCurrentStdLexer(); - } + const PEDITLEXER pCurrentStandard = (IsLexerStandard(pLexNew)) ? pLexNew : GetCurrentStdLexer(); + + Style_SetUse2ndDefault(pCurrentStandard == &lexStandard2nd); // sync if forced // Lexer SendMessage(hwnd, SCI_SETLEXER, pLexNew->lexerID, 0); // Lexer very specific styles - if (pLexNew->lexerID == SCLEX_XML) - SciCall_SetProperty("lexer.xml.allow.scripts", "1"); - if (pLexNew->lexerID == SCLEX_CPP) { - SciCall_SetProperty("styling.within.preprocessor", "1"); - SciCall_SetProperty("lexer.cpp.track.preprocessor", "0"); - SciCall_SetProperty("lexer.cpp.update.preprocessor", "0"); - } - else if (pLexNew->lexerID == SCLEX_PASCAL) - SciCall_SetProperty("lexer.pascal.smart.highlighting", "1"); - else if (pLexNew->lexerID == SCLEX_SQL) { - SciCall_SetProperty("sql.backslash.escapes", "1"); - SciCall_SetProperty("lexer.sql.backticks.identifier", "1"); - SciCall_SetProperty("lexer.sql.numbersign.comment", "1"); - } - else if (pLexNew->lexerID == SCLEX_NSIS) - SciCall_SetProperty("nsis.ignorecase", "1"); - else if (pLexNew->lexerID == SCLEX_CSS) { - SciCall_SetProperty("lexer.css.scss.language", "1"); - SciCall_SetProperty("lexer.css.less.language", "1"); - } - else if (pLexNew->lexerID == SCLEX_JSON) { - SciCall_SetProperty("json.allow.comments", "1"); - SciCall_SetProperty("json.escape.sequence", "1"); - } - else if (pLexNew->lexerID == SCLEX_PYTHON) { - SciCall_SetProperty("tab.timmy.whinge.level", "1"); - } - + Style_SetLexerSpecificProperties(pLexNew->lexerID); // Code folding Style_SetFoldingAvailability(pLexNew); @@ -925,10 +961,13 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) float const fBFS = GetBaseFontSize(Globals.hwndMain); _SetBaseFontSize(fBFS); _SetCurrentFontSize(fBFS); - const WCHAR* const wchStandardStyleStrg = s_pLexCurrent->Styles[STY_DEFAULT].szValue; + const WCHAR* const wchStandardStyleStrg = pCurrentStandard->Styles[STY_DEFAULT].szValue; Style_SetStyles(hwnd, STYLE_DEFAULT, wchStandardStyleStrg, true); // --- apply current scheme specific settings to default style --- + + const WCHAR* const wchNewLexerStyleStrg = pLexNew->Styles[STY_DEFAULT].szValue; + if (IsLexerStandard(pLexNew)) { // styles ar already set @@ -946,13 +985,13 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) // -------------------------------------------------------------------------- - const PEDITLEXER pCurrentStandard = s_pLexCurrent; - - // -------------------------------------------------------------------------- - Style_SetMargin(hwnd, pCurrentStandard->Styles[STY_MARGIN].iStyle, pCurrentStandard->Styles[STY_MARGIN].szValue); // margin (line number, bookmarks, folding) style + int iValue; + COLORREF dColor; + WCHAR wchSpecificStyle[128] = { L'\0' }; + if (Settings2.UseOldStyleBraceMatching) { Style_SetStyles(hwnd, pCurrentStandard->Styles[STY_BRACE_OK].iStyle, pCurrentStandard->Styles[STY_BRACE_OK].szValue, false); // brace light @@ -1060,6 +1099,7 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) SendMessage(hwnd, SCI_INDICSETFORE, _SC_INDIC_IME_CONVERTED, dColor); SendMessage(hwnd, SCI_INDICSETFORE, _SC_INDIC_IME_UNKNOWN, dColor); + COLORREF rgb; if (pLexNew != &lexANSI) { Style_SetStyles(hwnd, pCurrentStandard->Styles[STY_CTRL_CHR].iStyle, pCurrentStandard->Styles[STY_CTRL_CHR].szValue, false); // control char } @@ -1092,7 +1132,7 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) SendMessage(hwnd, SCI_SETADDITIONALSELALPHA, SC_ALPHA_NOALPHA, 0); } - if (StrStrI(pCurrentStandard->Styles[STY_SEL_TXT].szValue, L"eolfilled")) // selection eolfilled + if (_IsItemInStyleString(pCurrentStandard->Styles[STY_SEL_TXT].szValue, L"eolfilled")) // selection eolfilled SendMessage(hwnd, SCI_SETSELEOLFILLED, 1, 0); else SendMessage(hwnd, SCI_SETSELEOLFILLED, 0, 0); @@ -1363,8 +1403,8 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) switch (s_pLexCurrent->lexerID) { case SCLEX_PYTHON: - SendMessage(hwnd, SCI_INDICSETSTYLE, 1, INDIC_ROUNDBOX); - SendMessage(hwnd, SCI_INDICSETFORE, 1, (LPARAM)RGB(255, 0, 0)); // (light red) + SendMessage(hwnd, SCI_INDICSETSTYLE, 1, INDIC_COMPOSITIONTHIN); + SendMessage(hwnd, SCI_INDICSETFORE, 1, (LPARAM)RGB(0xAF, 0, 0)); // (light red) //SendMessage(hwnd, SCI_INDICSETALPHA, 1, 40); //SendMessage(hwnd, SCI_INDICSETOUTLINEALPHA, 1, 100); break; @@ -1386,8 +1426,8 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) // apply lexer styles Sci_ApplyLexerStyle(0, -1); - - UpdateVisibleUrlIndics(); + if (bFocusedView) { EditToggleView(Globals.hwndEdit); } + UpdateVisibleUrlIndics(); UpdateAllBars(false); } @@ -2220,8 +2260,8 @@ bool Style_StrGetFont(LPCWSTR lpszStyle, LPWSTR lpszFont, int cchFont) *p = L'\0'; } TrimStringW(lpszFont); - if (StringCchCompareNI(lpszFont, cchFont, L"Default", CSTRLEN(L"Default")) == 0) { - if (IsFontAvailable(L"Consolas")) { + if (_IsItemInStyleString(lpszFont, L"Default")) { + if (IsFontAvailable(L"Consolas")) { StringCchCopyN(lpszFont, cchFont, L"Consolas", cchFont); } else { @@ -2241,18 +2281,17 @@ bool Style_StrGetFont(LPCWSTR lpszStyle, LPWSTR lpszFont, int cchFont) bool Style_StrGetFontQuality(LPCWSTR lpszStyle,LPWSTR lpszQuality,int cchQuality) { WCHAR *p = StrStrI(lpszStyle, L"smoothing:"); - if (p) - { + if (p) { WCHAR tch[BUFSIZE_STYLE_VALUE] = { L'\0' }; StringCchCopy(tch,COUNTOF(tch),p + CSTRLEN(L"smoothing:")); p = StrChr(tch, L';'); if (p) *p = L'\0'; TrimStringW(tch); - if (StringCchCompareXI(tch,L"none") == 0 || - StringCchCompareXI(tch,L"standard") == 0 || - StringCchCompareXI(tch,L"cleartype") == 0 || - StringCchCompareXI(tch,L"default") == 0) + if (_IsItemInStyleString(tch, L"none") || + _IsItemInStyleString(tch, L"standard") || + _IsItemInStyleString(tch, L"cleartype") || + _IsItemInStyleString(tch, L"default")) { StringCchCopyN(lpszQuality,cchQuality,tch,COUNTOF(tch)); return true; @@ -2269,8 +2308,7 @@ bool Style_StrGetFontQuality(LPCWSTR lpszStyle,LPWSTR lpszQuality,int cchQuality bool Style_StrGetCharSet(LPCWSTR lpszStyle, int* i) { WCHAR *p = StrStrI(lpszStyle, L"charset:"); - if (p) - { + if (p) { p += CSTRLEN(L"charset:"); int iValue = 0; if (Char2IntW(p, &iValue)) { @@ -2305,8 +2343,7 @@ bool Style_StrGetSizeInt(LPCWSTR lpszStyle, int* i) bool Style_StrGetSize(LPCWSTR lpszStyle, float* f) { WCHAR *p = StrStrI(lpszStyle, L"size:"); - if (p) - { + if (p) { int fSign = 0; WCHAR tch[BUFSIZE_STYLE_VALUE] = { L'\0' }; StringCchCopy(tch,COUNTOF(tch),p + CSTRLEN(L"size:")); @@ -2384,23 +2421,23 @@ bool Style_StrGetWeightValue(LPCWSTR lpszWeight, int* i) { int iFontWeight = -1; - if (StrStrI(lpszWeight, L"thin")) + if (_IsItemInStyleString(lpszWeight, L"thin")) iFontWeight = FW_THIN; - else if (StrStrI(lpszWeight, L"extralight")) + else if (_IsItemInStyleString(lpszWeight, L"extralight")) iFontWeight = FW_EXTRALIGHT; - else if (StrStrI(lpszWeight, L"light")) + else if (_IsItemInStyleString(lpszWeight, L"light")) iFontWeight = FW_LIGHT; - else if (StrStrI(lpszWeight, L"normal")) + else if (_IsItemInStyleString(lpszWeight, L"normal")) iFontWeight = FW_NORMAL; - else if (StrStrI(lpszWeight, L"medium")) + else if (_IsItemInStyleString(lpszWeight, L"medium")) iFontWeight = FW_MEDIUM; - else if (StrStrI(lpszWeight, L"semibold")) + else if (_IsItemInStyleString(lpszWeight, L"semibold")) iFontWeight = FW_SEMIBOLD; - else if (StrStrI(lpszWeight, L"extrabold")) + else if (_IsItemInStyleString(lpszWeight, L"extrabold")) iFontWeight = FW_EXTRABOLD; - else if (StrStrI(lpszWeight, L"bold")) // here, cause bold is in semibold and extrabold too + else if (_IsItemInStyleString(lpszWeight, L"bold")) // here, cause bold is in semibold and extrabold too iFontWeight = FW_BOLD; - else if (StrStrI(lpszWeight, L"heavy")) + else if (_IsItemInStyleString(lpszWeight, L"heavy")) iFontWeight = FW_HEAVY; if (iFontWeight >= 0) { @@ -2454,8 +2491,7 @@ bool Style_StrGetColor(LPCWSTR lpszStyle, COLOR_LAYER layer, COLORREF* rgb) WCHAR *pItem = (layer == FOREGROUND_LAYER) ? L"fore:" : L"back:"; WCHAR *p = StrStrI(lpszStyle, pItem); - if (p) - { + if (p) { WCHAR tch[BUFSIZE_STYLE_VALUE] = { L'\0' }; StringCchCopy(tch, COUNTOF(tch), p + StringCchLenW(pItem,0)); if (tch[0] == L'#') @@ -2585,7 +2621,7 @@ bool Style_GetIndicatorType(LPWSTR lpszStyle, int cchSize, int* idx) { if (*idx < 0) { // retrieve indicator style from string for (int i = COUNTOF(IndicatorTypes) - 1; 0 <= i; --i) { - if (StrStrI(lpszStyle, IndicatorTypes[i])) { + if (_IsItemInStyleString(lpszStyle, IndicatorTypes[i])) { *idx = i; return true; } @@ -2641,28 +2677,28 @@ void Style_CopyStyles_IfNotDefined(LPCWSTR lpszStyleSrc, LPWSTR lpszStyleDest, i } } - if (StrStrI(lpszStyleSrc, L"thin") && !StrStrI(lpszStyleDest, L"thin")) + if (_IsItemInStyleString(lpszStyleSrc, L"thin") && !_IsItemInStyleString(lpszStyleDest, L"thin")) StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; thin"); - else if (StrStrI(lpszStyleSrc, L"extralight") && !StrStrI(lpszStyleDest, L"extralight")) + else if (_IsItemInStyleString(lpszStyleSrc, L"extralight") && !_IsItemInStyleString(lpszStyleDest, L"extralight")) StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; extralight"); - else if (StrStrI(lpszStyleSrc, L"light") && !StrStrI(lpszStyleDest, L"light")) + else if (_IsItemInStyleString(lpszStyleSrc, L"light") && !_IsItemInStyleString(lpszStyleDest, L"light")) StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; light"); - else if (StrStrI(lpszStyleSrc, L"normal") && !StrStrI(lpszStyleDest, L"normal")) + else if (_IsItemInStyleString(lpszStyleSrc, L"normal") && !_IsItemInStyleString(lpszStyleDest, L"normal")) StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; normal"); - else if (StrStrI(lpszStyleSrc, L"medium") && !StrStrI(lpszStyleDest, L"medium")) + else if (_IsItemInStyleString(lpszStyleSrc, L"medium") && !_IsItemInStyleString(lpszStyleDest, L"medium")) StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; medium"); - else if (StrStrI(lpszStyleSrc, L"semibold") && !StrStrI(lpszStyleDest, L"semibold")) + else if (_IsItemInStyleString(lpszStyleSrc, L"semibold") && !_IsItemInStyleString(lpszStyleDest, L"semibold")) StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; semibold"); - else if (StrStrI(lpszStyleSrc, L"extrabold") && !StrStrI(lpszStyleDest, L"extrabold")) + else if (_IsItemInStyleString(lpszStyleSrc, L"extrabold") && !_IsItemInStyleString(lpszStyleDest, L"extrabold")) StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; extrabold"); - else if (StrStrI(lpszStyleSrc, L"bold") && !StrStrI(lpszStyleDest, L"bold")) + else if (_IsItemInStyleString(lpszStyleSrc, L"bold") && !_IsItemInStyleString(lpszStyleDest, L"bold")) StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; bold"); - else if (StrStrI(lpszStyleSrc, L"heavy") && !StrStrI(lpszStyleDest, L"heavy")) + else if (_IsItemInStyleString(lpszStyleSrc, L"heavy") && !_IsItemInStyleString(lpszStyleDest, L"heavy")) StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; heavy"); //else // StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; normal"); - if (StrStrI(lpszStyleSrc, L"italic") && !StrStrI(lpszStyleDest, L"italic")) { + if (_IsItemInStyleString(lpszStyleSrc, L"italic") && !_IsItemInStyleString(lpszStyleDest, L"italic")) { StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; italic"); } } @@ -2670,11 +2706,11 @@ void Style_CopyStyles_IfNotDefined(LPCWSTR lpszStyleSrc, LPWSTR lpszStyleDest, i // --------- Effects --------- if (bWithEffects) { - if (StrStrI(lpszStyleSrc, L"strikeout") && !StrStrI(lpszStyleDest, L"strikeout")) { + if (_IsItemInStyleString(lpszStyleSrc, L"strikeout") && !_IsItemInStyleString(lpszStyleDest, L"strikeout")) { StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; strikeout"); } - if (StrStrI(lpszStyleSrc, L"underline") && !StrStrI(lpszStyleDest, L"underline")) { + if (_IsItemInStyleString(lpszStyleSrc, L"underline") && !_IsItemInStyleString(lpszStyleDest, L"underline")) { StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; underline"); } @@ -2711,7 +2747,7 @@ void Style_CopyStyles_IfNotDefined(LPCWSTR lpszStyleSrc, LPWSTR lpszStyleDest, i } } - if (StrStrI(lpszStyleSrc, L"eolfilled") && !StrStrI(lpszStyleDest, L"eolfilled")) { + if (_IsItemInStyleString(lpszStyleSrc, L"eolfilled") && !_IsItemInStyleString(lpszStyleDest, L"eolfilled")) { StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; eolfilled"); } @@ -2753,15 +2789,15 @@ void Style_CopyStyles_IfNotDefined(LPCWSTR lpszStyleSrc, LPWSTR lpszStyleDest, i } // -------- other style settings -------- - if (StrStrI(lpszStyleSrc, L"ovrblck") && !StrStrI(lpszStyleDest, L"ovrblck")) { + if (_IsItemInStyleString(lpszStyleSrc, L"ovrblck") && !_IsItemInStyleString(lpszStyleDest, L"ovrblck")) { StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; ovrblck"); } - if (StrStrI(lpszStyleSrc, L"block") && !StrStrI(lpszStyleDest, L"block")) { + if (_IsItemInStyleString(lpszStyleSrc, L"block") && !_IsItemInStyleString(lpszStyleDest, L"block")) { StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; block"); } - if (StrStrI(lpszStyleSrc, L"noblink") && !StrStrI(lpszStyleDest, L"noblink")) { + if (_IsItemInStyleString(lpszStyleSrc, L"noblink") && !_IsItemInStyleString(lpszStyleDest, L"noblink")) { StringCchCat(szTmpStyle, COUNTOF(szTmpStyle), L"; noblink"); } @@ -2843,9 +2879,9 @@ bool Style_SelectFont(HWND hwnd,LPWSTR lpszStyle,int cchStyle, LPCWSTR sLexerNam if (!Style_StrGetWeightValue(lpszStyle, &iFontWeight)) { iFontWeight = FW_NORMAL; } - bool bIsItalic = (StrStrI(lpszStyle, L"italic")) ? true : false; - bool bIsUnderline = (StrStrI(lpszStyle, L"underline")) ? true : false; - bool bIsStrikeout = (StrStrI(lpszStyle, L"strikeout")) ? true : false; + bool bIsItalic = (_IsItemInStyleString(lpszStyle, L"italic")) ? true : false; + bool bIsUnderline = (_IsItemInStyleString(lpszStyle, L"underline")) ? true : false; + bool bIsStrikeout = (_IsItemInStyleString(lpszStyle, L"strikeout")) ? true : false; int iQuality = g_FontQuality[Settings2.SciFontQuality]; switch (iQuality) { @@ -2963,7 +2999,7 @@ bool Style_SelectFont(HWND hwnd,LPWSTR lpszStyle,int cchStyle, LPCWSTR sLexerNam WCHAR check[64] = { L'\0' }; Style_AppendWeightStr(check, COUNTOF(check), lf.lfWeight); StrTrimW(check, L" ;"); - if (StrStrI(lpszStyle, check)) { + if (_IsItemInStyleString(lpszStyle, check)) { Style_AppendWeightStr(szNewStyle, COUNTOF(szNewStyle), lf.lfWeight); } } @@ -3034,7 +3070,7 @@ bool Style_SelectFont(HWND hwnd,LPWSTR lpszStyle,int cchStyle, LPCWSTR sLexerNam if (lf.lfItalic) { if (bIsItalic) { - if (StrStrI(lpszStyle, L"italic")) { + if (_IsItemInStyleString(lpszStyle, L"italic")) { StringCchCat(szNewStyle, COUNTOF(szNewStyle), L"; italic"); } } @@ -3048,7 +3084,7 @@ bool Style_SelectFont(HWND hwnd,LPWSTR lpszStyle,int cchStyle, LPCWSTR sLexerNam if (lf.lfUnderline) { if (bIsUnderline) { - if (StrStrI(lpszStyle, L"underline")) { + if (_IsItemInStyleString(lpszStyle, L"underline")) { StringCchCat(szNewStyle, COUNTOF(szNewStyle), L"; underline"); } } @@ -3059,7 +3095,7 @@ bool Style_SelectFont(HWND hwnd,LPWSTR lpszStyle,int cchStyle, LPCWSTR sLexerNam if (lf.lfStrikeOut) { if (bIsStrikeout) { - if (StrStrI(lpszStyle, L"strikeout")) { + if (_IsItemInStyleString(lpszStyle, L"strikeout")) { StringCchCat(szNewStyle, COUNTOF(szNewStyle), L"; strikeout"); } } @@ -3301,7 +3337,7 @@ void Style_SetStyles(HWND hwnd, int iStyle, LPCWSTR lpszStyle, bool bInitDefault } // Italic - if (StrStrI(lpszStyle, L"italic")) { + if (_IsItemInStyleString(lpszStyle, L"italic")) { SendMessage(hwnd, SCI_STYLESETITALIC, iStyle, (LPARAM)true); } else if (bInitDefault) { @@ -3309,7 +3345,7 @@ void Style_SetStyles(HWND hwnd, int iStyle, LPCWSTR lpszStyle, bool bInitDefault } // Underline - if (StrStrI(lpszStyle, L"underline")) { + if (_IsItemInStyleString(lpszStyle, L"underline")) { SendMessage(hwnd, SCI_STYLESETUNDERLINE, iStyle, (LPARAM)true); } else if (bInitDefault) { @@ -3317,7 +3353,7 @@ void Style_SetStyles(HWND hwnd, int iStyle, LPCWSTR lpszStyle, bool bInitDefault } // StrikeOut does not exist in scintilla ??? / Hide instead (no good idea) - //if (StrStrI(lpszStyle, L"strikeout")) { + //if (_IsItemInStyleString(lpszStyle, L"strikeout")) { // SendMessage(hwnd, SCI_STYLESETVISIBLE,iStyle,(LPARAM)false); //} //else if (bInitDefault) { @@ -3325,7 +3361,7 @@ void Style_SetStyles(HWND hwnd, int iStyle, LPCWSTR lpszStyle, bool bInitDefault //} // EOL Filled - if (StrStrI(lpszStyle, L"eolfilled")) { + if (_IsItemInStyleString(lpszStyle, L"eolfilled")) { SendMessage(hwnd, SCI_STYLESETEOLFILLED, iStyle, (LPARAM)true); } else if (bInitDefault) { @@ -4227,6 +4263,10 @@ HWND Style_CustomizeSchemesDlg(HWND hwnd) // // Style_SelectLexerDlgProc() // + +static PEDITLEXER _s_selectedLexer = NULL; +static int _s_idefaultLexer = -1; + INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam) { @@ -4308,16 +4348,16 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR lvi.iItem = i; ListView_GetItem(hwndLV,&lvi); - if (((PEDITLEXER)lvi.lParam)->resID == s_pLexCurrent->resID) + if (((PEDITLEXER)lvi.lParam)->resID == _s_selectedLexer->resID) { ListView_SetItemState(hwndLV,i,LVIS_FOCUSED|LVIS_SELECTED,LVIS_FOCUSED|LVIS_SELECTED); ListView_EnsureVisible(hwndLV,i,false); - CheckDlgButton(hwnd, IDC_DEFAULTSCHEME, SetBtn(s_iDefaultLexer == i)); + CheckDlgButton(hwnd, IDC_DEFAULTSCHEME, SetBtn(_s_idefaultLexer == i)); break; } } - iInternalDefault = s_iDefaultLexer; + iInternalDefault = _s_idefaultLexer; CheckDlgButton(hwnd,IDC_AUTOSELECT, SetBtn(s_bAutoSelect)); CenterDlgInParent(hwnd); @@ -4436,8 +4476,8 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR lvi.mask = LVIF_PARAM; lvi.iItem = ListView_GetNextItem(hwndLV, -1, LVNI_ALL | LVNI_SELECTED); if (ListView_GetItem(hwndLV, &lvi)) { - s_pLexCurrent = (PEDITLEXER)lvi.lParam; - s_iDefaultLexer = iInternalDefault; + _s_selectedLexer = (PEDITLEXER)lvi.lParam; + _s_idefaultLexer = iInternalDefault; s_bAutoSelect = IsButtonChecked(hwnd, IDC_AUTOSELECT); EndDialog(hwnd,IDOK); } @@ -4463,11 +4503,16 @@ INT_PTR CALLBACK Style_SelectLexerDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR // void Style_SelectLexerDlg(HWND hwnd) { - if (IDOK == ThemedDialogBoxParam(Globals.hLngResContainer, - MAKEINTRESOURCE(IDD_MUI_STYLESELECT), - GetParent(hwnd), Style_SelectLexerDlgProc, 0)) + _s_selectedLexer = s_pLexCurrent; + _s_idefaultLexer = s_iDefaultLexer; - Style_ResetCurrentLexer(Globals.hwndEdit); + if (IDOK == ThemedDialogBoxParam(Globals.hLngResContainer, + MAKEINTRESOURCE(IDD_MUI_STYLESELECT), + GetParent(hwnd), Style_SelectLexerDlgProc, 0)) { + + s_iDefaultLexer = _s_idefaultLexer; + Style_SetLexer(Globals.hwndEdit, _s_selectedLexer); + } } // End of Styles.c diff --git a/src/VersionEx.h b/src/VersionEx.h index b6256335a..9666349bf 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -8,7 +8,7 @@ #define VERSION_MAJOR 5 #define VERSION_MINOR 19 #define VERSION_REV 519 -#define VERSION_BUILD 1712 +#define VERSION_BUILD 1713 #define SCINTILLA_VER 415+ #define ONIGMO_REGEX_VER 6.2.0 #define VERSION_PATCH RC