diff --git a/Versions/build.txt b/Versions/build.txt index b8626c4cf..d00491fd7 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -4 +1 diff --git a/Versions/day.txt b/Versions/day.txt index 7536e3d32..54ea97e96 100644 --- a/Versions/day.txt +++ b/Versions/day.txt @@ -1 +1 @@ -309 +310 diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index de063d2cf..f9df86410 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 RC3 diff --git a/src/Dialogs.c b/src/Dialogs.c index cfa36678e..48f69bd15 100644 --- a/src/Dialogs.c +++ b/src/Dialogs.c @@ -1687,10 +1687,7 @@ static INT_PTR CALLBACK FileMRUDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM CheckDlgButton(hwnd, IDC_PRESERVECARET, SetBtn(Settings.PreserveCaretPos)); CheckDlgButton(hwnd, IDC_REMEMBERSEARCHPATTERN, SetBtn(Settings.SaveFindReplace)); - //~if (!Settings.SaveRecentFiles) { - //~ DialogEnableWindow(hwnd,IDC_PRESERVECARET, false); - //~ DialogEnableWindow(hwnd,IDC_REMEMBERSEARCHPATTERN, false); - //~} + DialogEnableControl(hwnd,IDC_PRESERVECARET, Settings.SaveRecentFiles); CenterDlgInParent(hwnd, NULL); } @@ -1913,6 +1910,13 @@ static INT_PTR CALLBACK FileMRUDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM case IDC_FILEMRU: break; + case IDC_SAVEMRU: + { + bool const bSaveMRU = IsButtonChecked(hwnd, IDC_SAVEMRU); + DialogEnableControl(hwnd, IDC_PRESERVECARET, bSaveMRU); + } + break; + case IDOK: case IDC_REMOVE: { diff --git a/src/Encoding.h b/src/Encoding.h index ae12a6b89..774d82c3a 100644 --- a/src/Encoding.h +++ b/src/Encoding.h @@ -184,6 +184,9 @@ typedef struct _enc_det_t } ENC_DET_T; +// 0.0 - 1.0: confidence bonus for local ANSI detection +// 0 = no bonus, 1 = 100% confidence that, if local ANSI is detected, that it is local ANSI code-page +#define LOCAL_ANSI_BONUS_FAC (0.66f) // ~2/3 ENC_DET_T Encoding_DetectEncoding(LPWSTR pszFile, const char* lpData, const size_t cbData, const cpi_enc_t iAnalyzeFallback, diff --git a/src/EncodingDetection.cpp b/src/EncodingDetection.cpp index 2d0c851e8..af08b978d 100644 --- a/src/EncodingDetection.cpp +++ b/src/EncodingDetection.cpp @@ -507,6 +507,10 @@ extern "C" void ChangeEncodingCodePage(const cpi_enc_t cpi, UINT newCP) //============================================================================= +constexpr float clampf(float x, float lower, float upper) { return (x < lower) ? lower : ((x > upper) ? upper : x); } + +//============================================================================= + cpi_enc_t GetUnicodeEncoding(const char* pBuffer, const size_t len, bool* lpbBOM, bool* lpbReverse) { cpi_enc_t iEncoding = CPI_NONE; @@ -782,7 +786,8 @@ cpi_enc_t Encoding_AnalyzeText //~cpiEncoding_CED = AnalyzeText_CED(text, len, encodingHint, &ced_cnf, encodingStrg_CED, MAX_ENC_STRG_LEN); //~if (ced_cnf < 1.0f) //~{ - cpiEncoding_UCD = AnalyzeText_UCHARDET(text, len, encodingHint, &ucd_cnf, encodingStrg_UCD, MAX_ENC_STRG_LEN); + cpiEncoding_UCD = AnalyzeText_UCHARDET(text, len, encodingHint, &ucd_cnf, encodingStrg_UCD, MAX_ENC_STRG_LEN); + ucd_cnf = clampf(ucd_cnf, 0.0f, 1.0f); //~} //~else { //~ cpiEncoding_UCD = CPI_NONE; @@ -791,11 +796,10 @@ cpi_enc_t Encoding_AnalyzeText #endif - float confidence = 0.0f; - float const ucd_confidence = ucd_cnf; - //~float const ced_confidence = ced_cnf; UINT const codePage_UCD = Encoding_GetCodePage(cpiEncoding_UCD); - //~UINT const codePage_CED = Encoding_GetCodePage(cpiEncoding_CED); + // extra bonus, if detected encoding is local codepage + float const bonus = (codePage_UCD == Encoding_GetCodePage(CPI_ANSI_DEFAULT)) ? (1.0f - ucd_cnf) * LOCAL_ANSI_BONUS_FAC : 0.0f; + float const ucd_confidence = clampf(ucd_cnf + bonus, 0.0f, 1.0f); if (Flags.bDevDebugMode) @@ -847,7 +851,7 @@ cpi_enc_t Encoding_AnalyzeText // -------------------------------------------------------------------------- cpi_enc_t iAnalyzedEncoding = cpiEncoding_UCD; - confidence = ucd_confidence; + float confidence = ucd_confidence; /* ~~~ if ((cpiEncoding_UCD == cpiEncoding_CED) && !Encoding_IsNONE(cpiEncoding_UCD)) diff --git a/src/Notepad3.c b/src/Notepad3.c index 2bf3d8ec6..c12e4320b 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -3409,6 +3409,7 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) CheckCmd(hmenu, IDM_VIEW_NOSAVERECENT, Settings.SaveRecentFiles); CheckCmd(hmenu, IDM_VIEW_NOPRESERVECARET, Settings.PreserveCaretPos); + EnableCmd(hmenu, IDM_VIEW_NOPRESERVECARET, Settings.SaveRecentFiles); CheckCmd(hmenu, IDM_VIEW_NOSAVEFINDREPL, Settings.SaveFindReplace); CheckCmd(hmenu, IDM_VIEW_SAVEBEFORERUNNINGTOOLS, Settings.SaveBeforeRunningTools); @@ -3432,13 +3433,6 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam) i = IDM_VIEW_NOESCFUNC; CheckMenuRadioItem(hmenu, IDM_VIEW_NOESCFUNC, IDM_VIEW_ESCEXIT, i, MF_BYCOMMAND); - EnableCmd(hmenu, IDM_VIEW_REUSEWINDOW, i); - EnableCmd(hmenu, IDM_VIEW_STICKYWINPOS, i); - EnableCmd(hmenu, IDM_VIEW_SINGLEFILEINSTANCE, i); - EnableCmd(hmenu, IDM_VIEW_NOSAVERECENT, i); - EnableCmd(hmenu, IDM_VIEW_NOPRESERVECARET, i); - EnableCmd(hmenu, IDM_VIEW_NOSAVEFINDREPL, i); - EnableCmd(hmenu, CMD_WEBACTION1, !se && !mrs && bPosInSel); EnableCmd(hmenu, CMD_WEBACTION2, !se && !mrs && bPosInSel); bool const bIsHLink = (SciCall_IndicatorValueAt(INDIC_NP3_HYPERLINK, iCurPos) > 0); diff --git a/src/VersionEx.h b/src/VersionEx.h index 0a5d0900b..8766ecbbd 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -8,12 +8,12 @@ #define SAPPNAME "Notepad3" #define VERSION_MAJOR 5 #define VERSION_MINOR 20 -#define VERSION_REV 309 -#define VERSION_BUILD 4 +#define VERSION_REV 310 +#define VERSION_BUILD 1 #define SCINTILLA_VER 432 #define ONIGURUMA_REGEX_VER 6.9.4 #define UCHARDET_VER 2018.09.27 #define TINYEXPR_VER 2018.05.11 #define UTHASH_VER 2.1.0 #define VERSION_PATCH RC3 -#define VERSION_COMMIT_ID dkt1-amr +#define VERSION_COMMIT_ID nebukadn