From 79290dc5cfea5bb2e63b6630744f7c88a58408c2 Mon Sep 17 00:00:00 2001 From: Pairi Daiza Date: Wed, 28 Dec 2022 20:19:51 +0100 Subject: [PATCH 1/6] + Upd: Version files and Changes.txt --- Build/Changes.txt | 5 ++++- Versions/day.txt | 2 +- res/Notepad3.exe.conf.manifest | 2 +- src/VersionEx.h | 2 +- 4 files changed, 7 insertions(+), 4 deletions(-) diff --git a/Build/Changes.txt b/Build/Changes.txt index 450f20c49..acdf799d7 100644 --- a/Build/Changes.txt +++ b/Build/Changes.txt @@ -34,7 +34,7 @@ UCD - (UCD)ARDET is an Encoding Detector Library ======================================================== -Current BETA/RC Version 5.22.1227.(build_#) (2022-12-27) +Current BETA/RC Version 5.22.1228.(build_#) (2022-12-28) ======================================================== -------------------------------------------------------- @@ -63,6 +63,8 @@ NEW: CHANGES: -------------------------------------------------------- [.###.#]- . +[1228.1]- JSON lexer: Same style for SCE_JSON_COMPACTIRI and SCE_JSON_PROPERTYNAME (LEX). +[1228.1]- Status-bar double-click line-break mode: Cycle only between CR+LF <-> LF modes. [1220.1]- Update Lexer "AutoIt3 Script" to Autoit v3.3.16.1. [1220.1]- Adjust All dialogboxes for all Languages to fit at display scale of 125%. [1216.1]- Replacing SCI_REPLACETARGET calls by SCI_REPLACETARGETMINIMAL calls where appropriate. @@ -109,6 +111,7 @@ CHANGES Versions in Tools or Libraries: FIXES: -------------------------------------------------------- [.###.#]- . +[1228.1]- Speedup search&replace in large text files. [1227.1]- Use alternate path, if Path_GetKnownFolder() failed. [1215.1]- Set alpha (80) for "highlight current line" translucency, if not given. [1212.1]- "Notepad3 Replacement" after Win11 22H2 update (SUP). diff --git a/Versions/day.txt b/Versions/day.txt index 4f7203748..fe1b06087 100644 --- a/Versions/day.txt +++ b/Versions/day.txt @@ -1 +1 @@ -1227 +1228 diff --git a/res/Notepad3.exe.conf.manifest b/res/Notepad3.exe.conf.manifest index 5f20531c0..f9711b600 100644 --- a/res/Notepad3.exe.conf.manifest +++ b/res/Notepad3.exe.conf.manifest @@ -3,7 +3,7 @@ diff --git a/src/VersionEx.h b/src/VersionEx.h index 4ee181328..5cb34511c 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -8,7 +8,7 @@ #define SAPPNAME "Notepad3" #define VERSION_MAJOR 5 #define VERSION_MINOR 22 -#define VERSION_REV 1227 +#define VERSION_REV 1228 #define VERSION_BUILD 1 #define SCINTILLA_VER 532 #define LEXILLA_VER 521 From 2ad0217304895987c109b52609962cf86895889b Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Thu, 29 Dec 2022 16:13:53 +0100 Subject: [PATCH 2/6] +fix: (re)setting default window position in case of non std DPI resolution (issue: #4418) --- language/np3_de_de/strings_de_de.rc | 2 +- language/np3_en_us/strings_en_us.rc | 2 +- src/Config/Config.cpp | 21 +++++++++---- src/Dialogs.c | 2 +- src/Notepad3.c | 48 +++++++++++++++++------------ src/TypeDefs.h | 3 ++ 6 files changed, 50 insertions(+), 28 deletions(-) diff --git a/language/np3_de_de/strings_de_de.rc b/language/np3_de_de/strings_de_de.rc index 1aa5241e6..2df2f8989 100644 --- a/language/np3_de_de/strings_de_de.rc +++ b/language/np3_de_de/strings_de_de.rc @@ -316,7 +316,7 @@ Optionen:\r\n\ /n\tÖffne immer ein neues Fenster (/ns single file instance).\r\n\ /r\tBenutze geöffnetes Fenster erneut (/rs single file instance).\r\n\ /p\tSetze Fenster: Position und Größe (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\toder /p ,,,, [ganzzahlig].\r\n\ +\toder /p ,,,[,,] [ganzzahlig].\r\n\ /t\tSetze Fenster-Titel.\r\n\ /i\tStarte als 'Tray-Icon'.\r\n\ /o\tHalte Fenster immer auf oberster Ebene.\r\n\ diff --git a/language/np3_en_us/strings_en_us.rc b/language/np3_en_us/strings_en_us.rc index 6236f8c22..28117e04c 100644 --- a/language/np3_en_us/strings_en_us.rc +++ b/language/np3_en_us/strings_en_us.rc @@ -316,7 +316,7 @@ Options:\r\n\ /n\tAlways open a new window (/ns single file instance).\r\n\ /r\tReuse window (/rs single file instance).\r\n\ /p\tSet window position and size (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,, [all integers].\r\n\ +\tor /p ,,,[,,] [all integers].\r\n\ /t\tSet window title.\r\n\ /i\tStart as tray icon.\r\n\ /o\tKeep window on top.\r\n\ diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index 4ca0cd5a3..87f5db3b4 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -1733,7 +1733,7 @@ void LoadSettings() // startup window (ignore window position if /p was specified) // -------------------------------------------------------------- - IniSectionGetString(IniSecSettings2, L"DefaultWindowPosition", L"", + IniSectionGetString(IniSecSettings2, Constants.DefaultWindowPosition, L"", Settings2.DefaultWindowPosition, COUNTOF(Settings2.DefaultWindowPosition)); bool const bExplicitDefaultWinPos = StrIsNotEmpty(Settings2.DefaultWindowPosition); @@ -1744,11 +1744,20 @@ void LoadSettings() if (bExplicitDefaultWinPos) { int bMaxi = 0; - int const itok = swscanf_s(Settings2.DefaultWindowPosition, L"%i,%i,%i,%i,%i", - &g_DefWinInfo.x, &g_DefWinInfo.y, &g_DefWinInfo.cx, &g_DefWinInfo.cy, &bMaxi); - if (itok == 4 || itok == 5) { // scan successful + int const itok = swscanf_s(Settings2.DefaultWindowPosition, WINDOWPOS_STRGFORMAT, + &g_DefWinInfo.x, &g_DefWinInfo.y, &g_DefWinInfo.cx, &g_DefWinInfo.cy, &g_DefWinInfo.dpi, &bMaxi); + if (itok == 4 || itok == 5 || itok == 6) { // scan successful if (itok == 4) { + g_DefWinInfo.dpi = USER_DEFAULT_SCREEN_DPI; g_DefWinInfo.max = false; + } else if (itok == 5) { // maybe DPI or Maxi (old) + if (g_DefWinInfo.dpi < (USER_DEFAULT_SCREEN_DPI >> 2)) { + g_DefWinInfo.max = g_DefWinInfo.dpi ? true : false; + g_DefWinInfo.dpi = USER_DEFAULT_SCREEN_DPI; + } + else { + g_DefWinInfo.max = false; + } } else { g_DefWinInfo.max = bMaxi ? true : false; } @@ -1756,8 +1765,8 @@ void LoadSettings() g_DefWinInfo = GetFactoryDefaultWndPos(2); // overwrite bad defined default position StringCchPrintf(Settings2.DefaultWindowPosition, COUNTOF(Settings2.DefaultWindowPosition), - L"%i,%i,%i,%i,%i", g_DefWinInfo.x, g_DefWinInfo.y, g_DefWinInfo.cx, g_DefWinInfo.cy, g_DefWinInfo.max); - IniSectionSetString(IniSecSettings2, L"DefaultWindowPosition", Settings2.DefaultWindowPosition); + WINDOWPOS_STRGFORMAT, g_DefWinInfo.x, g_DefWinInfo.y, g_DefWinInfo.cx, g_DefWinInfo.cy, g_DefWinInfo.dpi, g_DefWinInfo.max); + IniSectionSetString(IniSecSettings2, Constants.DefaultWindowPosition, Settings2.DefaultWindowPosition); bDirtyFlag = true; } } diff --git a/src/Dialogs.c b/src/Dialogs.c index dd4c7035e..535bd3a95 100644 --- a/src/Dialogs.c +++ b/src/Dialogs.c @@ -4668,7 +4668,7 @@ void DialogNewWindow(HWND hwnd, bool bSaveOnRunTools, const HPATHL hFilePath, WI WININFO const _wi = (Flags.bStickyWindowPosition ? g_IniWinInfo : (wi ? *wi : GetMyWindowPlacement(hwnd, NULL, Settings2.LaunchInstanceWndPosOffset))); - StringCchPrintf(wch, COUNTOF(wch), L" -pos %i,%i,%i,%i,%i ", _wi.x, _wi.y, _wi.cx, _wi.cy, (int)_wi.max); + StringCchPrintf(wch, COUNTOF(wch), L" -pos " WINDOWPOS_STRGFORMAT, _wi.x, _wi.y, _wi.cx, _wi.cy, _wi.dpi, (int)_wi.max); StrgCat(hparam_str, wch); if (Path_IsNotEmpty(hFilePath)) { diff --git a/src/Notepad3.c b/src/Notepad3.c index 9f3393657..66e1c2513 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -80,7 +80,7 @@ LPCWSTR WordBookMarks[MARKER_NP3_BOOKMARK] = { #define RELAUNCH_ELEVATED_BUF_ARG L"tmpfbuf=" CONSTANTS_T const Constants = { - 2 // StdDefaultLexerID + 2 // StdDefaultLexerID , L"minipath.exe" // FileBrowserMiniPath , L"grepWinNP3.exe" // FileSearchGrepWin , L"Settings" // Inifile Section "Settings" @@ -88,8 +88,10 @@ CONSTANTS_T const Constants = { , L"Window" // Inifile Section "Window" , L"Styles" // Inifile Section "Styles" , L"Suppressed Messages" // Inifile Section "SuppressedMessages" + , L"DefaultWindowPosition" // Strg DefaultWindowPosition }; + FLAGS_T Flags; FLAGS_T DefaultFlags; @@ -6972,7 +6974,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case CMD_COPYWINPOS: { WININFO wi = GetMyWindowPlacement(Globals.hwndMain, NULL, 0); WCHAR wchBuf[128] = { L'\0' }; - StringCchPrintf(wchBuf, COUNTOF(wchBuf), L"/pos %i,%i,%i,%i,%i", wi.x, wi.y, wi.cx, wi.cy, wi.max); + StringCchPrintf(wchBuf, COUNTOF(wchBuf), L"/pos " WINDOWPOS_STRGFORMAT, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, (int)wi.max); SetClipboardText(hwnd, wchBuf, StringCchLen(wchBuf, 0)); } break; @@ -6995,9 +6997,9 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case CMD_SAVEASDEFWINPOS: { WININFO const wi = GetMyWindowPlacement(Globals.hwndMain, NULL, 0); WCHAR tchDefWinPos[80]; - StringCchPrintf(tchDefWinPos, COUNTOF(tchDefWinPos), L"%i,%i,%i,%i,%i", wi.x, wi.y, wi.cx, wi.cy, wi.max); + StringCchPrintf(tchDefWinPos, COUNTOF(tchDefWinPos), WINDOWPOS_STRGFORMAT, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, (int)wi.max); if (Globals.bCanSaveIniFile) { - IniFileSetString(Paths.IniFile, Constants.Settings2_Section, L"DefaultWindowPosition", tchDefWinPos); + IniFileSetString(Paths.IniFile, Constants.Settings2_Section, Constants.DefaultWindowPosition, tchDefWinPos); } g_DefWinInfo = wi; //GetWinInfoByFlag(-1); // use current win pos as new default } @@ -7005,7 +7007,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case CMD_CLEARSAVEDWINPOS: g_DefWinInfo = GetFactoryDefaultWndPos(2); - IniFileDelete(Paths.IniFile, Constants.Settings2_Section, L"DefaultWindowPosition", false); + IniFileDelete(Paths.IniFile, Constants.Settings2_Section, Constants.DefaultWindowPosition, false); break; case CMD_OPENINIFILE: @@ -9115,17 +9117,25 @@ void ParseCommandLine() } } else if (ExtractFirstArgument(lp2, lp1, lp2, (int)len)) { WININFO wi = INIT_WININFO; - int bMaximize = 0; - int itok = swscanf_s(lp1, L"%i,%i,%i,%i,%i", &wi.x, &wi.y, &wi.cx, &wi.cy, &bMaximize); - if (itok == 4 || itok == 5) { // scan successful + int iMaximize = 0; + int const itok = swscanf_s(lp1, WINDOWPOS_STRGFORMAT, &wi.x, &wi.y, &wi.cx, &wi.cy, &wi.dpi, &iMaximize); + if (itok == 4 || itok == 5 || itok == 6) { // scan successful Globals.CmdLnFlag_PosParam = true; Globals.CmdLnFlag_WindowPos = 0; - if (bMaximize) { - wi.max = true; - } if (itok == 4) { - wi.max = false; + wi.dpi = USER_DEFAULT_SCREEN_DPI; + iMaximize = 0; } + else if (itok == 5) { // maybe DPI or Maxi (old) + if (wi.dpi < (USER_DEFAULT_SCREEN_DPI >> 2)) { + iMaximize = wi.dpi; + wi.dpi = USER_DEFAULT_SCREEN_DPI; + } + else { + iMaximize = 0; + } + } + wi.max = !!iMaximize; g_IniWinInfo = wi; // set window placement } } @@ -11364,8 +11374,8 @@ bool DoElevatedRelaunch(EditFileIOStatus* pFioStatus, bool bAutoSaveOnRelaunch) WININFO const wi = GetMyWindowPlacement(Globals.hwndMain, NULL, 0); HSTRINGW hstr_args = StrgCreate(NULL); - StrgFormat(hstr_args, L"%s/pos %i,%i,%i,%i,%i /g %i,%i %s", - wchFlags, wi.x, wi.y, wi.cx, wi.cy, wi.max, iCurLn, iCurCol, lpArgs); + StrgFormat(hstr_args, L"%s/pos " WINDOWPOS_STRGFORMAT L" /g %i,%i %s", + wchFlags, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, (int)wi.max, iCurLn, iCurCol, lpArgs); WCHAR wchTempFileName[MAX_PATH_EXPLICIT + 1] = { L'\0' }; WCHAR wchTempPathBuffer[MAX_PATH_EXPLICIT + 1] = { L'\0' }; @@ -11381,8 +11391,8 @@ bool DoElevatedRelaunch(EditFileIOStatus* pFioStatus, bool bAutoSaveOnRelaunch) WCHAR wchEncoding[80] = { L'\0' }; Encoding_GetNameW(Encoding_GetCurrent(), wchEncoding, COUNTOF(wchEncoding)); - StrgFormat(hstr_args, L"%s/%s /pos %i,%i,%i,%i,%i /g %i,%i /%s\"%s\" %s", - wchFlags, wchEncoding, wi.x, wi.y, wi.cx, wi.cy, wi.max, iCurLn, iCurCol, RELAUNCH_ELEVATED_BUF_ARG, Path_Get(htmp_pth), lpArgs); + StrgFormat(hstr_args, L"%s/%s /pos " WINDOWPOS_STRGFORMAT L" /g %i,%i /%s\"%s\" %s", + wchFlags, wchEncoding, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, (int)wi.max, iCurLn, iCurCol, RELAUNCH_ELEVATED_BUF_ARG, Path_Get(htmp_pth), lpArgs); if (!StrStrI(StrgGet(hstr_args), Path_FindFileName(Paths.CurrentFile))) { if (Path_IsNotEmpty(Paths.CurrentFile)) { @@ -11876,7 +11886,7 @@ bool LaunchNewInstance(HWND hwnd, LPCWSTR lpszParameter, LPCWSTR lpszFilePath) int const instCnt = CountRunningInstances(); WININFO wi = GetMyWindowPlacement(hwnd, NULL, offset * instCnt); WCHAR wchPos[80] = { L'\0' }; - StringCchPrintf(wchPos, COUNTOF(wchPos), L"-pos %i,%i,%i,%i,%i", wi.x, wi.y, wi.cx, wi.cy, (int)wi.max); + StringCchPrintf(wchPos, COUNTOF(wchPos), L"-pos " WINDOWPOS_STRGFORMAT, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, (int)wi.max); StringCchPrintf(params_buf, StrgGetAllocLength(hstrParams), L"%s %s \"%s\"", lpszParameter, wchPos, lpszFilePath); @@ -11940,7 +11950,7 @@ bool RelaunchMultiInst() wi.y += (i * offset); WCHAR wchPos[80] = { L'\0' }; if (!Globals.CmdLnFlag_PosParam) { - StringCchPrintf(wchPos, COUNTOF(wchPos), L" -pos %i,%i,%i,%i,%i", wi.x, wi.y, wi.cx, wi.cy, (int)wi.max); + StringCchPrintf(wchPos, COUNTOF(wchPos), L" -pos " WINDOWPOS_STRGFORMAT, wi.x, wi.y, wi.cx, wi.cy, wi.dpi, (int)wi.max); } size_t const pl = StringCchLen(wchPos, 80) + 1; @@ -12082,13 +12092,13 @@ void SnapToWinInfoPos(HWND hwnd, const WININFO winInfo, SCREEN_MODE mode) if (GetDoAnimateMinimize()) { DrawAnimatedRects(hWindow, IDANI_CAPTION, &rcCurrent, &wndpl.rcNormalPosition); } + SetWindowPlacement(hWindow, &wndpl); // 1st set correct screen (DPI Aware) if (hwnd) { UINT const dpi = Scintilla_GetWindowDPI(hwnd); if (dpi != winInfo.dpi) { RelAdjustRectForDPI(&wndpl.rcNormalPosition, winInfo.dpi, dpi); } } - SetWindowPlacement(hWindow, &wndpl); // 1st set correct screen (DPI Aware) SetWindowPlacement(hWindow, &wndpl); // 2nd resize position to correct DPI settings } if (hwnd) { diff --git a/src/TypeDefs.h b/src/TypeDefs.h index e89721564..9aa2c6dd3 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -463,11 +463,14 @@ typedef struct CONSTANTS_T { const WCHAR* const Window_Section; const WCHAR* const Styles_Section; const WCHAR* const SectionSuppressedMessages; + const WCHAR* const DefaultWindowPosition; } CONSTANTS_T, *PCONSTANTS_T; extern CONSTANTS_T const Constants; +#define WINDOWPOS_STRGFORMAT L"%i,%i,%i,%i,%i,%i" + // ------------------------------------ typedef struct GLOBALS_T { From cb88f1fa83fac15ed06ff5dd9fe25939449291ea Mon Sep 17 00:00:00 2001 From: Pairi Daiza Date: Thu, 29 Dec 2022 20:27:10 +0100 Subject: [PATCH 3/6] MUI - Add in line 319 in all "strings_xx_yy.rc", --- language/np3_af_za/strings_af_za.rc | 2 +- language/np3_be_by/strings_be_by.rc | 2 +- language/np3_el_gr/strings_el_gr.rc | 2 +- language/np3_en_gb/strings_en_gb.rc | 2 +- language/np3_es_es/strings_es_es.rc | 2 +- language/np3_es_mx/strings_es_mx.rc | 2 +- language/np3_fr_fr/strings_fr_fr.rc | 2 +- language/np3_hi_in/strings_hi_in.rc | 2 +- language/np3_hu_hu/strings_hu_hu.rc | 2 +- language/np3_id_id/strings_id_id.rc | 2 +- language/np3_it_it/strings_it_it.rc | 2 +- language/np3_ja_jp/strings_ja_jp.rc | 2 +- language/np3_ko_kr/strings_ko_kr.rc | 2 +- language/np3_nl_nl/strings_nl_nl.rc | 2 +- language/np3_pl_pl/strings_pl_pl.rc | 2 +- language/np3_pt_br/strings_pt_br.rc | 2 +- language/np3_pt_pt/strings_pt_pt.rc | 2 +- language/np3_ru_ru/strings_ru_ru.rc | 2 +- language/np3_sk_sk/strings_sk_sk.rc | 2 +- language/np3_sv_se/strings_sv_se.rc | 2 +- language/np3_tr_tr/strings_tr_tr.rc | 2 +- language/np3_vi_vn/strings_vi_vn.rc | 2 +- language/np3_zh_cn/strings_zh_cn.rc | 2 +- language/np3_zh_tw/strings_zh_tw.rc | 2 +- 24 files changed, 24 insertions(+), 24 deletions(-) diff --git a/language/np3_af_za/strings_af_za.rc b/language/np3_af_za/strings_af_za.rc index 7cb011353..5ee3adfe6 100644 --- a/language/np3_af_za/strings_af_za.rc +++ b/language/np3_af_za/strings_af_za.rc @@ -316,7 +316,7 @@ Opsies:\r\n\ /n\tMaak altyd 'n nuwe venster oop (/ns enkele lêer instansie).\r\n\ /r\tHergebruik venster (/rs enkele lêer instansie).\r\n\ /p\tStel venster posisie en grootte (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,, [alle heelgetalle].\r\n\ +\tor /p ,,,[,,] [alle heelgetalle].\r\n\ /t\tStel venster titel.\r\n\ /i\tBegin as tray ikoon.\r\n\ /o\tHou venster bo-op.\r\n\ diff --git a/language/np3_be_by/strings_be_by.rc b/language/np3_be_by/strings_be_by.rc index ba6a83087..a4f271288 100644 --- a/language/np3_be_by/strings_be_by.rc +++ b/language/np3_be_by/strings_be_by.rc @@ -316,7 +316,7 @@ Notepad3 [/?] [...[Кадоўка]] [...[Канчаткі радкоў]] [/e] [/ /n\tЗаўсёды адкрываць новае акно (/ns адзін экзэмпляр файла).\r\n\ /r\tВыкарыстаць былое акно (/rs адзін экзэмпляр файла).\r\n\ /p\tЗадаць пазіцыю і памер акна (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tці /p ,,,, [цэлыя лікі].\r\n\ +\tці /p ,,,[,,] [цэлыя лікі].\r\n\ /t\tЗадаць назву акна.\r\n\ /i\tЗапусціць значком на паліцы задач.\r\n\ /o\tЗверху іншых вокнаў.\r\n\ diff --git a/language/np3_el_gr/strings_el_gr.rc b/language/np3_el_gr/strings_el_gr.rc index 063180dab..f5e06acab 100644 --- a/language/np3_el_gr/strings_el_gr.rc +++ b/language/np3_el_gr/strings_el_gr.rc @@ -316,7 +316,7 @@ Notepad3 [/?] [...[Κωδικοποίηση]] [...[Λειτουργία κατά /n\tΆνοιγμα πάντα νέου παραθύρου (/ns παρουσία ενός μόνο αρχείου).\r\n\ /r\tΕπαναχρησιμοποίηση παραθύρου (/rs παρουσία ενός μόνο\r\n\tαρχείου).\r\n\ /p\tΟρισμός θέσης και μεγέθους παραθύρου (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tή /p <αριστερά>,<πάνω>,<πλάτος>,<ύψος>,<μέγ.> [όλοι\r\n\tακέραιοι].\r\n\ +\tή /p <αριστερά>,<πάνω>,<πλάτος>,<ύψος>[,,<μέγ.>] [όλοι\r\n\tακέραιοι].\r\n\ /t\tΟρισμός τίτλου παραθύρου.\r\n\ /i\tΈναρξη ως ελαχιστοποιημένο στην περιοχή ειδοποιήσεων.\r\n\ /o\tΠάντα στην κορυφή το παράθυρο.\r\n\ diff --git a/language/np3_en_gb/strings_en_gb.rc b/language/np3_en_gb/strings_en_gb.rc index 52a35247f..a5513da3a 100644 --- a/language/np3_en_gb/strings_en_gb.rc +++ b/language/np3_en_gb/strings_en_gb.rc @@ -316,7 +316,7 @@ Options:\r\n\ /n\tAlways open a new window (/ns single file instance).\r\n\ /r\tReuse window (/rs single file instance).\r\n\ /p\tSet window position and size (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,, [all integers].\r\n\ +\tor /p ,,,[,,] [all integers].\r\n\ /t\tSet window title.\r\n\ /i\tStart as tray icon.\r\n\ /o\tKeep window on top.\r\n\ diff --git a/language/np3_es_es/strings_es_es.rc b/language/np3_es_es/strings_es_es.rc index 7bff60abd..a762fe271 100644 --- a/language/np3_es_es/strings_es_es.rc +++ b/language/np3_es_es/strings_es_es.rc @@ -316,7 +316,7 @@ Opciones:\r\n\ /n\tSiempre abre una nueva ventana (/ns instancia de archivo único).\r\n\ /r\tReutilizar la ventana (/rs instancia de archivo único).\r\n\ /p\tEstablecer el tamaño y la posición de la ventana (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\to /p ,,,, [todos\r\n\tenteros].\r\n\ +\to /p ,,,[,,] [todos\r\n\tenteros].\r\n\ /t\tEstablecer el título de la ventana.\r\n\ /i\tComenzar como un icono de la barra de tareas.\r\n\ /o\tVentana siempre visible.\r\n\ diff --git a/language/np3_es_mx/strings_es_mx.rc b/language/np3_es_mx/strings_es_mx.rc index 481f53fd2..dbd4de1a4 100644 --- a/language/np3_es_mx/strings_es_mx.rc +++ b/language/np3_es_mx/strings_es_mx.rc @@ -316,7 +316,7 @@ Opciones:\r\n\ /n\tSiempre abre una nueva ventana (/ns instancia de archivo único).\r\n\ /r\tReutilizar la ventana (/rs instancia de archivo único).\r\n\ /p\tEstablecer el tamaño y la posición de la ventana (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\to /p ,,,, [todos\r\n\tenteros].\r\n\ +\to /p ,,,[,,] [todos\r\n\tenteros].\r\n\ /t\tEstablecer el título de la ventana.\r\n\ /i\tComenzar como un icono de la barra de tareas.\r\n\ /o\tVentana siempre visible.\r\n\ diff --git a/language/np3_fr_fr/strings_fr_fr.rc b/language/np3_fr_fr/strings_fr_fr.rc index ca3dc8f81..1dd6673b3 100644 --- a/language/np3_fr_fr/strings_fr_fr.rc +++ b/language/np3_fr_fr/strings_fr_fr.rc @@ -316,7 +316,7 @@ Options :\r\n\ /n\tOuvre toujours une nouvelle fenêtre (/ns instance\r\n\tde fichier unique).\r\n\ /r\tRéutilise la fenêtre (/rs instance de fichier unique).\r\n\ /p\tDéfinit la position et la taille de la fenêtre (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tou /p ,,,, [tous entiers].\r\n\ +\tou /p ,,,[,,] [tous entiers].\r\n\ /t\tDéfinit un titre de fenêtre.\r\n\ /i\tDémarre en icône dans la zone de notifications.\r\n\ /o\tGarde la fenêtre toujours visible.\r\n\ diff --git a/language/np3_hi_in/strings_hi_in.rc b/language/np3_hi_in/strings_hi_in.rc index 14b763b3f..41f9d4856 100644 --- a/language/np3_hi_in/strings_hi_in.rc +++ b/language/np3_hi_in/strings_hi_in.rc @@ -316,7 +316,7 @@ Notepad3 [/?] [...[एन्कोडिंग]] [...[रेखा समाप /n\tसदैव एक नई विंडो खोलें (/ns एकल फ़ाइल अवस्था).\r\n\ /r\tविंडो पुनः इस्तमएआल करें (/rs एकल फ़ाइल अवस्था).\r\n\ /p\tविंडो स्तिथि और आकार तय करें (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tया /p <बाएं>,<शीर्ष>,<चोड़ाई>,<ऊंचाई>,<अत्यधिक> [समस्त पूर्णांक].\r\n\ +\tया /p <बाएं>,<शीर्ष>,<चोड़ाई>,<ऊंचाई>[,,<अत्यधिक>] [समस्त पूर्णांक].\r\n\ /t\tविंडो शीर्षक तय करें.\r\n\ /i\tट्रे आइकान के रूप में शुरू करें.\r\n\ /o\tविंडो ऊपर रखें.\r\n\ diff --git a/language/np3_hu_hu/strings_hu_hu.rc b/language/np3_hu_hu/strings_hu_hu.rc index 577d80d3c..aa8299e18 100644 --- a/language/np3_hu_hu/strings_hu_hu.rc +++ b/language/np3_hu_hu/strings_hu_hu.rc @@ -316,7 +316,7 @@ Opciók:\r\n\ /n\tMindig nyisson új ablakot (/ns egyetlen fájl példány).\r\n\ /r\tAblak újrahasznosítása (/rs egyetlen fájl példány).\r\n\ /p\tAblak pozíció és méret beállítása (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,, [mindegyik\r\n\tegész szám].\r\n\ +\tor /p ,,,[,,] [mindegyik\r\n\tegész szám].\r\n\ /t\tCímsor szövegének beállítása.\r\n\ /i\tIndítás óra melé kicsinyítve.\r\n\ /o\tAblak mindig felül.\r\n\ diff --git a/language/np3_id_id/strings_id_id.rc b/language/np3_id_id/strings_id_id.rc index e4386386d..418635b46 100644 --- a/language/np3_id_id/strings_id_id.rc +++ b/language/np3_id_id/strings_id_id.rc @@ -316,7 +316,7 @@ Options:\r\n\ /n\tAlways open a new window (/ns single file instance).\r\n\ /r\tReuse window (/rs single file instance).\r\n\ /p\tSet window position and size (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,, [all integers].\r\n\ +\tor /p ,,,[,,] [all integers].\r\n\ /t\tSet window title.\r\n\ /i\tStart as tray icon.\r\n\ /o\tKeep window on top.\r\n\ diff --git a/language/np3_it_it/strings_it_it.rc b/language/np3_it_it/strings_it_it.rc index 5cbd35ebb..11307085c 100644 --- a/language/np3_it_it/strings_it_it.rc +++ b/language/np3_it_it/strings_it_it.rc @@ -316,7 +316,7 @@ Opzioni:\r\n\ /n\tApri sempre una nuova finestra (/ns istanza singola).\r\n\ /r\tRiutilizza finestra (/rs istanza singola).\r\n\ /p\tImposta posizione e dimensione della finestra (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,, [numeri interi].\r\n\ +\tor /p ,,,[,,] [numeri interi].\r\n\ /t\tImposta titolo della finestra.\r\n\ /i\tAvvia come icona nell'area di notifica'.\r\n\ /o\tMantieni finestra in primo piano.\r\n\ diff --git a/language/np3_ja_jp/strings_ja_jp.rc b/language/np3_ja_jp/strings_ja_jp.rc index 65427f03e..e12f25921 100644 --- a/language/np3_ja_jp/strings_ja_jp.rc +++ b/language/np3_ja_jp/strings_ja_jp.rc @@ -316,7 +316,7 @@ Notepad3 [/?] [...[文字コード]] [...[改行コード]] [/e] [/g] [/m] [/l]\ /n\t新規ウィンドウで開く (/ns ファイルは単一のインスタンス)\r\n\ /r\tウインドウを再利用 (/rs 同じく単一のインスタンス\r\n\ /p\tウィンドウの位置とサイズを指定 [/p x,y,sizex,y[,max]] (/p0, /ps, /pf,\r\n\ -\tl,t,r,b,m) or /p ,,,, [すべて整数]\r\n\ +\tl,t,r,b,m) or /p ,,,[,,] [すべて整数]\r\n\ /t\tタイトルバーの文字列を指定 [/t text]\r\n\ /i\tシステムトレイ内に起動\r\n\ /o\t常に手前に表示\r\n\ diff --git a/language/np3_ko_kr/strings_ko_kr.rc b/language/np3_ko_kr/strings_ko_kr.rc index 01dd7dcbf..be9681abe 100644 --- a/language/np3_ko_kr/strings_ko_kr.rc +++ b/language/np3_ko_kr/strings_ko_kr.rc @@ -316,7 +316,7 @@ Notepad3 [/?] [...[인코딩]] [...[줄 끝 모드]] [/e] [/g] [/m] [/l]\r\n\ /n\t항상 새 창을 엽니다 (/ns 단일 파일 인스턴스).\r\n\ /r\t창을 재사용합니다 (/rs 단일 파일 인스턴스).\r\n\ /p\t창 위치와 크기 지정 (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\t또는 /p <왼쪽>,<상단>,<너비>,<높이>,<최대> [모두 정수].\r\n\ +\t또는 /p <왼쪽>,<상단>,<너비>,<높이>[,,] [모두 정수].\r\n\ /t\t창 제목을 설정합니다.\r\n\ /i\t트레이 아이콘으로 시작합니다.\r\n\ /o\t창을 맨 위에 둡니다.\r\n\ diff --git a/language/np3_nl_nl/strings_nl_nl.rc b/language/np3_nl_nl/strings_nl_nl.rc index 34048fb1f..8b13f1f56 100644 --- a/language/np3_nl_nl/strings_nl_nl.rc +++ b/language/np3_nl_nl/strings_nl_nl.rc @@ -316,7 +316,7 @@ Opties:\r\n\ /n\tOpen altijd een nieuw venster (/ns één bestand instantie).\r\n\ /r\tHergebruik venster (/rs één bestand instantie).\r\n\ /p\tVensterpositie en -grootte instellen (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tof /p ,,,, [gehele getallen].\r\n\ +\tof /p ,,,[,,] [gehele getallen].\r\n\ /t\tVenstertitel instellen.\r\n\ /i\tStart als systeemvakpictogram.\r\n\ /o\tVenster bovenop houden.\r\n\ diff --git a/language/np3_pl_pl/strings_pl_pl.rc b/language/np3_pl_pl/strings_pl_pl.rc index 560c6bbc3..4d6e8edd8 100644 --- a/language/np3_pl_pl/strings_pl_pl.rc +++ b/language/np3_pl_pl/strings_pl_pl.rc @@ -316,7 +316,7 @@ Opcje:\r\n\ /n\tAlways open a new window (/ns single file instance).\r\n\ /r\tReuse window (/rs single file instance).\r\n\ /p\tSet window position and size (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,, [wszystkie liczby].\r\n\ +\tor /p ,,,[,,] [wszystkie liczby].\r\n\ /t\tSet window title.\r\n\ /i\tStart as tray icon.\r\n\ /o\tKeep window on top.\r\n\ diff --git a/language/np3_pt_br/strings_pt_br.rc b/language/np3_pt_br/strings_pt_br.rc index 4845d42e4..f9531c9a0 100644 --- a/language/np3_pt_br/strings_pt_br.rc +++ b/language/np3_pt_br/strings_pt_br.rc @@ -316,7 +316,7 @@ Opções:\r\n\ /n\tSempre abre uma nova janela (/ns instância de único arquivo).\r\n\ /r\tReusa a janela (/rs instância de único arquivo).\r\n\ /p\tDefine a posição e o tamanho da janela (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tou /p ,,,, [all integers].\r\n\ +\tou /p ,,,[,,] [all integers].\r\n\ /t\tDefine o título da janela.\r\n\ /i\tInicia como ícone na área de notificação.\r\n\ /o\tMantém a janela sobre as outras.\r\n\ diff --git a/language/np3_pt_pt/strings_pt_pt.rc b/language/np3_pt_pt/strings_pt_pt.rc index 9b359e628..ada54f2ac 100644 --- a/language/np3_pt_pt/strings_pt_pt.rc +++ b/language/np3_pt_pt/strings_pt_pt.rc @@ -316,7 +316,7 @@ Opções:\r\n\ /n\tAbre sempre uma nova janela (/ns instância de único ficheiro).\r\n\ /r\tReutiliza a janela (/rs instância de único ficheiro).\r\n\ /p\tDefine tamanho e posição da janela (/p0, /ps, /pf,l,t,r,b,m) ou /p\r\n\ -\t,,,, [todos inteiros].\r\n\ +\t,,,[,,] [todos inteiros].\r\n\ /t\tDefine título da janela.\r\n\ /i\tInicia como ícone na área de notificação.\r\n\ /o\tMantém a janela sempre visível.\r\n\ diff --git a/language/np3_ru_ru/strings_ru_ru.rc b/language/np3_ru_ru/strings_ru_ru.rc index c20957a9f..181954924 100644 --- a/language/np3_ru_ru/strings_ru_ru.rc +++ b/language/np3_ru_ru/strings_ru_ru.rc @@ -316,7 +316,7 @@ Notepad3 [/?] [...[Кодировка]] [...[Окончания строк]] [/e /n\tВсегда открывать новое окно (/ns один экземпляр файла).\r\n\ /r\tПереиспользовать окно (/rs один экземпляр файла).\r\n\ /p\tЗадать положение и размер окна (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tили /p ,,,, [целые числа].\r\n\ +\tили /p ,,,[,,] [целые числа].\r\n\ /t\tЗадать заголовок окна.\r\n\ /i\tЗапустить иконкой в области уведомлений.\r\n\ /o\tПоверх других окон.\r\n\ diff --git a/language/np3_sk_sk/strings_sk_sk.rc b/language/np3_sk_sk/strings_sk_sk.rc index 0c94aabb6..db419f38c 100644 --- a/language/np3_sk_sk/strings_sk_sk.rc +++ b/language/np3_sk_sk/strings_sk_sk.rc @@ -316,7 +316,7 @@ Možnosti:\r\n\ /n\tVždy otvoriť nové okno (/ns inštancia jedného súboru).\r\n\ /r\tOpätovné použitie okna (/rs inštancia jedného súboru).\r\n\ /p\tNastavenie polohy a veľkosti okna (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\talebo /p ,,<šírka>,, [všetky čísla celé].\r\n\ +\talebo /p ,,<šírka>,[,,] [všetky čísla celé].\r\n\ /t\tNastavenie titulku okna.\r\n\ /i\tZačať ako ikona na paneli úloh.\r\n\ /o\tPonechanie okna vždy na vrchu.\r\n\ diff --git a/language/np3_sv_se/strings_sv_se.rc b/language/np3_sv_se/strings_sv_se.rc index 8b222256c..d9ebcfcac 100644 --- a/language/np3_sv_se/strings_sv_se.rc +++ b/language/np3_sv_se/strings_sv_se.rc @@ -316,7 +316,7 @@ Tillval:\r\n\ /n\tÖppna alltid nytt fönster (/ns enkel filinstans).\r\n\ /r\tÅteranvänd fönster (/rs enkel filinstans).\r\n\ /p\tAnge fönsterposition och storlek (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\teller /p ,,,, [alla heltal].\r\n\ +\teller /p ,,,[,,] [alla heltal].\r\n\ /t\tAnge fönstertitel.\r\n\ /i\tStarta som ikon i verktygsfältet.\r\n\ /o\tVisa alltid fönstret överst.\r\n\ diff --git a/language/np3_tr_tr/strings_tr_tr.rc b/language/np3_tr_tr/strings_tr_tr.rc index 042b2ca37..ea7da5f00 100644 --- a/language/np3_tr_tr/strings_tr_tr.rc +++ b/language/np3_tr_tr/strings_tr_tr.rc @@ -316,7 +316,7 @@ Seçenekler:\r\n\ /n\tHer zaman yeni pencerede açar (/ns tek dosya kopyası).\r\n\ /r\tPencereyi yeniden kullanır (/rs tek dosya kopyası).\r\n\ /p\tPencere konumunu ve boyutunu ayarlar (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,, [tümü tam sayı].\r\n\ +\tor /p ,,,[,,] [tümü tam sayı].\r\n\ /t\tPencere başlığını ayarlar.\r\n\ /i\tSistem tepsisinde başlatır.\r\n\ /o\tPencereyi üste sabitler.\r\n\ diff --git a/language/np3_vi_vn/strings_vi_vn.rc b/language/np3_vi_vn/strings_vi_vn.rc index a4b6dc768..13825b094 100644 --- a/language/np3_vi_vn/strings_vi_vn.rc +++ b/language/np3_vi_vn/strings_vi_vn.rc @@ -316,7 +316,7 @@ Options:\r\n\ /n\tAlways open a new window (/ns single file instance).\r\n\ /r\tReuse window (/rs single file instance).\r\n\ /p\tSet window position and size (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,, [all integers].\r\n\ +\tor /p ,,,[,,] [all integers].\r\n\ /t\tSet window title.\r\n\ /i\tStart as tray icon.\r\n\ /o\tKeep window on top.\r\n\ diff --git a/language/np3_zh_cn/strings_zh_cn.rc b/language/np3_zh_cn/strings_zh_cn.rc index 18722bb07..e230b91da 100644 --- a/language/np3_zh_cn/strings_zh_cn.rc +++ b/language/np3_zh_cn/strings_zh_cn.rc @@ -316,7 +316,7 @@ Notepad3 [/?] [...[编码]] [...[换行符模式]] [/e] [/g] [/m] [/l]\r\n\ /n\t总是打开新窗口(/ns 对于每个文件只允许打开一个实例)。\r\n\ /r\t重用已存在的窗口(/rs 对于每个文件只允许打开一个实例)。\r\n\ /p\t设置窗口位置和大小(/p0, /ps, /pf,左,上,宽,高,最大化)\r\n\ -\t或 /p <左>,<上>,<宽>,<高>,<最大化> [均为整数]。\r\n\ +\t或 /p <左>,<上>,<宽>,<高>[,,<最大化>] [均为整数]。\r\n\ /t\t设置窗口标题。\r\n\ /i\t以托盘图标状态启动。\r\n\ /o\t窗口置顶。\r\n\ diff --git a/language/np3_zh_tw/strings_zh_tw.rc b/language/np3_zh_tw/strings_zh_tw.rc index deb4aa730..1558a9d1e 100644 --- a/language/np3_zh_tw/strings_zh_tw.rc +++ b/language/np3_zh_tw/strings_zh_tw.rc @@ -316,7 +316,7 @@ Notepad3 [/?] [...[編碼]] [...[分行符號模式]] [/e] [/g] [/m] [/l]\r\n\ /n\t總是開啟新視窗(/ns 對於每個檔案只允許開啟一個實例)。\r\n\ /r\t重新使用已存在的視窗(/rs 對於每個檔案只允許開啟一個實例)。\r\n\ /p\t設定視窗位置和大小(/p0, /ps, /pf,左,上,寬,高,最大化)\r\n\ -\t或 /p <左>,<上>,<寬>,<高>,<最大化> [均為整數]。\r\n\ +\t或 /p <左>,<上>,<寬>,<高>[,,<最大化>] [均為整數]。\r\n\ /t\t設定視窗標題。\r\n\ /i\t以系統匣圖示狀態啟動。\r\n\ /o\t視窗置頂。\r\n\ From 3092c0cfe1129438539d913a2080e176444e38ba Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?VenusGirl=E2=9D=A4?= <53147200+VenusGirl@users.noreply.github.com> Date: Fri, 30 Dec 2022 05:10:32 +0900 Subject: [PATCH 4/6] Update strings_ko_kr.rc --- language/np3_ko_kr/strings_ko_kr.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/np3_ko_kr/strings_ko_kr.rc b/language/np3_ko_kr/strings_ko_kr.rc index be9681abe..5d30aa555 100644 --- a/language/np3_ko_kr/strings_ko_kr.rc +++ b/language/np3_ko_kr/strings_ko_kr.rc @@ -316,7 +316,7 @@ Notepad3 [/?] [...[인코딩]] [...[줄 끝 모드]] [/e] [/g] [/m] [/l]\r\n\ /n\t항상 새 창을 엽니다 (/ns 단일 파일 인스턴스).\r\n\ /r\t창을 재사용합니다 (/rs 단일 파일 인스턴스).\r\n\ /p\t창 위치와 크기 지정 (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\t또는 /p <왼쪽>,<상단>,<너비>,<높이>[,,] [모두 정수].\r\n\ +\t또는 /p <왼쪽>,<상단>,<너비>,<높이>[,,<최대>] [모두 정수].\r\n\ /t\t창 제목을 설정합니다.\r\n\ /i\t트레이 아이콘으로 시작합니다.\r\n\ /o\t창을 맨 위에 둡니다.\r\n\ From f5e2242be44a679c3e20f4d424161ab8351d16dd Mon Sep 17 00:00:00 2001 From: Matteo Nigro <111676425+Matteo-Nigro@users.noreply.github.com> Date: Thu, 29 Dec 2022 23:07:48 +0100 Subject: [PATCH 5/6] Translated forgotten strings --- language/np3_it_it/strings_it_it.rc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/language/np3_it_it/strings_it_it.rc b/language/np3_it_it/strings_it_it.rc index 11307085c..cb3e3ce18 100644 --- a/language/np3_it_it/strings_it_it.rc +++ b/language/np3_it_it/strings_it_it.rc @@ -316,7 +316,7 @@ Opzioni:\r\n\ /n\tApri sempre una nuova finestra (/ns istanza singola).\r\n\ /r\tRiutilizza finestra (/rs istanza singola).\r\n\ /p\tImposta posizione e dimensione della finestra (/p0, /ps, /pf,l,t,r,b,m)\r\n\ -\tor /p ,,,[,,] [numeri interi].\r\n\ +\to /p ,,,[,,] [numeri interi].\r\n\ /t\tImposta titolo della finestra.\r\n\ /i\tAvvia come icona nell'area di notifica'.\r\n\ /o\tMantieni finestra in primo piano.\r\n\ From fadaa5c6349c56589e095b9391d7d421d5859229 Mon Sep 17 00:00:00 2001 From: "METANEOCORTEX\\Kotti" Date: Fri, 30 Dec 2022 01:30:26 +0100 Subject: [PATCH 6/6] +fix: minor bugs related to new feature Change-History +chg: Lexer Registry-Files: split string and GUID String coloring --- language/common_res.h | 2 + language/np3_de_de/lexer_de_de.rc | 1 + language/np3_de_de/strings_de_de.rc | 5 ++- language/np3_en_us/lexer_en_us.rc | 1 + language/np3_en_us/strings_en_us.rc | 1 + res/StdDarkModeScheme.ini | 3 +- src/Config/Config.cpp | 3 +- src/Edit.c | 10 +++-- src/Helpers.c | 14 +++---- src/Notepad3.c | 61 ++++++++++++++++++++++------- src/SciCall.h | 10 +++-- src/StyleLexers/styleLexRegistry.c | 6 ++- src/Styles.c | 2 +- src/TypeDefs.h | 14 ------- 14 files changed, 80 insertions(+), 53 deletions(-) diff --git a/language/common_res.h b/language/common_res.h index 2f1d33073..01962494e 100644 --- a/language/common_res.h +++ b/language/common_res.h @@ -182,6 +182,7 @@ #define IDS_MUI_SELRECTORMULTI 14021 #define IDS_MUI_INIFILE_READONLY 14022 #define IDS_MUI_DOCUMENT_READONLY 14023 +#define IDS_MUI_ASK_CLEAR_UNDO 14024 #define IDS_MUI_ASK_SAVE 15000 #define IDS_MUI_ASK_REVERT 15001 @@ -1284,6 +1285,7 @@ #define IDS_LEX_2ND_CH_REV_TO_ORG 63395 #define IDS_LEX_2ND_CH_REV_TO_MOD 63396 #define IDS_LEX_STR_63397 63397 +#define IDS_LEX_STR_63398 63398 #define IDS_LEX_CSV_COL_0 63490 diff --git a/language/np3_de_de/lexer_de_de.rc b/language/np3_de_de/lexer_de_de.rc index b7cd092b8..5b3f5d89d 100644 --- a/language/np3_de_de/lexer_de_de.rc +++ b/language/np3_de_de/lexer_de_de.rc @@ -496,6 +496,7 @@ BEGIN IDS_LEX_STR_63387 "Symbol Operator" IDS_LEX_STR_63388 "String EOL" IDS_LEX_STR_63397 "Backticks" + IDS_LEX_STR_63398 "GUID String" END STRINGTABLE diff --git a/language/np3_de_de/strings_de_de.rc b/language/np3_de_de/strings_de_de.rc index 2df2f8989..e9fb66d9d 100644 --- a/language/np3_de_de/strings_de_de.rc +++ b/language/np3_de_de/strings_de_de.rc @@ -172,8 +172,9 @@ BEGIN IDS_MUI_FIND_WRAPRE "Der Anfang des Dokumentes wurde erreicht, Rückwärtssuche vom Ende her weiter führen." IDS_MUI_NOTFOUND "Der gegebene Suchbegriff führte zu keiner passenden Textstelle." IDS_MUI_REPLCOUNT "%s Fundstelle(n) des gegebenen Suchbegriffs wurde(n) ersetzt." - IDS_MUI_ASK_ENCODING "Der Wechsel zwischen verschiedenen Codierungen kann die Ersetzung nicht unterstützter Zeichen mit voreingestellten Zeichen zur folge haben, wobei die Historie gelöscht wird. Weiter machen?" - IDS_MUI_ASK_ENCODING2 "Du bist dabei die Codierung eines leeren Dokumentes zu ändern. Beachte bitte, daß dabei die Historie gelöscht wird, da diese nicht mit der neuen Codierung synchronisiert werden kann. Weiter machen?" + IDS_MUI_ASK_ENCODING "Der Wechsel zwischen verschiedenen Codierungen kann die Ersetzung nicht unterstützter Zeichen mit voreingestellten Zeichen zur folge haben, wobei die Undo-Historie gelöscht wird. Weiter machen?" + IDS_MUI_ASK_ENCODING2 "Du bist dabei die Codierung eines leeren Dokumentes zu ändern. Beachte bitte, daß dabei die Undo-Historie gelöscht wird, da diese nicht mit der neuen Codierung synchronisiert werden kann. Weiter machen?" + IDS_MUI_ASK_CLEAR_UNDO "Diese Operation wird die Undo-History löschen. Weiter machen?" IDS_MUI_READONLY_SAVE """%s"" ist schreibgeschützt. Dokument unter einem anderen Dateipfad speichern?" IDS_MUI_FILECHANGENOTIFY "Die geladene Datei wurde durch ein anderes Programm auf dem Datenträger verändert. Neu laden?" diff --git a/language/np3_en_us/lexer_en_us.rc b/language/np3_en_us/lexer_en_us.rc index e220b3016..8b1078b02 100644 --- a/language/np3_en_us/lexer_en_us.rc +++ b/language/np3_en_us/lexer_en_us.rc @@ -496,6 +496,7 @@ BEGIN IDS_LEX_STR_63387 "Symbol Operator" IDS_LEX_STR_63388 "String EOL" IDS_LEX_STR_63397 "Backticks" + IDS_LEX_STR_63398 "GUID String" END STRINGTABLE diff --git a/language/np3_en_us/strings_en_us.rc b/language/np3_en_us/strings_en_us.rc index 28117e04c..b83367750 100644 --- a/language/np3_en_us/strings_en_us.rc +++ b/language/np3_en_us/strings_en_us.rc @@ -174,6 +174,7 @@ BEGIN IDS_MUI_REPLCOUNT "%s occurrence(s) of specified search pattern replaced." IDS_MUI_ASK_ENCODING "Switching the file encoding from one encoding to another may replace unsupported text with default characters, and the undo history will be cleared. Continue?" IDS_MUI_ASK_ENCODING2 "You are about to change the encoding of an empty file. Note that this will clear the undo history, as it can't be synchronized with the new encoding. Continue?" + IDS_MUI_ASK_CLEAR_UNDO "This operation will clear the undo history. Continue?" IDS_MUI_READONLY_SAVE """%s"" is read only. Save to a different file?" IDS_MUI_FILECHANGENOTIFY "The current file has been modified by an external program. Reload?" diff --git a/res/StdDarkModeScheme.ini b/res/StdDarkModeScheme.ini index e398509e0..f1ebb8877 100644 --- a/res/StdDarkModeScheme.ini +++ b/res/StdDarkModeScheme.ini @@ -505,12 +505,13 @@ Function Name=fore:#F988F9 Class Name=fore:#F988F9 [Registry Files] Comment=fore:#70F76D -String=fore:#62F760 +String=fore:#99004D Value Type=bold; fore:#B0D1F7 Hex=fore:#EF7478 Added Key=bold; fore:#DEDEDE; back:#B8430A; eolfilled Deleted Key=fore:#F20C0D Escaped=bold; fore:#A4B4B4 +GUID String=fore:#C58D25 GUID in Key Path=fore:#E6C07B Parameter=fore:#79EDDB Operator=bold diff --git a/src/Config/Config.cpp b/src/Config/Config.cpp index 87f5db3b4..98e0b9cef 100644 --- a/src/Config/Config.cpp +++ b/src/Config/Config.cpp @@ -1526,8 +1526,7 @@ void LoadSettings() GET_BOOL_VALUE_FROM_INISECTION(AutoCloseTags, false); GET_BOOL_VALUE_FROM_INISECTION(AutoCloseBrackets, false); GET_INT_VALUE_FROM_INISECTION(HighlightCurrentLine, 1, 0, 2); - GET_INT_VALUE_FROM_INISECTION(ChangeHistoryMode, ChgHist_ON | ChgHist_MARGIN, ChgHist_NONE, ChgHist_ALL); - GET_BOOL_VALUE_FROM_INISECTION(ChangeHistoryMargin, true); + GET_INT_VALUE_FROM_INISECTION(ChangeHistoryMode, SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_MARKERS, 0, 7); GET_BOOL_VALUE_FROM_INISECTION(HyperlinkHotspot, true); GET_BOOL_VALUE_FROM_INISECTION(ShowHypLnkToolTip, false); GET_INT_VALUE_FROM_INISECTION(ColorDefHotspot, 2, 0, 3); diff --git a/src/Edit.c b/src/Edit.c index 326cea1ba..6a003599c 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -5883,7 +5883,7 @@ static char* _GetReplaceString(HWND hwnd, CLPCEDITFINDREPLACE lpefr, int* iRepla if (Settings.ReplaceByClipboardTag && (StringCchCompareXW(StrgGet(lpefr->chReplaceTemplate), L"^c")) == 0) { - *iReplaceMsg = SCI_REPLACETARGET; + *iReplaceMsg = SciCall_GetChangeHistory() ? SCI_REPLACETARGETMINIMAL : SCI_REPLACETARGET; pszReplace = EditGetClipboardText(hwnd, true, NULL, NULL); } else { @@ -7329,7 +7329,7 @@ void EditSelectionMultiSelectAllEx(HWND hwnd, CLPCEDITFINDREPLACE edFndRpl) // bool EditReplace(HWND hwnd, LPEDITFINDREPLACE lpefr) { - int iReplaceMsg = SCI_REPLACETARGET; + int iReplaceMsg = SciCall_GetChangeHistory() ? SCI_REPLACETARGETMINIMAL : SCI_REPLACETARGET; DocPos const selBeg = SciCall_GetSelectionStart(); DocPos const selEnd = SciCall_GetSelectionEnd(); @@ -7413,11 +7413,13 @@ int EditReplaceAllInRange(HWND hwnd, LPEDITFINDREPLACE lpefr, DocPos iStartPos, bool const bRegexStartOfLine = bIsRegExpr && (wchFind[0] == L'^'); // SCI_REPLACETARGET or SCI_REPLACETARGETRE - int iReplaceMsg = SCI_REPLACETARGET; + int iReplaceMsg = SciCall_GetChangeHistory() ? SCI_REPLACETARGETMINIMAL : SCI_REPLACETARGET; char* const pszReplace = _GetReplaceString(hwnd, lpefr, &iReplaceMsg); if (!pszReplace) { return -1; // recoding of clipboard canceled } + bool const bMinRepl = (SCI_REPLACETARGETMINIMAL == iReplaceMsg); + DocPos const pszReplaceLen = strlen(pszReplace); DocPos const _saveTargetBeg_ = SciCall_GetTargetStart(); DocPos const _saveTargetEnd_ = SciCall_GetTargetEnd(); @@ -7444,7 +7446,7 @@ int EditReplaceAllInRange(HWND hwnd, LPEDITFINDREPLACE lpefr, DocPos iStartPos, if (bRegexStartOfLine && (Sci_GetLineStartPosition(iStartPos) == iStartPos) && (SciCall_GetLineCount() == lnCnt)) { iStartPos = SciCall_PositionAfter(iStartPos); } - iEndPos += replLen - (end - iPos); + iEndPos += (bMinRepl ? pszReplaceLen : replLen) - (end - iPos); start = iStartPos; end = iEndPos; iPos = (start <= end) ? _FindInTarget(wchFind, sFlags, &start, &end, true, FRMOD_NORM) : -1LL; diff --git a/src/Helpers.c b/src/Helpers.c index 345126497..4c4c89496 100644 --- a/src/Helpers.c +++ b/src/Helpers.c @@ -1632,7 +1632,7 @@ static int _CheckRegExReplTargetA(LPSTR pszInput) ++pszInput; } } - return SCI_REPLACETARGET; + return SciCall_GetChangeHistory() ? SCI_REPLACETARGETMINIMAL : SCI_REPLACETARGET; } static int _CheckRegExReplTargetW(LPWSTR pszInput) @@ -1652,7 +1652,7 @@ static int _CheckRegExReplTargetW(LPWSTR pszInput) ++pszInput; } } - return SCI_REPLACETARGET; + return SciCall_GetChangeHistory() ? SCI_REPLACETARGETMINIMAL : SCI_REPLACETARGET; } @@ -1663,12 +1663,11 @@ void TransformBackslashesA(LPSTR pszInput, bool bRegEx, UINT cpEdit, int* iRepla UnSlashLowOctalA(pszInput); *iReplaceMsg = _CheckRegExReplTargetA(pszInput); } else { - *iReplaceMsg = SCI_REPLACETARGET; // uses SCI std replacement + *iReplaceMsg = SciCall_GetChangeHistory() ? SCI_REPLACETARGETMINIMAL : SCI_REPLACETARGET; } } - bool const bStdReplace = (iReplaceMsg && (SCI_REPLACETARGET == *iReplaceMsg)); - // regex handles backslashes itself + bool const bStdReplace = (iReplaceMsg && (SCI_REPLACETARGETRE != *iReplaceMsg)); if (!bRegEx || bStdReplace) { UnSlashA(pszInput, cpEdit); } @@ -1681,12 +1680,11 @@ void TransformBackslashesW(LPWSTR pszInput, bool bRegEx, UINT cpEdit, int* iRepl UnSlashLowOctalW(pszInput); *iReplaceMsg = _CheckRegExReplTargetW(pszInput); } else { - *iReplaceMsg = SCI_REPLACETARGET; // uses SCI std replacement + *iReplaceMsg = SciCall_GetChangeHistory() ? SCI_REPLACETARGETMINIMAL : SCI_REPLACETARGET; } } - bool const bStdReplace = (iReplaceMsg && (SCI_REPLACETARGET == *iReplaceMsg)); - // regex handles backslashes itself + bool const bStdReplace = (iReplaceMsg && (SCI_REPLACETARGETRE != *iReplaceMsg)); if (!bRegEx || bStdReplace) { UnSlashW(pszInput, cpEdit); } diff --git a/src/Notepad3.c b/src/Notepad3.c index 66e1c2513..762b2b498 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -4256,10 +4256,11 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) CheckCmd(hmenu, IDM_VIEW_HYPERLINKHOTSPOTS, Settings.HyperlinkHotspot); - int const chState = Settings.ChangeHistoryMode; + int const chState = SciCall_GetChangeHistory(); + assert(chState == Settings.ChangeHistoryMode); i = IDM_VIEW_CHGHIST_NONE; - i += ((chState & ChgHist_ON) && (chState & ChgHist_MARGIN)) ? 1 : 0; - i += ((chState & ChgHist_ON) && (chState & ChgHist_DOCTXT)) ? 2 : 0; + i += (chState & SC_CHANGE_HISTORY_MARKERS) ? 1 : 0; + i += (chState & SC_CHANGE_HISTORY_INDICATORS) ? 2 : 0; CheckMenuRadioItem(hmenu, IDM_VIEW_CHGHIST_NONE, IDM_VIEW_CHGHIST_ALL, i, MF_BYCOMMAND); CheckCmdPos(GetSubMenu(GetMenu(Globals.hwndMain), 2), 8, (i != IDM_VIEW_CHGHIST_NONE)); @@ -4441,6 +4442,31 @@ LRESULT MsgKeyDown(HWND hwnd, WPARAM wParam, LPARAM lParam) #endif +//============================================================================= +// +// _ApplyChangeHistoryMode() - Handles Change-History Settings +// +static void _ApplyChangeHistoryMode() +{ + int const iChgHist = SciCall_GetChangeHistory(); + if (iChgHist == Settings.ChangeHistoryMode) { return; } + if ((!iChgHist && Settings.ChangeHistoryMode) || !Settings.ChangeHistoryMode) { + if (IsYesOkay(InfoBoxLng(MB_YESNO | MB_ICONWARNING, L"AllowClearUndoHistory", IDS_MUI_ASK_CLEAR_UNDO))) { + UndoRedoReset(); + } + else { + Settings.ChangeHistoryMode = iChgHist; + return; + } + } + else { + SciCall_SetChangeHistory(Settings.ChangeHistoryMode); + } + Style_UpdateChangeHistoryMargin(Globals.hwndEdit); + UpdateMargins(true); +} + + //============================================================================= // // MsgCommand() - Handles WM_COMMAND @@ -6045,33 +6071,38 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) case IDM_VIEW_CHGHIST_DOCTXT: case IDM_VIEW_CHGHIST_ALL: { int const set = iLoWParam - IDM_VIEW_CHGHIST_NONE; - int const chgHistState = SciCall_GetChangeHistory() & ChgHist_ON; switch (set) { case 0: - Settings.ChangeHistoryMode = chgHistState & ~(ChgHist_MARGIN | ChgHist_DOCTXT); + Settings.ChangeHistoryMode = SC_CHANGE_HISTORY_DISABLED; break; - case 1: - Settings.ChangeHistoryMode = (chgHistState | ChgHist_MARGIN) & ~ChgHist_DOCTXT; + case 1: + Settings.ChangeHistoryMode = SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_MARKERS; break; case 2: - Settings.ChangeHistoryMode = (chgHistState | ChgHist_DOCTXT) & ~ChgHist_MARGIN; + Settings.ChangeHistoryMode = SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_INDICATORS; break; case 3: - Settings.ChangeHistoryMode = chgHistState | (ChgHist_MARGIN | ChgHist_DOCTXT); + Settings.ChangeHistoryMode = SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_INDICATORS | SC_CHANGE_HISTORY_MARKERS; break; default: break; } - SciCall_SetChangeHistory(Settings.ChangeHistoryMode); - Style_UpdateChangeHistoryMargin(Globals.hwndEdit); - UpdateMargins(true); + _ApplyChangeHistoryMode(); break; } break; case IDM_VIEW_CHGHIST_TOGGLE_MARGIN: - Settings.ChangeHistoryMargin = !Settings.ChangeHistoryMargin; - UpdateMargins(true); + if (Settings.ChangeHistoryMode & SC_CHANGE_HISTORY_MARKERS) { + Settings.ChangeHistoryMode &= ~SC_CHANGE_HISTORY_MARKERS; + if (!(Settings.ChangeHistoryMode & SC_CHANGE_HISTORY_INDICATORS)) { + Settings.ChangeHistoryMode = SC_CHANGE_HISTORY_DISABLED; + } + } + else { + Settings.ChangeHistoryMode |= (SC_CHANGE_HISTORY_ENABLED | SC_CHANGE_HISTORY_MARKERS); + } + _ApplyChangeHistoryMode(); break; case IDM_VIEW_HYPERLINKHOTSPOTS: @@ -10328,7 +10359,7 @@ static void _UndoRedoRecordingStart() SciCall_SetUndoCollection(true); SciCall_EmptyUndoBuffer(); SciCall_SetSavePoint(); - SciCall_SetChangeHistory(SC_CHANGE_HISTORY_ENABLED | Settings.ChangeHistoryMode); + SciCall_SetChangeHistory(Settings.ChangeHistoryMode); UpdateMargins(true); } diff --git a/src/SciCall.h b/src/SciCall.h index cafab7da4..42e29509b 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -911,13 +911,15 @@ inline DocPos Sci_GetSelectionEndEx() inline DocPos Sci_ReplaceTarget(const int mode, const DocPos length, const char* text) { - if (mode == SCI_REPLACETARGETRE) { + switch (mode) { + case SCI_REPLACETARGETRE: return SciCall_ReplaceTargetRe(length, text); - } - if (SciCall_GetChangeHistory() == SC_CHANGE_HISTORY_DISABLED) { + case SCI_REPLACETARGETMINIMAL: + return SciCall_ReplaceTargetMinimal(length, text); + case SCI_REPLACETARGET: + default: return SciCall_ReplaceTarget(length, text); } - return SciCall_ReplaceTargetMinimal(length, text); } // ---------------------------------------------------------------------------- diff --git a/src/StyleLexers/styleLexRegistry.c b/src/StyleLexers/styleLexRegistry.c index 2127b2600..fb7f6b470 100644 --- a/src/StyleLexers/styleLexRegistry.c +++ b/src/StyleLexers/styleLexRegistry.c @@ -12,15 +12,17 @@ EDITLEXER lexRegistry = //{ {SCE_REG_DEFAULT}, IDS_LEX_STR_63126, L"Default", L"", L"" }, { {SCE_REG_COMMENT}, IDS_LEX_STR_63127, L"Comment", L"fore:#008800", L"" }, { {SCE_REG_VALUENAME}, IDS_LEX_STR_63285, L"Value Name", L"", L"" }, - { {MULTI_STYLE(SCE_REG_STRING,SCE_REG_STRING_GUID,0,0)}, IDS_LEX_STR_63131, L"String", L"fore:#008000", L"" }, + { {SCE_REG_STRING}, IDS_LEX_STR_63131, L"String", L"fore:#99004D", L"" }, { {SCE_REG_VALUETYPE}, IDS_LEX_STR_63286, L"Value Type", L"bold; fore:#00007F", L"" }, { {SCE_REG_HEXDIGIT}, IDS_LEX_STR_63287, L"Hex", L"fore:#7F0B0C", L"" }, { {SCE_REG_ADDEDKEY}, IDS_LEX_STR_63288, L"Added Key", L"bold; fore:#000000; back:#FF8040; eolfilled", L"" }, //fore:#530155 { {SCE_REG_DELETEDKEY}, IDS_LEX_STR_63289, L"Deleted Key", L"fore:#FF0000", L"" }, { {SCE_REG_ESCAPED}, IDS_LEX_STR_63290, L"Escaped", L"bold; fore:#7D8187", L"" }, - { {SCE_REG_KEYPATH_GUID}, IDS_LEX_STR_63291, L"GUID in Key Path", L"fore:#7B5F15", L"" }, + { {SCE_REG_STRING_GUID}, IDS_LEX_STR_63398, L"GUID String", L"fore:#C58D25", L"" }, + { {SCE_REG_KEYPATH_GUID}, IDS_LEX_STR_63291, L"GUID in Key Path", L"fore:#009F9F", L"" }, { {SCE_REG_PARAMETER}, IDS_LEX_STR_63281, L"Parameter", L"fore:#0B6561", L"" }, { {SCE_REG_OPERATOR}, IDS_LEX_STR_63132, L"Operator", L"bold", L"" }, EDITLEXER_SENTINEL } }; + diff --git a/src/Styles.c b/src/Styles.c index 873bb6a20..abbdbc9f8 100644 --- a/src/Styles.c +++ b/src/Styles.c @@ -2053,7 +2053,7 @@ void Style_UpdateBookmarkMargin(HWND hwnd) // void Style_UpdateChangeHistoryMargin(HWND hwnd) { - bool const bShowMargin = Settings.ChangeHistoryMargin && ((Settings.ChangeHistoryMode & ChgHist_ON) && (Settings.ChangeHistoryMode & ChgHist_MARGIN)); + bool const bShowMargin = (Settings.ChangeHistoryMode & SC_CHANGE_HISTORY_MARKERS); SciCall_SetMarginWidthN(MARGIN_SCI_CHGHIST, (bShowMargin ? _GetMarkerMarginWidth(hwnd, 0.7f) : 0)); } diff --git a/src/TypeDefs.h b/src/TypeDefs.h index 9aa2c6dd3..48112d03b 100644 --- a/src/TypeDefs.h +++ b/src/TypeDefs.h @@ -440,19 +440,6 @@ typedef enum AutoSaveBackupOptions { //============================================================================= -typedef enum ChangeHistory { - - ChgHist_NONE = SC_CHANGE_HISTORY_DISABLED, - ChgHist_ON = SC_CHANGE_HISTORY_ENABLED, - ChgHist_MARGIN = SC_CHANGE_HISTORY_MARKERS, - ChgHist_DOCTXT = SC_CHANGE_HISTORY_INDICATORS, - - ChgHist_ALL = ChgHist_ON | ChgHist_MARGIN | ChgHist_DOCTXT - -} ChangeHistory; - -//============================================================================= - typedef struct CONSTANTS_T { int const StdDefaultLexerID; // Pure Text Files @@ -587,7 +574,6 @@ typedef struct SETTINGS_T { bool AutoCloseBrackets; int HighlightCurrentLine; int ChangeHistoryMode; - bool ChangeHistoryMargin; bool HyperlinkHotspot; int ColorDefHotspot; bool ScrollPastEOF;