diff --git a/Versions/build.txt b/Versions/build.txt index 544799662..fcf58bd51 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -2395 +2396 diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index 3b310ed97..0f929a66b 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 BETA diff --git a/src/Dialogs.c b/src/Dialogs.c index b4b87bc2d..3a6586f20 100644 --- a/src/Dialogs.c +++ b/src/Dialogs.c @@ -2270,11 +2270,11 @@ static INT_PTR CALLBACK LongLineSettingsDlgProc(HWND hwnd, UINT umsg, WPARAM wPa SetDlgItemInt(hwnd, 100, iNumber, false); SendDlgItemMessage(hwnd, 100, EM_LIMITTEXT, 15, 0); - if (Settings.LongLineMode == EDGE_LINE) { - CheckRadioButton(hwnd, 101, 102, 101); + if (Settings.LongLineMode == EDGE_BACKGROUND) { + CheckRadioButton(hwnd, 101, 102, 102); } else { - CheckRadioButton(hwnd, 101, 102, 102); + CheckRadioButton(hwnd, 101, 102, 101); } CenterDlgInParent(hwnd); diff --git a/src/Helpers.c b/src/Helpers.c index cd97e2c57..842fe523c 100644 --- a/src/Helpers.c +++ b/src/Helpers.c @@ -1527,6 +1527,7 @@ int MRU_Enum(LPMRULIST pmru, int iIndex, LPWSTR pszItem, int cchItem) return((int)StringCchLen(pszItem, cchItem)); } + bool MRU_Load(LPMRULIST pmru) { MRU_Empty(pmru); @@ -1538,15 +1539,9 @@ bool MRU_Load(LPMRULIST pmru) for (int i = 0; i < pmru->iSize; i++) { WCHAR tchName[32] = { L'\0' }; StringCchPrintf(tchName, COUNTOF(tchName), L"%.2i", i + 1); - WCHAR tchItem[1024] = { L'\0' }; + WCHAR tchItem[2048] = { L'\0' }; if (IniSectionGetString(RegKey_Section, tchName, L"", tchItem, COUNTOF(tchItem))) { - /*if (pmru->iFlags & MRU_UTF8) { - WCHAR wchItem[1024]; - int cbw = MultiByteToWideChar(CP_UTF7, 0, tchItem, -1, wchItem, COUNTOF(wchItem)); - WideCharToMultiByte(Encoding_SciCP,0,wchItem,cbw,tchItem,COUNTOF(tchItem),NULL,NULL); - pmru->pszItems[n] = StrDup(tchItem); - } - else*/ + StrTrim(tchItem, L"\x02\x03"); pmru->pszItems[n] = StrDup(tchItem); StringCchPrintf(tchName, COUNTOF(tchName), L"ENC%.2i", i + 1); @@ -1576,19 +1571,14 @@ bool MRU_Save(LPMRULIST pmru) const WCHAR* const RegKey_Section = pmru->szRegKey; IniSectionClear(pmru->szRegKey, false); + WCHAR tchValue[2048] = { L'\0' }; + for (int i = 0; i < pmru->iSize; i++) { if (pmru->pszItems[i]) { WCHAR tchName[32] = { L'\0' }; StringCchPrintf(tchName, COUNTOF(tchName), L"%.2i", i + 1); - /*if (pmru->iFlags & MRU_UTF8) { - WCHAR tchItem[1024]; - WCHAR wchItem[1024]; - int cbw = MultiByteToWideChar(Encoding_SciCP,0,pmru->pszItems[i],-1,wchItem,COUNTOF(wchItem)); - WideCharToMultiByte(CP_UTF7,0,wchItem,cbw,tchItem,COUNTOF(tchItem),NULL,NULL); - IniSectionSetString(RegKey_Section,tchName,tchItem); - } - else*/ - IniSectionSetString(RegKey_Section, tchName, pmru->pszItems[i]); + StringCchPrintf(tchValue, COUNTOF(tchValue), L"\x02%s\x03", pmru->pszItems[i]); + IniSectionSetString(RegKey_Section, tchName, tchValue); if (pmru->iEncoding[i] > 0) { StringCchPrintf(tchName, COUNTOF(tchName), L"ENC%.2i", i + 1); diff --git a/src/Notepad3.c b/src/Notepad3.c index 0cd2eb0aa..8e2352d1b 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -1702,7 +1702,7 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) // ///~ Don't use: SC_PERFORMED_USER | SC_MOD_CHANGESTYLE; /// SC_MOD_CHANGESTYLE and SC_MOD_CHANGEINDICATOR needs SCI_SETCOMMANDEVENTS=true - + int const evtMask1 = SC_MOD_CONTAINER | SC_PERFORMED_UNDO | SC_PERFORMED_REDO | SC_MULTILINEUNDOREDO; int const evtMask2 = SC_MOD_INSERTTEXT | SC_MOD_DELETETEXT | SC_MOD_BEFOREINSERT | SC_MOD_BEFOREDELETE; @@ -1719,7 +1719,7 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) SendMessage(hwndEditCtrl, SCI_SETSCROLLWIDTH, 1, 0); SendMessage(hwndEditCtrl, SCI_SETSCROLLWIDTHTRACKING, true, 0); SendMessage(hwndEditCtrl, SCI_SETENDATLASTLINE, true, 0); - + SendMessage(hwndEditCtrl, SCI_SETMULTIPLESELECTION, true, 0); SendMessage(hwndEditCtrl, SCI_SETADDITIONALSELECTIONTYPING, true, 0); SendMessage(hwndEditCtrl, SCI_SETMULTIPASTE, SC_MULTIPASTE_EACH, 0); @@ -1747,7 +1747,7 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) SendMessage(hwndEditCtrl, SCI_ASSIGNCMDKEY, (SCK_END + (SCMOD_SHIFT << 16)), SCI_LINEENDWRAPEXTEND); // set indicator styles (foreground and alpha maybe overridden by style settings) - + SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_MATCH_BRACE, INDIC_FULLBOX); SendMessage(hwndEditCtrl, SCI_INDICSETFORE, INDIC_NP3_MATCH_BRACE, RGB(0x00, 0xFF, 0x00)); SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_MATCH_BRACE, 120); @@ -1769,7 +1769,7 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) //SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_FOCUS_VIEW, INDIC_POINT); SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_FOCUS_VIEW, INDIC_HIDDEN); // invisible - + SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_HYPERLINK, INDIC_TEXTFORE); SendMessage(hwndEditCtrl, SCI_INDICSETFORE, INDIC_NP3_HYPERLINK, RGB(0x00, 0x00, 0xA0)); SendMessage(hwndEditCtrl, SCI_INDICSETSTYLE, INDIC_NP3_HYPERLINK_U, INDIC_COMPOSITIONTHIN); @@ -1798,7 +1798,7 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) SendMessage(hwndEditCtrl, SCI_INDICSETFORE, INDIC_NP3_MULTI_EDIT, RGB(0xFF, 0xA5, 0x00)); SendMessage(hwndEditCtrl, SCI_INDICSETALPHA, INDIC_NP3_MULTI_EDIT, 60); SendMessage(hwndEditCtrl, SCI_INDICSETOUTLINEALPHA, INDIC_NP3_MULTI_EDIT, 180); - + // paste into rectangular selection SendMessage(hwndEditCtrl, SCI_SETMULTIPASTE, SC_MULTIPASTE_EACH, 0); @@ -1808,17 +1808,17 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) // Properties SendMessage(hwndEditCtrl, SCI_SETCARETSTICKY, (WPARAM)SC_CARETSTICKY_OFF, 0); //SendMessage(hwndEditCtrl,SCI_SETCARETSTICKY,SC_CARETSTICKY_WHITESPACE,0); - + if (Settings.ShowHypLnkToolTip || Settings.ColorDefHotspot) { SendMessage(hwndEditCtrl, SCI_SETMOUSEDWELLTIME, (WPARAM)100, 0); } else { SendMessage(hwndEditCtrl, SCI_SETMOUSEDWELLTIME, (WPARAM)SC_TIME_FOREVER, 0); // default } - - #define _CARET_SYMETRY CARET_EVEN /// CARET_EVEN or 0 - #define _CARET_ENFORCE CARET_STRICT /// CARET_STRICT or 0 + +#define _CARET_SYMETRY CARET_EVEN /// CARET_EVEN or 0 +#define _CARET_ENFORCE CARET_STRICT /// CARET_STRICT or 0 if (Settings2.CurrentLineHorizontalSlop > 0) SendMessage(hwndEditCtrl, SCI_SETXCARETPOLICY, (WPARAM)(CARET_SLOP | _CARET_SYMETRY | _CARET_ENFORCE), Settings2.CurrentLineHorizontalSlop); else @@ -1826,7 +1826,8 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) if (Settings2.CurrentLineVerticalSlop > 0) { SendMessage(hwndEditCtrl, SCI_SETYCARETPOLICY, (WPARAM)(CARET_SLOP | _CARET_SYMETRY | _CARET_ENFORCE), Settings2.CurrentLineVerticalSlop); - } else { + } + else { SendMessage(hwndEditCtrl, SCI_SETYCARETPOLICY, (WPARAM)(_CARET_SYMETRY), 0); } SendMessage(hwndEditCtrl, SCI_SETVIRTUALSPACEOPTIONS, (WPARAM)(Settings2.DenyVirtualSpaceAccess ? SCVS_NONE : NP3_VIRTUAL_SPACE_ACCESS_OPTIONS), 0); @@ -1847,11 +1848,12 @@ static void _InitializeSciEditCtrl(HWND hwndEditCtrl) _SetWrapVisualFlags(hwndEditCtrl); // Long Lines - if (Settings.MarkLongLines) - SendMessage(hwndEditCtrl, SCI_SETEDGEMODE, (WPARAM)((Settings.LongLineMode == EDGE_LINE) ? EDGE_LINE : EDGE_BACKGROUND), 0); - else + if (Settings.MarkLongLines) { + SendMessage(hwndEditCtrl, SCI_SETEDGEMODE, (WPARAM)((Settings.LongLineMode == EDGE_BACKGROUND) ? EDGE_BACKGROUND : EDGE_LINE), 0); + } + else { SendMessage(hwndEditCtrl, SCI_SETEDGEMODE, (WPARAM)EDGE_NONE, 0); - + } SendMessage(hwndEditCtrl, SCI_SETEDGECOLUMN, (WPARAM)Globals.fvCurFile.iLongLinesLimit, 0); // general margin @@ -5085,13 +5087,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case IDM_VIEW_LONGLINEMARKER: Settings.MarkLongLines = !Settings.MarkLongLines; - if (Settings.MarkLongLines) { - SendMessage(Globals.hwndEdit,SCI_SETEDGEMODE,(Settings.LongLineMode == EDGE_LINE)?EDGE_LINE:EDGE_BACKGROUND,0); - Style_SetLongLineColors(Globals.hwndEdit); - } - else { - SendMessage(Globals.hwndEdit, SCI_SETEDGEMODE, EDGE_NONE, 0); - } + Style_SetLongLineEdge(Globals.hwndEdit, Settings.LongLinesLimit); UpdateToolbar(); UpdateStatusbar(false); break; @@ -5106,9 +5102,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) Settings.LongLinesLimit = _iLongLinesLimit; } Settings.MarkLongLines = true; - SciCall_SetEdgeMode((Settings.LongLineMode == EDGE_LINE) ? EDGE_LINE : EDGE_BACKGROUND); - Style_SetLongLineColors(Globals.hwndEdit); - SciCall_SetEdgeColumn(_iLongLinesLimit); + Style_SetLongLineEdge(Globals.hwndEdit, Settings.LongLinesLimit); UpdateToolbar(); UpdateStatusbar(false); } diff --git a/src/SciCall.h b/src/SciCall.h index 420421b6e..82103ecd8 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -369,7 +369,13 @@ DeclareSciCallV1(SetWrapIndentMode, SETWRAPINDENTMODE, int, mode) DeclareSciCallV1(SetWrapStartIndent, SETWRAPSTARTINDENT, int, mode) DeclareSciCallV1(SetEdgeMode, SETEDGEMODE, int, mode) +DeclareSciCallR0(GetEdgeMode, GETEDGEMODE, int) DeclareSciCallV1(SetEdgeColumn, SETEDGECOLUMN, int, column) +DeclareSciCallR0(GetEdgeColumn, GETEDGECOLUMN, int) +DeclareSciCallV1(SetEdgeColour, SETEDGECOLOUR, int, colour) +DeclareSciCallR0(GetEdgeColour, GETEDGECOLOUR, int) +DeclareSciCallV2(MultiEdgeAddLine, MULTIEDGEADDLINE, int, column, int, colour) +DeclareSciCallV0(MultiEdgeClearAll, MULTIEDGECLEARALL) DeclareSciCallV1(SetTabWidth, SETTABWIDTH, int, width) DeclareSciCallR0(GetTabWidth, GETTABWIDTH, int) diff --git a/src/Styles.c b/src/Styles.c index 56d4696b0..77081f443 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -1134,18 +1134,14 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) #define _SC_INDIC_IME_CONVERTED (INDIC_IME + 2) #define _SC_INDIC_IME_UNKNOWN INDIC_IME_MAX - if (Style_StrGetColor(pCurrentStandard->Styles[STY_IME_COLOR].szValue, FOREGROUND_LAYER, &dColor)) { // IME foregr - SendMessage(hwnd, SCI_INDICSETFORE, _SC_INDIC_IME_INPUT, dColor); - SendMessage(hwnd, SCI_INDICSETFORE, _SC_INDIC_IME_TARGET, dColor); - SendMessage(hwnd, SCI_INDICSETFORE, _SC_INDIC_IME_CONVERTED, dColor); - SendMessage(hwnd, SCI_INDICSETFORE, _SC_INDIC_IME_UNKNOWN, dColor); + if (Style_StrGetColor(pCurrentStandard->Styles[STY_IME_COLOR].szValue, FOREGROUND_LAYER, &dColor)) // IME foregr + { + SciCall_IndicSetFore(_SC_INDIC_IME_INPUT, dColor); + SciCall_IndicSetFore(_SC_INDIC_IME_TARGET, dColor); + SciCall_IndicSetFore(_SC_INDIC_IME_CONVERTED, dColor); + SciCall_IndicSetFore(_SC_INDIC_IME_UNKNOWN, dColor); } - SendMessage(hwnd, SCI_INDICSETFORE, _SC_INDIC_IME_INPUT, dColor); - SendMessage(hwnd, SCI_INDICSETFORE, _SC_INDIC_IME_TARGET, dColor); - 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 @@ -1300,18 +1296,7 @@ void Style_SetLexer(HWND hwnd, PEDITLEXER pLexNew) StringCchCopy(pCurrentStandard->Styles[STY_CARET].szValue, COUNTOF(pCurrentStandard->Styles[STY_CARET].szValue),wchSpecificStyle); - if (SendMessage(hwnd,SCI_GETEDGEMODE,0,0) == EDGE_LINE) { - if (Style_StrGetColor(pCurrentStandard->Styles[STY_LONG_LN_MRK].szValue, FOREGROUND_LAYER, &rgb)) // edge fore - SendMessage(hwnd,SCI_SETEDGECOLOUR,rgb,0); - else - SendMessage(hwnd,SCI_SETEDGECOLOUR,GetSysColor(COLOR_3DLIGHT),0); - } - else { - if (Style_StrGetColor(pCurrentStandard->Styles[STY_LONG_LN_MRK].szValue, BACKGROUND_LAYER, &rgb)) // edge back - SendMessage(hwnd,SCI_SETEDGECOLOUR,rgb,0); - else - SendMessage(hwnd,SCI_SETEDGECOLOUR,GetSysColor(COLOR_3DLIGHT),0); - } + Style_SetLongLineEdge(hwnd, Settings.LongLinesLimit); Style_SetExtraLineSpace(hwnd, pCurrentStandard->Styles[STY_X_LN_SPACE].szValue, COUNTOF(pCurrentStandard->Styles[STY_X_LN_SPACE].szValue)); @@ -1555,24 +1540,44 @@ void Style_SetReadonly(HWND hwnd, bool bReadonly) //============================================================================= // -// Style_SetLongLineColors() +// Style_SetLongLineEdge() // -void Style_SetLongLineColors(HWND hwnd) +void Style_SetLongLineEdge(HWND hwnd, const int iLongLineLimit) { + UNUSED(hwnd); COLORREF rgb; - - if (SendMessage(hwnd,SCI_GETEDGEMODE,0,0) == EDGE_LINE) - { - if (!Style_StrGetColor(GetCurrentStdLexer()->Styles[STY_LONG_LN_MRK].szValue, FOREGROUND_LAYER, &rgb)) { // edge fore - rgb = GetSysColor(COLOR_3DLIGHT); - } - } - else { + if (Settings.LongLineMode == EDGE_BACKGROUND) { if (!Style_StrGetColor(GetCurrentStdLexer()->Styles[STY_LONG_LN_MRK].szValue, BACKGROUND_LAYER, &rgb)) { // edge back rgb = GetSysColor(COLOR_3DSHADOW); } } - SendMessage(hwnd, SCI_SETEDGECOLOUR, rgb, 0); + else { + if (!Style_StrGetColor(GetCurrentStdLexer()->Styles[STY_LONG_LN_MRK].szValue, FOREGROUND_LAYER, &rgb)) { // edge fore + rgb = GetSysColor(COLOR_3DLIGHT); + } + } + if (Settings.MarkLongLines) + { + switch (Settings.LongLineMode) { + case EDGE_LINE: + case EDGE_BACKGROUND: + SciCall_SetEdgeMode(Settings.LongLineMode); + SciCall_SetEdgeColour(rgb); + SciCall_SetEdgeColumn(iLongLineLimit); + break; + case EDGE_MULTILINE: + SciCall_SetEdgeMode(Settings.LongLineMode); + SciCall_MultiEdgeClearAll(); + SciCall_MultiEdgeAddLine(iLongLineLimit, rgb); + break; + default: + SciCall_SetEdgeMode(EDGE_NONE); + break; + } + } + else { + SciCall_SetEdgeMode(EDGE_NONE); + } } diff --git a/src/Styles.h b/src/Styles.h index ed70ecf1b..5d0cdd64a 100644 --- a/src/Styles.h +++ b/src/Styles.h @@ -49,7 +49,6 @@ void Style_SetLexer(HWND hwnd,PEDITLEXER pLexNew); void Style_SetUrlHotSpot(HWND hwnd); void Style_SetInvisible(HWND hwnd, bool); void Style_SetReadonly(HWND hwnd, bool); -void Style_SetLongLineColors(HWND hwnd); void Style_HighlightCurrentLine(HWND hwnd, int); void Style_SetFolding(HWND hwnd, bool); void Style_SetBookmark(HWND hwnd, bool); @@ -85,6 +84,7 @@ bool Style_SelectColor(HWND hwnd,bool,LPWSTR lpszStyle,int cchStyle,bool); void Style_SetStyles(HWND hwnd,int iStyle,LPCWSTR lpszStyle,bool); bool Style_IsCurLexerStandard(); float Style_GetBaseFontSize(); +void Style_SetLongLineEdge(HWND hwnd, const int iLongLineLimit); PEDITLEXER Style_GetCurrentLexerPtr(); int Style_GetCurrentLexerRID(); void Style_GetLexerDisplayName(PEDITLEXER pLexer, LPWSTR lpszName, int cchName); diff --git a/src/VersionEx.h b/src/VersionEx.h index 981b1e142..f4242ff74 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 717 -#define VERSION_BUILD 2395 +#define VERSION_REV 718 +#define VERSION_BUILD 2396 #define SCINTILLA_VER 420 #define ONIGURUMA_REGEX_VER 6.9.3 #define VERSION_PATCH BETA