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