+fix: use string beg/end terminator for most recent lists

This commit is contained in:
Rainer Kottenhoff 2019-07-18 15:22:37 +02:00
parent 30df637e68
commit 01361eaea0
9 changed files with 77 additions and 82 deletions

View File

@ -1 +1 @@
2395
2396

View File

@ -3,7 +3,7 @@
<assemblyIdentity
name="Notepad3"
processorArchitecture="*"
version="5.19.717.2395"
version="5.19.718.2396"
type="win32"
/>
<description>Notepad3 BETA</description>

View File

@ -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);

View File

@ -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);

View File

@ -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);
}

View File

@ -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)

View File

@ -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);
}
}

View File

@ -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);

View File

@ -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