diff --git a/Versions/build.txt b/Versions/build.txt index f5008320a..d7a2e8a5b 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -2255 +2256 diff --git a/language/common_res.h b/language/common_res.h index 44f20c82b..86f358796 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -606,13 +606,14 @@ #define IDM_VIEW_ACCELWORDNAV 40460 #define IDM_VIEW_NOPRESERVECARET 40461 #define IDM_VIEW_HYPERLINKHOTSPOTS 40462 -#define IDM_VIEW_CURRENTSCHEME 40463 -#define IDM_VIEW_SCROLLPASTEOF 40464 -#define IDM_VIEW_TOGGLE_VIEW 40465 -#define IDM_VIEW_CHASING_DOCTAIL 40466 -#define IDM_VIEW_TOGGLETB 40467 -#define IDM_VIEW_MUTE_MESSAGEBEEP 40468 -#define IDM_VIEW_SHOW_HYPLNK_CALLTIP 40469 +#define IDM_VIEW_COLORDEFHOTSPOTS 40463 +#define IDM_VIEW_CURRENTSCHEME 40464 +#define IDM_VIEW_SCROLLPASTEOF 40465 +#define IDM_VIEW_TOGGLE_VIEW 40466 +#define IDM_VIEW_CHASING_DOCTAIL 40467 +#define IDM_VIEW_TOGGLETB 40468 +#define IDM_VIEW_MUTE_MESSAGEBEEP 40469 +#define IDM_VIEW_SHOW_HYPLNK_CALLTIP 40470 #define IDM_SET_RENDER_TECH_DEFAULT 40500 #define IDM_SET_RENDER_TECH_D2D 40501 diff --git a/language/np3_af_za/menu_af_za.rc b/language/np3_af_za/menu_af_za.rc index c80bb4c57..380fe5957 100644 --- a/language/np3_af_za/menu_af_za.rc +++ b/language/np3_af_za/menu_af_za.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Wys Lyn &Einde\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "Skakel &Hotspots\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "&Visuele Hakie Passing\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "Merk Huidi&ge Lyn\tCtrl+Shift+I" BEGIN diff --git a/language/np3_be_by/menu_be_by.rc b/language/np3_be_by/menu_be_by.rc index 52151f273..45bc4542d 100644 --- a/language/np3_be_by/menu_be_by.rc +++ b/language/np3_be_by/menu_be_by.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM " & \tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM " &\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM " &\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP " & \tCtrl+Shift+I" BEGIN diff --git a/language/np3_de_de/menu_de_de.rc b/language/np3_de_de/menu_de_de.rc index 794e319c8..4a818d2cc 100644 --- a/language/np3_de_de/menu_de_de.rc +++ b/language/np3_de_de/menu_de_de.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Zeige Zeilenumbrche\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "H&yperlink Indikator\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Farb-Definition Indikator", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "&Zeige passende Klammer\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "A&ktuelle Zeile hervorheben\tCtrl+Shift+I" BEGIN diff --git a/language/np3_en_gb/menu_en_gb.rc b/language/np3_en_gb/menu_en_gb.rc index 24fe6eb96..737e98750 100644 --- a/language/np3_en_gb/menu_en_gb.rc +++ b/language/np3_en_gb/menu_en_gb.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Show Line &Endings\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "&Hyperlink Hotspots\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Colour Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "&Visual Brace Matching\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "H&ighlight Current Line\tCtrl+Shift+I" BEGIN diff --git a/language/np3_en_us/menu_en_us.rc b/language/np3_en_us/menu_en_us.rc index 317468e11..4d1257169 100644 --- a/language/np3_en_us/menu_en_us.rc +++ b/language/np3_en_us/menu_en_us.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Show Line &Endings\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "&Hyperlink Hotspots\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "&Visual Brace Matching\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "H&ighlight Current Line\tCtrl+Shift+I" BEGIN diff --git a/language/np3_es_es/menu_es_es.rc b/language/np3_es_es/menu_es_es.rc index be246fd5c..7c4a45d21 100644 --- a/language/np3_es_es/menu_es_es.rc +++ b/language/np3_es_es/menu_es_es.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Mostrar &fin de lnea\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "Indicar &hipervnculos\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "&Visual coincidencia de llave\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "&Resaltar la lnea actual\tCtrl+Shift+I" BEGIN diff --git a/language/np3_fr_fr/menu_fr_fr.rc b/language/np3_fr_fr/menu_fr_fr.rc index 47ee8079f..941e05e90 100644 --- a/language/np3_fr_fr/menu_fr_fr.rc +++ b/language/np3_fr_fr/menu_fr_fr.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Afficher les fins de lign&e\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "Indicateurs H&yperlink\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "Correspondence &visuelle des accolades\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "Mise en b&rillance de la ligne actuelle\tCtrl+Shift+I" BEGIN diff --git a/language/np3_hu_hu/menu_hu_hu.rc b/language/np3_hu_hu/menu_hu_hu.rc index ee8e00786..7be9ed87d 100644 --- a/language/np3_hu_hu/menu_hu_hu.rc +++ b/language/np3_hu_hu/menu_hu_hu.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Sorvgek &megjelentse\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "Hivatkoz&sok kiemelse\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "&Zrjelpr kiemels\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "Akt&ulis sor kiemelse\tCtrl+Shift+I" BEGIN diff --git a/language/np3_it_it/menu_it_it.rc b/language/np3_it_it/menu_it_it.rc index 378323665..97f887187 100644 --- a/language/np3_it_it/menu_it_it.rc +++ b/language/np3_it_it/menu_it_it.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Mostra simboli di a capo\tCtrl+Shift+0", IDM_VIEW_WORDWRAPSYMBOLS MENUITEM SEPARATOR MENUITEM "Evidenzia h&yperlink\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "Evidenzia &parentesi corrispondente\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "Evidenzia riga corrente\tCtrl+Shift+I" BEGIN diff --git a/language/np3_ja_jp/menu_ja_jp.rc b/language/np3_ja_jp/menu_ja_jp.rc index 89203d7cb..5c2cc53c5 100644 --- a/language/np3_ja_jp/menu_ja_jp.rc +++ b/language/np3_ja_jp/menu_ja_jp.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "sR[h(&E)\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "AhXN(&H)\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "Ήʂ\(&V)\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "݂̍s\(&G)\tCtrl+Shift+I" BEGIN diff --git a/language/np3_ko_kr/menu_ko_kr.rc b/language/np3_ko_kr/menu_ko_kr.rc index f533f6a97..e2ac8e839 100644 --- a/language/np3_ko_kr/menu_ko_kr.rc +++ b/language/np3_ko_kr/menu_ko_kr.rc @@ -264,6 +264,9 @@ BEGIN MENUITEM SEPARATOR MENUITEM " (&X)\tCtrl+Alt+F2", IDM_EDIT_SELTONEXT MENUITEM " (&V)\tCtrl+Alt+Shift+F2", IDM_EDIT_SELTOPREV + MENUITEM SEPARATOR + MENUITEM "Select &Word or Lines\tCtrl+Spc", IDM_EDIT_SELECTWORD + MENUITEM "Multi-Select &All Matches\tCtrl+Shift+Spc", IDM_EDIT_SELECTALLMATCHES END MENUITEM SEPARATOR POPUP "å(&K)" @@ -300,6 +303,7 @@ BEGIN MENUITEM " ǥ(&E)\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM " ũ ֽ(&Y)\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "ȣ ¦ (&V)\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP " (&G)\tCtrl+Shift+I" BEGIN diff --git a/language/np3_nl_nl/menu_nl_nl.rc b/language/np3_nl_nl/menu_nl_nl.rc index e999fc868..b7bdef71e 100644 --- a/language/np3_nl_nl/menu_nl_nl.rc +++ b/language/np3_nl_nl/menu_nl_nl.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Tonen de lijn &eindes\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "H&yperlink Indicatoren\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "&Visuele Brace Matching\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "Mar&keer actueel lijn\tCtrl+Shift+I" BEGIN diff --git a/language/np3_pl_pl/menu_pl_pl.rc b/language/np3_pl_pl/menu_pl_pl.rc index 43a869a89..f56d2dc4e 100644 --- a/language/np3_pl_pl/menu_pl_pl.rc +++ b/language/np3_pl_pl/menu_pl_pl.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Poka znaki koca wiersza\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "Miejsca aktywne hiperpczenia\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "&Wyrnianie pasujcych nawiasw\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "Wyrnianie biecego wiersza\tCtrl+Shift+I" BEGIN diff --git a/language/np3_pt_br/menu_pt_br.rc b/language/np3_pt_br/menu_pt_br.rc index e11864b29..bd5f1c301 100644 --- a/language/np3_pt_br/menu_pt_br.rc +++ b/language/np3_pt_br/menu_pt_br.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "Show Line &Endings\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "&Hyperlink Hotspots\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "&Visual Brace Matching\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "H&ighlight Current Line\tCtrl+Shift+I" BEGIN diff --git a/language/np3_ru_ru/menu_ru_ru.rc b/language/np3_ru_ru/menu_ru_ru.rc index f4865f759..3becc2f3c 100644 --- a/language/np3_ru_ru/menu_ru_ru.rc +++ b/language/np3_ru_ru/menu_ru_ru.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM " & \tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM " &\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "& \tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP " & \tCtrl+Shift+I" BEGIN diff --git a/language/np3_zh_cn/menu_zh_cn.rc b/language/np3_zh_cn/menu_zh_cn.rc index 0a7c8bcca..5cedcee3b 100644 --- a/language/np3_zh_cn/menu_zh_cn.rc +++ b/language/np3_zh_cn/menu_zh_cn.rc @@ -303,6 +303,7 @@ BEGIN MENUITEM "ʾз(&E)\tCtrl+Shift+9", IDM_VIEW_SHOWEOLS MENUITEM SEPARATOR MENUITEM "ⳬ(&Y)\tCtrl+Alt+W", IDM_VIEW_HYPERLINKHOTSPOTS + MENUITEM "&Color Definition Hotspots", IDM_VIEW_COLORDEFHOTSPOTS MENUITEM "ʾ(&V)\tCtrl+Shift+V", IDM_VIEW_MATCHBRACES POPUP "ǰ(&G)\tCtrl+Shift+I" BEGIN diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index 9cb482527..2b27c47fb 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 Oniguruma diff --git a/sciXlexers/LexTOML.cxx b/sciXlexers/LexTOML.cxx index 5ef5edeeb..9e79863a8 100644 --- a/sciXlexers/LexTOML.cxx +++ b/sciXlexers/LexTOML.cxx @@ -424,7 +424,10 @@ void SCI_METHOD LexerTOML::Lex(Sci_PositionU startPos, Sci_Position length, int if (inSectionDef) { sc.SetState(SCE_TOML_PARSINGERROR); } - else if (inMultiLnString || inMultiLnArrayDef) { + else if ((sc.state == SCE_TOML_STR_BASIC) || + (sc.state == SCE_TOML_STR_LITERAL) || + inMultiLnArrayDef) + { sc.ForwardSetState(sc.state); // ignore } else { diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index 75419342b..9a016602a 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -796,6 +796,7 @@ void LoadSettings() GET_BOOL_VALUE_FROM_INISECTION(AutoCloseTags, false); GET_INT_VALUE_FROM_INISECTION(HighlightCurrentLine, 1, 0, 2); GET_BOOL_VALUE_FROM_INISECTION(HyperlinkHotspot, true); + GET_BOOL_VALUE_FROM_INISECTION(ColorDefHotspot, true); GET_BOOL_VALUE_FROM_INISECTION(ScrollPastEOF, false); GET_BOOL_VALUE_FROM_INISECTION(ShowHypLnkToolTip, true); @@ -1230,6 +1231,7 @@ bool SaveSettings(bool bSaveSettingsNow) SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, AutoCloseTags); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, HighlightCurrentLine); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, HyperlinkHotspot); + SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ColorDefHotspot); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ScrollPastEOF); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, ShowHypLnkToolTip); SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, AutoIndent); diff --git a/src/Edit.c b/src/Edit.c index 99069895b..0f3e1bd45 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -6907,56 +6907,68 @@ void EditFinalizeStyling(HWND hwnd, DocPos iEndPos) //============================================================================= // -// EditUpdateUrlIndicators() -// Find and mark all URL hot-spots +// EditUpdateIndicators() +// Find and mark all COLOR refs (#RRGGBB) // -void EditUpdateUrlIndicators(HWND hwnd, DocPos startPos, DocPos endPos, bool bActiveHotspot) +static void _ClearIndicatorInRange(const int indicator, const int indicator2nd, + const DocPos startPos, const DocPos endPos) +{ + SciCall_SetIndicatorCurrent(indicator); + SciCall_IndicatorClearRange(startPos, endPos - startPos); + if (indicator2nd >= 0) { + SciCall_SetIndicatorCurrent(indicator2nd); + SciCall_IndicatorClearRange(startPos, endPos - startPos); + } +} + +static void _UpdateIndicators(HWND hwnd, const int indicator, const int indicator2nd, + const char* regExpr, DocPos startPos, DocPos endPos) { if (endPos < 0) { - endPos = Sci_GetDocEndPosition(); + endPos = Sci_GetDocEndPosition(); } else if (endPos < startPos) { swapos(&startPos, &endPos); } if (startPos < 0) { // current line only - DocPos const currPos = SciCall_GetCurrentPos(); - DocLn const lineNo = SciCall_LineFromPosition(currPos); + DocLn const lineNo = SciCall_LineFromPosition(SciCall_GetCurrentPos()); startPos = SciCall_PositionFromLine(lineNo); endPos = SciCall_GetLineEndPosition(lineNo); } - if (endPos == startPos) { return; } + else if (endPos == startPos) { return; } - SciCall_SetIndicatorCurrent(INDIC_NP3_HYPERLINK); - SciCall_IndicatorClearRange(startPos, endPos - startPos); - SciCall_SetIndicatorCurrent(INDIC_NP3_HYPERLINK_U); - SciCall_IndicatorClearRange(startPos, endPos - startPos); + // -------------------------------------------------------------------------- - if (!bActiveHotspot) { return; } - - const char* pszUrlRegEx = "\\b(?:(?:https?|ftp|file)://|www\\.|ftp\\.)" - "(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*" - "(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#/%=~_|$])"; - - int const iRegExLen = (int)StringCchLenA(pszUrlRegEx,0); + int const iRegExLen = (int)StringCchLenA(regExpr, 0); DocPos start = startPos; DocPos end = endPos; do { - DocPos const iPos = _FindInTarget(hwnd, pszUrlRegEx, iRegExLen, SCFIND_NP3_REGEX, &start, &end, false, FRMOD_IGNORE); + DocPos const _start = start; + DocPos const _end = end; + DocPos const iPos = _FindInTarget(hwnd, regExpr, iRegExLen, SCFIND_NP3_REGEX, &start, &end, false, FRMOD_IGNORE); if (iPos < 0) { - break; // not found + // not found + _ClearIndicatorInRange(indicator, indicator2nd, _start, _end); + break; } DocPos const mlen = end - start; if ((mlen <= 0) || (end > endPos)) { + // wrong match + _ClearIndicatorInRange(indicator, indicator2nd, _start, _end); break; // wrong match } - SciCall_SetIndicatorCurrent(INDIC_NP3_HYPERLINK); - SciCall_IndicatorFillRange(start, mlen); - SciCall_SetIndicatorCurrent(INDIC_NP3_HYPERLINK_U); + _ClearIndicatorInRange(indicator, indicator2nd, _start, end); + + SciCall_SetIndicatorCurrent(indicator); SciCall_IndicatorFillRange(start, mlen); + if (indicator2nd >= 0) { + SciCall_SetIndicatorCurrent(indicator2nd); + SciCall_IndicatorFillRange(start, mlen); + } // next occurrence start = end + 1; @@ -6966,6 +6978,35 @@ void EditUpdateUrlIndicators(HWND hwnd, DocPos startPos, DocPos endPos, bool bAc } +//============================================================================= +// +// EditUpdateIndicators() +// - Find and mark all URL hot-spots +// - Find and mark all COLOR refs (#RRGGBB) +// +void EditUpdateIndicators(HWND hwnd, DocPos startPos, DocPos endPos, bool bClearOnly) +{ + if (bClearOnly) { + _ClearIndicatorInRange(INDIC_NP3_HYPERLINK, INDIC_NP3_HYPERLINK_U, startPos, endPos); + _ClearIndicatorInRange(INDIC_NP3_COLOR_DEF, INDIC_NP3_COLOR_DWELL, startPos, endPos); + return; + } + + if (Settings.HyperlinkHotspot) + { + static const char* pUrlRegEx = "\\b(?:(?:https?|ftp|file)://|www\\.|ftp\\.)" + "(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[-A-Z0-9+&@#/%=~_|$?!:,.])*" + "(?:\\([-A-Z0-9+&@#/%=~_|$?!:,.]*\\)|[A-Z0-9+&@#/%=~_|$])"; + _UpdateIndicators(hwnd, INDIC_NP3_HYPERLINK, INDIC_NP3_HYPERLINK_U, pUrlRegEx, startPos, endPos); + } + + if (Settings.ColorDefHotspot) + { + static const char* pColorRegEx = "#([0-9a-fA-F]){6}"; + _UpdateIndicators(hwnd, INDIC_NP3_COLOR_DEF, -1, pColorRegEx, startPos, endPos); + } +} + //============================================================================= // diff --git a/src/Edit.h b/src/Edit.h index 2c9760863..0f198d778 100644 --- a/src/Edit.h +++ b/src/Edit.h @@ -107,7 +107,7 @@ void EditSelectWordAtPos(const DocPos iPos, const bool bForceWord); int EditAddSearchFlags(int flags, bool bRegEx, bool bWordStart, bool bMatchCase, bool bMatchWords, bool bDotMatchAll); void EditMarkAll(HWND hwnd, char* pszFind, int flags, DocPos rangeStart, DocPos rangeEnd); void EditFinalizeStyling(HWND hwnd, DocPos iEndPos); -void EditUpdateUrlIndicators(HWND hwnd, DocPos startPos, DocPos endPos, bool); +void EditUpdateIndicators(HWND hwnd, DocPos startPos, DocPos endPos, bool bClearOnly); void EditSetAccelWordNav(HWND hwnd,bool); bool EditAutoCompleteWord(HWND hwnd,bool); void EditShowZeroLengthCallTip(HWND hwnd, DocPos iPosition); diff --git a/src/Notepad3.c b/src/Notepad3.c index a1629f6f5..b35735f23 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -65,6 +65,8 @@ FILEWATCHING_T FileWatching; WININFO s_WinInfo = INIT_WININFO; WININFO s_DefWinInfo = INIT_WININFO; +COLORREF g_colorCustom[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + prefix_t s_mxSBPrefix[STATUS_SECTOR_COUNT]; prefix_t s_mxSBPostfix[STATUS_SECTOR_COUNT]; @@ -417,7 +419,7 @@ void ObserveNotifyChangeEvent() InterlockedDecrement(&iNotifyChangeStackCounter); } if (CheckNotifyChangeEvent()) { - UpdateVisibleUrlIndics(); + UpdateVisibleHotspotIndicators(); UpdateAllBars(false); } } @@ -1488,7 +1490,7 @@ LRESULT CALLBACK MainWndProc(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) // update Scintilla colors case WM_SYSCOLORCHANGE: - EditUpdateUrlIndicators(Globals.hwndEdit, 0, -1, Settings.HyperlinkHotspot); + EditUpdateIndicators(Globals.hwndEdit, 0, -1, false); MarkAllOccurrences(0, true); UpdateAllBars(false); return DefWindowProc(hwnd,umsg,wParam,lParam); @@ -1675,7 +1677,6 @@ static void _SetWrapVisualFlags(HWND hwndEditCtrl) } - //============================================================================= // // InitializeSciEditCtrl() @@ -1781,6 +1782,20 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) SendMessage(hwndEditCtrl, SCI_INDICSETHOVERSTYLE, INDIC_NP3_HYPERLINK_U, INDIC_COMPOSITIONTHICK); SendMessage(hwndEditCtrl, SCI_INDICSETHOVERFORE, INDIC_NP3_HYPERLINK_U, RGB(0x00, 0x00, 0xFF)); + SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_COLOR_DEF, INDIC_HIDDEN); // MARKER only + SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_COLOR_DEF, 0x00); + SendMessage(hwndEditCtrl, SCI_INDICSETHOVERSTYLE, INDIC_NP3_COLOR_DEF, INDIC_BOX); // HOVER + SendMessage(hwndEditCtrl, SCI_INDICSETHOVERFORE, INDIC_NP3_COLOR_DEF, RGB(0x80, 0x80, 0x80)); + + SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_COLOR_DWELL, INDIC_FULLBOX); // style on DWELLSTART + SendMessage(hwndEditCtrl, SCI_INDICSETFORE, INDIC_NP3_COLOR_DWELL, RGB(0xE0, 0xE0, 0xE0)); + SendMessage(hwndEditCtrl, SCI_INDICSETUNDER, INDIC_NP3_COLOR_DWELL, true); + SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_COLOR_DWELL, 0xFF); + SendMessage(hwndEditCtrl, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_COLOR_DWELL, 0xFF); + //SendMessage(hwndEditCtrl, SCI_INDICSETHOVERSTYLE, INDIC_NP3_COLOR_DWELL, INDIC_FULLBOX); + //SendMessage(hwndEditCtrl, SCI_INDICSETHOVERFORE, INDIC_NP3_COLOR_DWELL, RGB(0xFF, 0xFF, 0xFF)); + + SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_MULTI_EDIT, INDIC_ROUNDBOX); SendMessage(hwndEditCtrl, SCI_INDICSETFORE, INDIC_NP3_MULTI_EDIT, RGB(0xFF, 0xA5, 0x00)); SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_MULTI_EDIT, 60); @@ -1796,10 +1811,10 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) SendMessage(hwndEditCtrl, SCI_SETCARETSTICKY, (WPARAM)SC_CARETSTICKY_OFF, 0); //SendMessage(hwndEditCtrl,SCI_SETCARETSTICKY,SC_CARETSTICKY_WHITESPACE,0); - if (Settings.ShowHypLnkToolTip) { - SendMessage(hwndEditCtrl, SCI_SETMOUSEDWELLTIME, (WPARAM)250, 0); + if (Settings.ShowHypLnkToolTip || Settings.ColorDefHotspot) { + SendMessage(hwndEditCtrl, SCI_SETMOUSEDWELLTIME, (WPARAM)100, 0); } - else { // Hyperlink ToolTip is the only purpose for now, so globally disable it + else { SendMessage(hwndEditCtrl, SCI_SETMOUSEDWELLTIME, (WPARAM)SC_TIME_FOREVER, 0); // default } @@ -2492,7 +2507,7 @@ LRESULT MsgDPIChanged(HWND hwnd, WPARAM wParam, LPARAM lParam) SendWMSize(hwnd, rc); UpdateUI(); - EditUpdateUrlIndicators(Globals.hwndEdit, 0, -1, Settings.HyperlinkHotspot); + EditUpdateIndicators(Globals.hwndEdit, 0, -1, false); MarkAllOccurrences(0, true); UpdateAllBars(false); @@ -2554,7 +2569,7 @@ LRESULT MsgThemeChanged(HWND hwnd, WPARAM wParam ,LPARAM lParam) SendWMSize(hwnd, NULL); - EditUpdateUrlIndicators(Globals.hwndEdit, 0, -1, Settings.HyperlinkHotspot); + EditUpdateIndicators(Globals.hwndEdit, 0, -1, false); MarkAllOccurrences(0, true); if (FocusedView.HideNonMatchedLines) { EditToggleView(Globals.hwndEdit); } UpdateUI(); @@ -3270,6 +3285,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) CheckMenuRadioItem(hmenu, IDM_VIEW_HILITCURLN_NONE, IDM_VIEW_HILITCURLN_FRAME, i, MF_BYCOMMAND); CheckCmd(hmenu, IDM_VIEW_HYPERLINKHOTSPOTS, Settings.HyperlinkHotspot); + CheckCmd(hmenu, IDM_VIEW_COLORDEFHOTSPOTS, Settings.ColorDefHotspot); CheckCmd(hmenu, IDM_VIEW_SCROLLPASTEOF, Settings.ScrollPastEOF); CheckCmd(hmenu, IDM_VIEW_SHOW_HYPLNK_CALLTIP, Settings.ShowHypLnkToolTip); @@ -3427,7 +3443,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) switch(iLoWParam) { case SCEN_CHANGE: - UpdateVisibleUrlIndics(); + UpdateVisibleHotspotIndicators(); MarkAllOccurrences(Settings2.UpdateDelayMarkAllOccurrences, false); break; @@ -3853,7 +3869,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) s_bLastCopyFromMe = true; } if (!SciCall_IsSelectionEmpty() || - !HandleHotSpotURL(SciCall_GetCurrentPos(), COPY_HYPERLINK)) + !HandleHotSpotURLClicked(SciCall_GetCurrentPos(), COPY_HYPERLINK)) { SciCall_CopyAllowLine(); } @@ -5274,7 +5290,14 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case IDM_VIEW_HYPERLINKHOTSPOTS: Settings.HyperlinkHotspot = !Settings.HyperlinkHotspot; - EditUpdateUrlIndicators(Globals.hwndEdit, 0, -1, Settings.HyperlinkHotspot); + EditUpdateIndicators(Globals.hwndEdit, 0, -1, true); + EditUpdateIndicators(Globals.hwndEdit, 0, -1, false); + break; + + case IDM_VIEW_COLORDEFHOTSPOTS: + Settings.ColorDefHotspot = !Settings.ColorDefHotspot; + EditUpdateIndicators(Globals.hwndEdit, 0, -1, true); + EditUpdateIndicators(Globals.hwndEdit, 0, -1, false); break; case IDM_VIEW_ZOOMIN: @@ -5339,9 +5362,8 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case IDM_VIEW_SHOW_HYPLNK_CALLTIP: Settings.ShowHypLnkToolTip = !Settings.ShowHypLnkToolTip; - // HyperlinkTooltip is the only purpose, so - if (Settings.ShowHypLnkToolTip) - SciCall_SetMouseDWellTime(250); + if (Settings.ShowHypLnkToolTip || Settings.ColorDefHotspot) + SciCall_SetMouseDWellTime(100); else Sci_DisableMouseDWellNotification(); break; @@ -6168,7 +6190,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) break; case CMD_OPEN_HYPERLINK: - HandleHotSpotURL(SciCall_GetCurrentPos(), (OPEN_WITH_BROWSER | OPEN_WITH_NOTEPAD3)); + HandleHotSpotURLClicked(SciCall_GetCurrentPos(), (OPEN_WITH_BROWSER | OPEN_WITH_NOTEPAD3)); break; case CMD_ALTDOWN: @@ -6427,7 +6449,6 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) // // MsgSysCommand() - Handles WM_SYSCOMMAND // -// LRESULT MsgSysCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) { switch (wParam) { @@ -6455,55 +6476,156 @@ LRESULT MsgSysCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) } +//============================================================================= +// +// HandlePosChange() +// +void HandlePosChange() +{ + static DocPos prevPosition = -1; + DocPos const curPos = SciCall_GetCurrentPos(); + if (curPos == prevPosition) { return; } + + if (SciCall_IndicatorValueAt(INDIC_NP3_COLOR_DEF, curPos) > 0) + { + DocPos const firstPos = SciCall_IndicatorStart(INDIC_NP3_COLOR_DEF, curPos); + DocPos const lastPos = SciCall_IndicatorEnd(INDIC_NP3_COLOR_DEF, curPos); + DocPos const length = (lastPos - firstPos); + + char chText[MIDSZ_BUFFER] = { '\0' }; + StringCchCopyNA(chText, COUNTOF(chText), SciCall_GetRangePointer(firstPos, length), length); + unsigned int iValue = 0; + if (sscanf_s(&chText[1], "%x", &iValue) == 1) + { + COLORREF const rgb = RGB((iValue & 0xFF0000) >> 16, (iValue & 0xFF00) >> 8, iValue & 0xFF); + SciCall_IndicSetHoverFore(INDIC_NP3_COLOR_DEF, rgb); + } + } + prevPosition = curPos; +} + + //============================================================================= // // HandleDWellStartEnd() // -// +typedef enum _indic_id_t { _I_NONE = 0, _I_HYPERLINK = 1, _I_COLOR_PATTERN = 2 } _INDIC_ID_T; + void HandleDWellStartEnd(const DocPos position, const UINT uid) { + static DocPos prevPosition = -1; + static DocPos prevStartPosition = -1; + static DocPos prevEndPosition = -1; + switch (uid) { case SCN_DWELLSTART: { - //SciCall_SetCursor(SC_NP3_CURSORHAND); - if (!Settings.ShowHypLnkToolTip || SciCall_CallTipActive() || - (SciCall_IndicatorValueAt(INDIC_NP3_HYPERLINK, position) <= 0)) { return; } + _INDIC_ID_T indicator_type = _I_NONE; - char chURL[MIDSZ_BUFFER] = { '\0' }; - DocPos const firstPos = SciCall_IndicatorStart(INDIC_NP3_HYPERLINK, position); - DocPos const lastPos = SciCall_IndicatorEnd(INDIC_NP3_HYPERLINK, position); + if (Settings.HyperlinkHotspot) { + if (SciCall_IndicatorValueAt(INDIC_NP3_HYPERLINK, position) > 0) { + indicator_type = _I_HYPERLINK; + if (position != prevPosition) { + CancelCallTip(); + } + } + } + if (Settings.ColorDefHotspot) { + if (SciCall_IndicatorValueAt(INDIC_NP3_COLOR_DEF, position) > 0) { + indicator_type = _I_COLOR_PATTERN; + } + } + + switch (indicator_type) + { + case _I_NONE: + default: + return; // nothing to do + break; + + case _I_HYPERLINK: + if (!Settings.ShowHypLnkToolTip || SciCall_CallTipActive()) { return; } + break; + + case _I_COLOR_PATTERN: + // ok + break; + } + + // ---------------------------------------------------------------------- + + //SciCall_SetCursor(SC_NP3_CURSORHAND); + + int const indicator_id = (_I_HYPERLINK == indicator_type) ? INDIC_NP3_HYPERLINK : INDIC_NP3_COLOR_DEF; + + DocPos const firstPos = SciCall_IndicatorStart(indicator_id, position); + DocPos const lastPos = SciCall_IndicatorEnd(indicator_id, position); DocPos const length = (lastPos - firstPos); - StringCchCopyNA(chURL, COUNTOF(chURL), SciCall_GetRangePointer(firstPos, length), length); - StrTrimA(chURL, " \t\n\r"); + // WebLinks and Color Refs are ASCII only - No need for UTF-8 conversion here - if (StrIsEmptyA(chURL)) { return; } + if (_I_HYPERLINK == indicator_type) + { + char chText[MIDSZ_BUFFER] = { '\0' }; + // No need for UTF-8 conversion here and + StringCchCopyNA(chText, COUNTOF(chText), SciCall_GetRangePointer(firstPos, length), length); + StrTrimA(chText, " \t\n\r"); + if (StrIsEmptyA(chText)) { return; } - WCHAR wchCalltipAdd[SMALL_BUFFER] = { L'\0' }; - if (StrStrIA(chURL, "file:") == chURL) { - GetLngString(IDS_MUI_URL_OPEN_FILE, wchCalltipAdd, COUNTOF(wchCalltipAdd)); - } else { - GetLngString(IDS_MUI_URL_OPEN_BROWSER, wchCalltipAdd, COUNTOF(wchCalltipAdd)); + WCHAR wchCalltipAdd[SMALL_BUFFER] = { L'\0' }; + if (StrStrIA(chText, "file:") == chText) { + GetLngString(IDS_MUI_URL_OPEN_FILE, wchCalltipAdd, COUNTOF(wchCalltipAdd)); + } + else { + GetLngString(IDS_MUI_URL_OPEN_BROWSER, wchCalltipAdd, COUNTOF(wchCalltipAdd)); + } + CHAR chAdd[MIDSZ_BUFFER] = { L'\0' }; + WideCharToMultiByte(Encoding_SciCP, 0, wchCalltipAdd, -1, chAdd, COUNTOF(chAdd), NULL, NULL); + + char chCallTip[LARGE_BUFFER] = { '\0' }; + //StringCchCatA(chCallTip, COUNTOF(chCallTip), "=> "); + StringCchCatA(chCallTip, COUNTOF(chCallTip), chText); + StringCchCatA(chCallTip, COUNTOF(chCallTip), chAdd); + //SciCall_CallTipSetPosition(true); + SciCall_CallTipShow(position, chCallTip); + SciCall_CallTipSetHlt(0, (int)length); + Globals.CallTipType = CT_DWELL; } - CHAR chAdd[MIDSZ_BUFFER] = { L'\0' }; - WideCharToMultiByte(Encoding_SciCP, 0, wchCalltipAdd, -1, chAdd, COUNTOF(chAdd), NULL, NULL); + else if (_I_COLOR_PATTERN == indicator_type) + { + char chText[MICRO_BUFFER] = { '\0' }; + // Color Refs are ASCII only - No need for UTF-8 conversion here + StringCchCopyNA(chText, COUNTOF(chText), SciCall_GetRangePointer(firstPos, length), length); + unsigned int iValue = 0; + if (sscanf_s(&chText[1], "%x", &iValue) == 1) + { + SciCall_SetIndicatorCurrent(INDIC_NP3_COLOR_DWELL); + SciCall_IndicatorClearRange(0, Sci_GetDocEndPosition()); - char chCallTip[LARGE_BUFFER] = { '\0' }; - //StringCchCatA(chCallTip, COUNTOF(chCallTip), "=> "); - StringCchCatA(chCallTip, COUNTOF(chCallTip), chURL); - StringCchCatA(chCallTip, COUNTOF(chCallTip), chAdd); - //SciCall_CallTipSetPosition(true); - SciCall_CallTipShow(position, chCallTip); - SciCall_CallTipSetHlt(0, (int)length); - Globals.CallTipType = CT_DWELL; + COLORREF const rgb = RGB((iValue & 0xFF0000) >> 16, (iValue & 0xFF00) >> 8, iValue & 0xFF); + + SciCall_IndicSetHoverFore(INDIC_NP3_COLOR_DEF, rgb); + SciCall_IndicSetFore(INDIC_NP3_COLOR_DWELL, rgb); + SciCall_IndicatorFillRange(firstPos, length); + } + } + prevPosition = position; + prevStartPosition = firstPos; + prevEndPosition = lastPos; } break; case SCN_DWELLEND: { - //SciCall_SetCursor(SC_CURSORNORMAL); + if ((position >= prevStartPosition) && ((position <= prevEndPosition))) { return; } // avoid flickering CancelCallTip(); + + DocPos const curPos = SciCall_GetCurrentPos(); + if ((curPos >= prevStartPosition) && ((curPos <= prevEndPosition))) { return; } // no change for if caret in range + SciCall_SetIndicatorCurrent(INDIC_NP3_COLOR_DWELL); + SciCall_IndicatorClearRange(0, Sci_GetDocEndPosition()); + HandlePosChange(); } break; @@ -6514,10 +6636,10 @@ void HandleDWellStartEnd(const DocPos position, const UINT uid) //============================================================================= // -// HandleHotSpotURL() +// HandleHotSpotURLClicked() // // -bool HandleHotSpotURL(const DocPos position, const HYPERLINK_OPS operation) +bool HandleHotSpotURLClicked(const DocPos position, const HYPERLINK_OPS operation) { CancelCallTip(); //PostMessage(Globals.hwndEdit, WM_LBUTTONUP, MK_LBUTTON, 0); @@ -6596,6 +6718,52 @@ bool HandleHotSpotURL(const DocPos position, const HYPERLINK_OPS operation) } +//============================================================================= +// +// HandleColorDefClicked() +// +void HandleColorDefClicked(HWND hwnd, const DocPos position) +{ + if (SciCall_IndicatorValueAt(INDIC_NP3_COLOR_DEF, position) == 0) { return; } + + DocPos const firstPos = SciCall_IndicatorStart(INDIC_NP3_COLOR_DEF, position); + DocPos const lastPos = SciCall_IndicatorEnd(INDIC_NP3_COLOR_DEF, position); + DocPos const length = (lastPos - firstPos); + + char chText[32] = { '\0' }; + // Color Refs are ASCII only - No need for UTF-8 conversion here + StringCchCopyNA(chText, COUNTOF(chText), SciCall_GetRangePointer(firstPos, length), length); + unsigned int iValue = 0; + if (sscanf_s(&chText[1], "%x", &iValue) == 1) + { + COLORREF const rgbCur = RGB((iValue & 0xFF0000) >> 16, (iValue & 0xFF00) >> 8, iValue & 0xFF); + + CHOOSECOLOR cc; + ZeroMemory(&cc, sizeof(CHOOSECOLOR)); + cc.lStructSize = sizeof(CHOOSECOLOR); + cc.hwndOwner = hwnd; + cc.rgbResult = rgbCur; + cc.lpCustColors = g_colorCustom; + cc.Flags = CC_FULLOPEN | CC_RGBINIT | CC_SOLIDCOLOR; + + if (!ChooseColor(&cc)) { return; } + + COLORREF const rgbNew = cc.rgbResult; + + CHAR wchColor[32] = { L'\0' }; + StringCchPrintfA(wchColor, COUNTOF(wchColor), "#%02X%02X%02X", + (int)GetRValue(rgbNew), (int)GetGValue(rgbNew), (int)GetBValue(rgbNew)); + + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); + + SciCall_SetTargetRange(firstPos, lastPos); + SciCall_ReplaceTarget(length, wchColor); + + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore + } +} + //============================================================================= // @@ -6858,9 +7026,8 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific if (IsMarkOccurrencesEnabled()) { MarkAllOccurrences(Settings2.UpdateDelayMarkAllOccurrences, true); } - if (Settings.HyperlinkHotspot) { - UpdateVisibleUrlIndics(); - } + UpdateVisibleHotspotIndicators(); + if (scn->linesAdded != 0) { UpdateMarginWidth(); } @@ -6917,8 +7084,9 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific // ignoring SC_UPDATE_CONTENT cause Style and Marker are out of scope here // using WM_COMMAND -> SCEN_CHANGE instead! //~~~MarkAllOccurrences(Settings2.UpdateDelayMarkAllCoccurrences, false); - //~~~UpdateVisibleUrlIndics(); + //~~~UpdateVisibleHotspotIndicators(); //} + HandlePosChange(); UpdateToolbar(); UpdateStatusbar(false); } @@ -6928,10 +7096,7 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific MarkAllOccurrences(Settings2.UpdateDelayMarkAllOccurrences, false); } } - - if (Settings.HyperlinkHotspot) { - UpdateVisibleUrlIndics(); - } + UpdateVisibleHotspotIndicators(); } break; @@ -6953,13 +7118,20 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific case SCN_INDICATORRELEASE: { - if (_s_indic_click_modifiers & SCMOD_CTRL) { - // open in browser - HandleHotSpotURL(scn->position, OPEN_WITH_BROWSER); + if (SciCall_IndicatorValueAt(INDIC_NP3_HYPERLINK, scn->position) > 0) + { + if (_s_indic_click_modifiers & SCMOD_CTRL) { + HandleHotSpotURLClicked(scn->position, OPEN_WITH_BROWSER); + } + else if (_s_indic_click_modifiers & SCMOD_ALT) { + HandleHotSpotURLClicked(scn->position, OPEN_WITH_NOTEPAD3); // if applicable (file://) + } } - else if (_s_indic_click_modifiers & SCMOD_ALT) { - // open in application, if applicable (file://) - HandleHotSpotURL(scn->position, OPEN_WITH_NOTEPAD3); + else if (SciCall_IndicatorValueAt(INDIC_NP3_COLOR_DEF, scn->position) > 0) + { + if (_s_indic_click_modifiers & SCMOD_ALT) { + HandleColorDefClicked(Globals.hwndEdit, scn->position); + } } _s_indic_click_modifiers = 0; } @@ -7019,7 +7191,7 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific DocLn const iFirstLine = SciCall_LineFromPosition(scn->position); DocLn const iLastLine = SciCall_LineFromPosition(scn->position + scn->length - 1); for (DocLn i = iFirstLine; i <= iLastLine; ++i) { SciCall_EnsureVisible(i); } - UpdateVisibleUrlIndics(); + UpdateVisibleHotspotIndicators(); } break; @@ -7808,13 +7980,13 @@ void MarkAllOccurrences(int delay, bool bForceClear) //============================================================================= // -// UpdateVisibleUrlIndics() +// UpdateVisibleHotspotIndicators() // -void UpdateVisibleUrlIndics() +void UpdateVisibleHotspotIndicators() { DocLn const iStartLine = SciCall_DocLineFromVisible(SciCall_GetFirstVisibleLine()); DocLn const iEndLine = min_ln((iStartLine + SciCall_LinesOnScreen()), (SciCall_GetLineCount() - 1)); - EditUpdateUrlIndicators(Globals.hwndEdit, SciCall_PositionFromLine(iStartLine), SciCall_GetLineEndPosition(iEndLine), Settings.HyperlinkHotspot); + EditUpdateIndicators(Globals.hwndEdit, SciCall_PositionFromLine(iStartLine), SciCall_GetLineEndPosition(iEndLine), false); } diff --git a/src/Notepad3.h b/src/Notepad3.h index 6a6bcf482..a59583d90 100644 --- a/src/Notepad3.h +++ b/src/Notepad3.h @@ -143,7 +143,7 @@ void UpdateToolbar(); void UpdateStatusbar(bool); void UpdateMarginWidth(); void UpdateSettingsCmds(); -void UpdateVisibleUrlIndics(); +void UpdateVisibleHotspotIndicators(); inline void UpdateAllBars(bool force) { UpdateToolbar(); UpdateStatusbar(force); UpdateMarginWidth(); } void UndoRedoRecordingStart(); @@ -155,8 +155,10 @@ bool RestoreAction(int token, DoAction doAct); #define _BEGIN_UNDO_ACTION_ { int const _token_ = BeginUndoAction(); __try { #define _END_UNDO_ACTION_ } __finally { EndUndoAction(_token_); } } +void HandlePosChange(); void HandleDWellStartEnd(const DocPos position, const UINT uid); -bool HandleHotSpotURL(const DocPos position, const HYPERLINK_OPS operation); +bool HandleHotSpotURLClicked(const DocPos position, const HYPERLINK_OPS operation); +void HandleColorDefClicked(HWND hwnd, const DocPos position); bool IsFindPatternEmpty(); void SetFindPattern(LPCWSTR wchFindPattern); diff --git a/src/Notepad3.rc b/src/Notepad3.rc index 8355e1658..2eda823de 100644 --- a/src/Notepad3.rc +++ b/src/Notepad3.rc @@ -98,34 +98,37 @@ BEGIN "9", CMD_TOGGLETITLE, VIRTKEY, CONTROL, NOINVERT "9", IDM_VIEW_SHOWEOLS, VIRTKEY, SHIFT, CONTROL, NOINVERT "A", IDM_EDIT_SELECTALL, VIRTKEY, CONTROL, NOINVERT - "A", IDM_VIEW_MARKOCCUR_ONOFF, VIRTKEY, ALT, NOINVERT + "A", IDM_VIEW_MARKOCCUR_ONOFF, VIRTKEY, ALT, NOINVERT /// NO Menu "A", CMD_RECODEANSI, VIRTKEY, SHIFT, CONTROL, NOINVERT "A", IDM_VIEW_ACCELWORDNAV, VIRTKEY, CONTROL, ALT, NOINVERT "B", IDM_EDIT_FINDMATCHINGBRACE, VIRTKEY, CONTROL, NOINVERT - "B", IDM_EDIT_PADWITHSPACES, VIRTKEY, ALT, NOINVERT + "B", IDM_EDIT_PADWITHSPACES, VIRTKEY, ALT, NOINVERT /// NO Menu "B", IDM_EDIT_SELTOMATCHINGBRACE, VIRTKEY, SHIFT, CONTROL, NOINVERT "B", IDM_EDIT_REMOVEBLANKLINES, VIRTKEY, CONTROL, ALT, NOINVERT "C", IDM_EDIT_COPY, VIRTKEY, CONTROL, NOINVERT - "C", IDM_EDIT_COPYALL, VIRTKEY, ALT, NOINVERT + "C", IDM_EDIT_COPYALL, VIRTKEY, ALT, NOINVERT /// NO Menu "C", IDM_EDIT_HEX2CHAR, VIRTKEY, CONTROL, ALT, NOINVERT "C", IDM_EDIT_COPY, VIRTKEY, SHIFT, CONTROL, NOINVERT "D", IDM_EDIT_DUPLINEORSELECTION, VIRTKEY, CONTROL, NOINVERT - "D", IDM_EDIT_LINETRANSPOSE, VIRTKEY, ALT, NOINVERT + "D", IDM_EDIT_LINETRANSPOSE, VIRTKEY, ALT, NOINVERT /// NO Menu "D", IDM_EDIT_DELETELINE, VIRTKEY, SHIFT, CONTROL, NOINVERT "D", IDM_EDIT_REMOVEDUPLICATELINES, VIRTKEY, CONTROL, ALT, NOINVERT "E", IDM_EDIT_COPYADD, VIRTKEY, CONTROL, NOINVERT "E", IDM_EDIT_ESCAPECCHARS, VIRTKEY, CONTROL, ALT, NOINVERT "E", IDM_EDIT_URLENCODE, VIRTKEY, SHIFT, CONTROL, NOINVERT + //~"E", MMMMMMMMMMMMMMMMMM, VIRTKEY, ALT, NOINVERT /// Menu(Edit) "F", IDM_EDIT_FIND, VIRTKEY, CONTROL, NOINVERT "F", CMD_RECODEDEFAULT, VIRTKEY, CONTROL, ALT, NOINVERT "F", IDM_VIEW_FOLDING, VIRTKEY, SHIFT, CONTROL, ALT, NOINVERT "F", IDM_VIEW_TOGGLEFOLDS, VIRTKEY, SHIFT, CONTROL, NOINVERT + //~"F", MMMMMMMMMMMMMMMMMM, VIRTKEY, ALT, NOINVERT /// Menu(File) "G", IDM_EDIT_GOTOLINE, VIRTKEY, CONTROL, NOINVERT "G", IDM_VIEW_SHOWINDENTGUIDES, VIRTKEY, SHIFT, CONTROL, NOINVERT - "G", IDM_VIEW_TRANSPARENT, VIRTKEY, ALT, NOINVERT + "G", IDM_VIEW_TRANSPARENT, VIRTKEY, ALT, NOINVERT /// NO Menu "H", IDM_EDIT_REPLACE, VIRTKEY, CONTROL, NOINVERT "H", IDM_FILE_RECENT, VIRTKEY, CONTROL, ALT, NOINVERT "H", IDM_VIEW_AUTOCLOSETAGS, VIRTKEY, SHIFT, CONTROL, NOINVERT + //~"H", MMMMMMMMMMMMMMMMMM, VIRTKEY, ALT, NOINVERT /// Menu(Help) "I", IDM_EDIT_SPLITLINES, VIRTKEY, CONTROL, NOINVERT "I", IDM_FILE_OPENFAV, VIRTKEY, ALT, NOINVERT "I", IDM_EDIT_TITLECASE, VIRTKEY, CONTROL, ALT, NOINVERT @@ -133,62 +136,66 @@ BEGIN "J", IDM_EDIT_JOINLINES, VIRTKEY, CONTROL, NOINVERT "J", IDM_EDIT_JOINLN_NOSP, VIRTKEY, CONTROL, ALT, NOINVERT "J", IDM_EDIT_JOINLINES_PARA, VIRTKEY, SHIFT, CONTROL, NOINVERT - "J", IDM_EDIT_ALIGN, VIRTKEY, ALT, NOINVERT + "J", IDM_EDIT_ALIGN, VIRTKEY, ALT, NOINVERT /// NO Menu "K", IDM_EDIT_SWAP, VIRTKEY, CONTROL, NOINVERT "K", IDM_FILE_ADDTOFAV, VIRTKEY, ALT, NOINVERT "K", CMD_COPYWINPOS, VIRTKEY, SHIFT, CONTROL, NOINVERT + //"K", IDM_VIEW_COLORDEFHOTSPOTS, VIRTKEY, CONTROL, ALT, NOINVERT "L", IDM_FILE_LAUNCH, VIRTKEY, CONTROL, NOINVERT "L", IDM_FILE_OPENWITH, VIRTKEY, ALT, NOINVERT "L", IDM_VIEW_LONGLINEMARKER, VIRTKEY, SHIFT, CONTROL, NOINVERT "M", IDM_FILE_BROWSE, VIRTKEY, CONTROL, NOINVERT - "M", IDM_EDIT_MODIFYLINES, VIRTKEY, ALT, NOINVERT + "M", IDM_EDIT_MODIFYLINES, VIRTKEY, ALT, NOINVERT /// NO Menu "M", IDM_VIEW_MARGIN, VIRTKEY, SHIFT, CONTROL, NOINVERT "N", IDM_FILE_NEW, VIRTKEY, CONTROL, NOINVERT - "N", IDM_FILE_NEWWINDOW, VIRTKEY, ALT, NOINVERT + "N", IDM_FILE_NEWWINDOW, VIRTKEY, ALT, NOINVERT /// NO Menu "N", IDM_FILE_NEWWINDOW2, VIRTKEY, SHIFT, ALT, NOINVERT "N", IDM_VIEW_LINENUMBERS, VIRTKEY, SHIFT, CONTROL, NOINVERT "O", IDM_FILE_OPEN, VIRTKEY, CONTROL, NOINVERT - "O", IDM_EDIT_SORTLINES, VIRTKEY, ALT, NOINVERT + "O", IDM_EDIT_SORTLINES, VIRTKEY, ALT, NOINVERT /// NO Menu "O", IDM_EDIT_SENTENCECASE, VIRTKEY, CONTROL, ALT, NOINVERT "O", CMD_RECODEOEM, VIRTKEY, SHIFT, CONTROL, NOINVERT "P", IDM_FILE_PRINT, VIRTKEY, CONTROL, NOINVERT "P", IDM_EDIT_COMPRESS_BLANKS, VIRTKEY, ALT, NOINVERT "P", CMD_DEFAULTWINPOS, VIRTKEY, SHIFT, CONTROL, NOINVERT + //~"P", MMMMMMMMMMMMMMMMMM, VIRTKEY, ALT, NOINVERT /// Menu(Appearance) "Q", IDM_EDIT_LINECOMMENT, VIRTKEY, CONTROL, NOINVERT - "Q", IDM_EDIT_ENCLOSESELECTION, VIRTKEY, ALT, NOINVERT + "Q", IDM_EDIT_ENCLOSESELECTION, VIRTKEY, ALT, NOINVERT /// NO Menu "Q", IDM_EDIT_STREAMCOMMENT, VIRTKEY, SHIFT, CONTROL, NOINVERT "R", IDM_FILE_RUN, VIRTKEY, CONTROL, NOINVERT - "R", IDM_EDIT_REMOVEEMPTYLINES, VIRTKEY, ALT, NOINVERT + "R", IDM_EDIT_REMOVEEMPTYLINES, VIRTKEY, ALT, NOINVERT /// NO Menu "R", IDM_EDIT_UNESCAPECCHARS, VIRTKEY, CONTROL, ALT, NOINVERT "R", IDM_EDIT_URLDECODE, VIRTKEY, SHIFT, CONTROL, NOINVERT "S", IDM_FILE_SAVE, VIRTKEY, CONTROL, NOINVERT "S", IDM_EDIT_CONVERTTABS2, VIRTKEY, CONTROL, ALT, NOINVERT "S", IDM_EDIT_CONVERTTABS, VIRTKEY, SHIFT, CONTROL, NOINVERT + //~"S", MMMMMMMMMMMMMMMMMM, VIRTKEY, ALT, NOINVERT /// Menu(Settings) "T", IDM_VIEW_TABSETTINGS, VIRTKEY, CONTROL, NOINVERT - "T", IDM_VIEW_ALWAYSONTOP, VIRTKEY, ALT, NOINVERT + "T", IDM_VIEW_ALWAYSONTOP, VIRTKEY, ALT, NOINVERT /// NO Menu "T", IDM_EDIT_CONVERTSPACES2, VIRTKEY, CONTROL, ALT, NOINVERT "T", IDM_EDIT_CONVERTSPACES, VIRTKEY, SHIFT, CONTROL, NOINVERT "U", IDM_EDIT_CONVERTLOWERCASE, VIRTKEY, CONTROL, NOINVERT - "U", IDM_EDIT_STRIPLASTCHAR, VIRTKEY, ALT, NOINVERT + "U", IDM_EDIT_STRIPLASTCHAR, VIRTKEY, ALT, NOINVERT /// NO Menu "U", IDM_EDIT_INVERTCASE, VIRTKEY, CONTROL, ALT, NOINVERT "U", IDM_EDIT_CONVERTUPPERCASE, VIRTKEY, SHIFT, CONTROL, NOINVERT "V", IDM_EDIT_PASTE, VIRTKEY, CONTROL, NOINVERT "V", IDM_VIEW_MATCHBRACES, VIRTKEY, SHIFT, CONTROL, NOINVERT "V", IDM_VIEW_TOGGLE_VIEW, VIRTKEY, CONTROL, ALT, NOINVERT + //~"V", MMMMMMMMMMMMMMMMMM, VIRTKEY, ALT, NOINVERT /// Menu(View) "W", IDM_VIEW_WORDWRAP, VIRTKEY, CONTROL, NOINVERT - "W", IDM_EDIT_TRIMLINES, VIRTKEY, ALT, NOINVERT + "W", IDM_EDIT_TRIMLINES, VIRTKEY, ALT, NOINVERT /// NO Menu "W", IDM_EDIT_COLUMNWRAP, VIRTKEY, SHIFT, CONTROL, NOINVERT "W", IDM_VIEW_HYPERLINKHOTSPOTS, VIRTKEY, CONTROL, ALT, NOINVERT "X", IDM_EDIT_CUT, VIRTKEY, CONTROL, NOINVERT - "X", IDM_EDIT_INSERT_TAG, VIRTKEY, ALT, NOINVERT + "X", IDM_EDIT_INSERT_TAG, VIRTKEY, ALT, NOINVERT /// NO Menu "X", IDM_EDIT_CHAR2HEX, VIRTKEY, CONTROL, ALT, NOINVERT "X", IDM_EDIT_CUTLINE, VIRTKEY, SHIFT, CONTROL, NOINVERT "Y", IDM_EDIT_REDO, VIRTKEY, CONTROL, NOINVERT - "Y", IDM_EDIT_MERGEEMPTYLINES, VIRTKEY, ALT, NOINVERT + "Y", IDM_EDIT_MERGEEMPTYLINES, VIRTKEY, ALT, NOINVERT /// NO Menu "Y", IDM_EDIT_UNDO, VIRTKEY, SHIFT, CONTROL, NOINVERT "Y", IDM_EDIT_MERGEBLANKLINES, VIRTKEY, CONTROL, ALT, NOINVERT "Z", IDM_EDIT_UNDO, VIRTKEY, CONTROL, NOINVERT - "Z", IDM_EDIT_STRIP1STCHAR, VIRTKEY, ALT, NOINVERT + "Z", IDM_EDIT_STRIP1STCHAR, VIRTKEY, ALT, NOINVERT /// NO Menu "Z", IDM_EDIT_REDO, VIRTKEY, SHIFT, CONTROL, NOINVERT //VK_LEFT, CMD_LEFT, VIRTKEY, NOINVERT VK_LEFT, CMD_CTRLLEFT, VIRTKEY, CONTROL, NOINVERT diff --git a/src/SciCall.h b/src/SciCall.h index a2e558fa6..420421b6e 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -441,6 +441,7 @@ DeclareSciCallR0(GetMaxLineState, GETMAXLINESTATE, DocLn) // DeclareSciCallV2(IndicSetStyle, INDICSETSTYLE, int, indicatorID, int, style) DeclareSciCallV2(IndicSetFore, INDICSETFORE, int, indicatorID, COLORREF, colour) +DeclareSciCallV2(IndicSetUnder, INDICSETUNDER, int, indicatorID, bool, under) DeclareSciCallV2(IndicSetHoverStyle, INDICSETHOVERSTYLE, int, indicatorID, int, style) DeclareSciCallV2(IndicSetHoverFore, INDICSETHOVERFORE, int, indicatorID, COLORREF, colour) DeclareSciCallV2(IndicSetAlpha, INDICSETALPHA, int, indicatorID, int, alpha) diff --git a/src/Styles.c b/src/Styles.c index e807e9d47..09d0565f4 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -39,6 +39,7 @@ #include "Styles.h" extern const int g_FontQuality[4]; +extern COLORREF g_colorCustom[16]; bool ChooseFontDirectWrite(HWND hwnd, const WCHAR* localeName, DPI_T dpi, LPCHOOSEFONT lpCF); @@ -126,8 +127,6 @@ const COLORREF s_colorDefault[16] = RGB(0xB2, 0x8B, 0x40) }; -static COLORREF s_colorCustom[16] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - static bool s_bAutoSelect = true; #define STYLESELECTDLG_X 304 @@ -483,7 +482,7 @@ void Style_Load() _SetCurrentFontSize(fBFS); for (int i = 0; i < 16; ++i) { - s_colorCustom[i] = s_colorDefault[i]; + g_colorCustom[i] = s_colorDefault[i]; } // 2nd Default Style has same filename extension list as (1st) Default Style @@ -559,7 +558,7 @@ bool Style_ImportFromFile(const WCHAR* szFile) if (bResetToDefault) { for (int i = 0; i < 16; i++) { - s_colorCustom[i] = s_colorDefault[i]; + g_colorCustom[i] = s_colorDefault[i]; } } else { @@ -575,12 +574,12 @@ bool Style_ImportFromFile(const WCHAR* szFile) unsigned int irgb; itok = swscanf_s(CharNext(wch), L"%x", &irgb); if (itok == 1) { - s_colorCustom[i] = RGB((irgb & 0xFF0000) >> 16, (irgb & 0xFF00) >> 8, irgb & 0xFF); + g_colorCustom[i] = RGB((irgb & 0xFF0000) >> 16, (irgb & 0xFF00) >> 8, irgb & 0xFF); } } } if (itok != 1) { - s_colorCustom[i] = s_colorDefault[i]; + g_colorCustom[i] = s_colorDefault[i]; } } } @@ -703,12 +702,12 @@ bool Style_ExportToFile(const WCHAR* szFile, bool bForceAll) const WCHAR* const CustomColors_Section = L"Custom Colors"; for (int i = 0; i < 16; i++) { - if (bForceAll || (s_colorCustom[i] != s_colorDefault[i])) { + if (bForceAll || (g_colorCustom[i] != s_colorDefault[i])) { WCHAR tch[32] = { L'\0' }; WCHAR wch[32] = { L'\0' }; StringCchPrintf(tch, COUNTOF(tch), L"%02i", i + 1); StringCchPrintf(wch, COUNTOF(wch), L"#%02X%02X%02X", - (int)GetRValue(s_colorCustom[i]), (int)GetGValue(s_colorCustom[i]), (int)GetBValue(s_colorCustom[i])); + (int)GetRValue(g_colorCustom[i]), (int)GetGValue(g_colorCustom[i]), (int)GetBValue(g_colorCustom[i])); IniSectionSetString(CustomColors_Section, tch, wch); } } @@ -1442,7 +1441,7 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) // apply lexer styles Sci_ApplyLexerStyle(0, -1); - EditUpdateUrlIndicators(Globals.hwndEdit, 0, -1, Settings.HyperlinkHotspot); + EditUpdateIndicators(Globals.hwndEdit, 0, -1, false); if (bFocusedView) { EditToggleView(Globals.hwndEdit); } @@ -3230,29 +3229,24 @@ bool Style_SelectFont(HWND hwnd,LPWSTR lpszStyle,int cchStyle, LPCWSTR sLexerNam // bool Style_SelectColor(HWND hwnd,bool bForeGround,LPWSTR lpszStyle,int cchStyle, bool bPreserveStyles) { - CHOOSECOLOR cc; WCHAR szNewStyle[BUFSIZE_STYLE_VALUE] = { L'\0' }; COLORREF dRGBResult; COLORREF dColor; WCHAR tch[BUFSIZE_STYLE_VALUE] = { L'\0' }; - ZeroMemory(&cc,sizeof(CHOOSECOLOR)); - dRGBResult = (bForeGround) ? GetSysColor(COLOR_WINDOWTEXT) : GetSysColor(COLOR_WINDOW); Style_StrGetColor(lpszStyle, (bForeGround ? FOREGROUND_LAYER : BACKGROUND_LAYER), &dRGBResult); + CHOOSECOLOR cc; + ZeroMemory(&cc, sizeof(CHOOSECOLOR)); cc.lStructSize = sizeof(CHOOSECOLOR); cc.hwndOwner = hwnd; cc.rgbResult = dRGBResult; - cc.lpCustColors = s_colorCustom; + cc.lpCustColors = g_colorCustom; cc.Flags = CC_FULLOPEN | CC_RGBINIT | CC_SOLIDCOLOR; - - if (!ChooseColor(&cc)) - return false; - + if (!ChooseColor(&cc)) { return false; } dRGBResult = cc.rgbResult; - // Rebuild style string StringCchCopy(szNewStyle, COUNTOF(szNewStyle), L""); // clear diff --git a/src/TypeDefs.h b/src/TypeDefs.h index 7d17181f3..1bc0bab87 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -251,14 +251,15 @@ typedef struct _cmq #define MARKER_NP3_BOOKMARK 1 -#define INDIC_NP3_MARK_OCCURANCE (INDIC_CONTAINER + 1) -#define INDIC_NP3_MATCH_BRACE (INDIC_CONTAINER + 2) -#define INDIC_NP3_BAD_BRACE (INDIC_CONTAINER + 3) -#define INDIC_NP3_FOCUS_VIEW (INDIC_CONTAINER + 4) -#define INDIC_NP3_HYPERLINK (INDIC_CONTAINER + 5) -#define INDIC_NP3_HYPERLINK_U (INDIC_CONTAINER + 6) -#define INDIC_NP3_MULTI_EDIT (INDIC_CONTAINER + 7) - +#define INDIC_NP3_MARK_OCCURANCE (INDIC_CONTAINER + 1) +#define INDIC_NP3_MATCH_BRACE (INDIC_CONTAINER + 2) +#define INDIC_NP3_BAD_BRACE (INDIC_CONTAINER + 3) +#define INDIC_NP3_FOCUS_VIEW (INDIC_CONTAINER + 4) +#define INDIC_NP3_HYPERLINK (INDIC_CONTAINER + 5) +#define INDIC_NP3_HYPERLINK_U (INDIC_CONTAINER + 6) +#define INDIC_NP3_COLOR_DEF (INDIC_CONTAINER + 7) // (HIDDEN) +#define INDIC_NP3_COLOR_DWELL (INDIC_CONTAINER + 8) +#define INDIC_NP3_MULTI_EDIT (INDIC_CONTAINER + 9) // -------------------------------------------------------------------------- @@ -350,6 +351,7 @@ typedef struct _settings_t bool AutoCloseTags; int HighlightCurrentLine; bool HyperlinkHotspot; + bool ColorDefHotspot; bool ScrollPastEOF; bool ShowHypLnkToolTip; bool AutoIndent; diff --git a/src/VersionEx.h b/src/VersionEx.h index 600b2d2fb..191ea6da3 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -7,8 +7,8 @@ #define SAPPNAME "Notepad3" #define VERSION_MAJOR 5 #define VERSION_MINOR 19 -#define VERSION_REV 614 -#define VERSION_BUILD 2255 +#define VERSION_REV 615 +#define VERSION_BUILD 2256 #define SCINTILLA_VER 416 #define ONIGURUMA_REGEX_VER 6.9.2 #define VERSION_PATCH Oniguruma diff --git a/test/txtfiles/TOML.toml b/test/txtfiles/TOML.toml index e41bcd885..5803e35bf 100644 --- a/test/txtfiles/TOML.toml +++ b/test/txtfiles/TOML.toml @@ -1,4 +1,6 @@ # This is a TOML document. - encoding:UTF-8 +# https://github.com/toml-lang/toml +# title = "TOML Example" @@ -12,6 +14,15 @@ ports = [ 8001, 8001, 8002 ] connection_max = 5000 enabled = true +[colors] +color1 = "#D=8020" +color2 = "#FFC000" +color3 = "#00XX00" +color4 = "#608020" +color4 = "#608020" +color4 = "#608020" +color4 = "#608020" + [servers] # Indentation (tabs and/or spaces) is allowed but not required