diff --git a/src/Edit.c b/src/Edit.c index 745fb2009..14e740aa7 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -1026,12 +1026,8 @@ bool EditLoadFile( size_t const cbNbytes4Analysis = (cbData < 200000L) ? cbData : 200000L; - int const iFileEncWeak = Encoding_SrcWeak(CPI_GET); - - int iForcedEncoding = bForceLoadASCIIasUTF8 ? CPI_UTF8 : Encoding_SrcCmdLn(CPI_GET); - int iPreferedEncoding = (bPreferOEM) ? g_DOSEncoding : - ((bUseDefaultForFileEncoding || (cbNbytes4Analysis < 1)) ? g_iDefaultNewFileEncoding : CPI_ANSI_DEFAULT); + ((bUseDefaultForFileEncoding || (cbNbytes4Analysis == 0)) ? g_iDefaultNewFileEncoding : CPI_ANSI_DEFAULT); // -------------------------------------------------------------------------- bool bIsReliable = false; @@ -1042,12 +1038,15 @@ bool EditLoadFile( } // -------------------------------------------------------------------------- + int iForcedEncoding = bForceLoadASCIIasUTF8 ? CPI_UTF8 : Encoding_SrcCmdLn(CPI_GET); + if (g_bForceCompEncDetection && !Encoding_IsNONE(iAnalyzedEncoding)) { iForcedEncoding = iAnalyzedEncoding; } // -------------------------------------------------------------------------- // choose best encoding guess + int const iFileEncWeak = Encoding_SrcWeak(CPI_GET); if (!Encoding_IsNONE(iForcedEncoding)) iPreferedEncoding = iForcedEncoding; else if (Encoding_IsUNICODE(iAnalyzedEncoding) && !bSkipUTFDetection) @@ -1056,8 +1055,8 @@ bool EditLoadFile( iPreferedEncoding = iFileEncWeak; else if (!Encoding_IsNONE(iAnalyzedEncoding) && bIsReliable) iPreferedEncoding = iAnalyzedEncoding; - //else - //iPreferedEncoding = iPreferedEncoding; + else if (Encoding_IsNONE(iPreferedEncoding)) + iPreferedEncoding = CPI_ANSI_DEFAULT; // -------------------------------------------------------------------------- diff --git a/src/Notepad3.c b/src/Notepad3.c index 1e3c095e2..2813f7bff 100644 --- a/src/Notepad3.c +++ b/src/Notepad3.c @@ -2599,7 +2599,7 @@ LRESULT MsgChangeNotify(HWND hwnd, WPARAM wParam, LPARAM lParam) if ((g_iFileWatchingMode == 2 && !IsDocumentModified && !Encoding_HasChanged(CPI_GET)) || MsgBoxLng(MBYESNOWARN,IDS_MUI_FILECHANGENOTIFY) == IDYES) { - FileRevert(g_wchCurFile); + FileRevert(g_wchCurFile, Encoding_HasChanged(CPI_GET)); if (g_bChasingDocTail) { @@ -3070,7 +3070,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam) if ((IsDocumentModified || Encoding_HasChanged(CPI_GET)) && MsgBoxLng(MBYESNO,IDS_MUI_ASK_REVERT) != IDYES) { break; } - FileRevert(g_wchCurFile); + FileRevert(g_wchCurFile, Encoding_HasChanged(CPI_GET)); break; @@ -9219,7 +9219,7 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect, // FileRevert() // // -bool FileRevert(LPCWSTR szFileName) +bool FileRevert(LPCWSTR szFileName, bool bIgnoreCmdLnEnc) { if (StringCchLen(szFileName, MAX_PATH) != 0) { @@ -9235,6 +9235,9 @@ bool FileRevert(LPCWSTR szFileName) const int iXOffset = SciCall_GetXoffset(); const bool bIsTail = (iCurPos == iAnchorPos) && (iCurrLine >= (SciCall_GetLineCount() - 1)); + if (bIgnoreCmdLnEnc) { + Encoding_SrcCmdLn(CPI_NONE); // ignore history too + } Encoding_SrcWeak(Encoding_Current(CPI_GET)); WCHAR tchFileName2[MAX_PATH] = { L'\0' }; diff --git a/src/Notepad3.h b/src/Notepad3.h index 88710a60e..e373f0fff 100644 --- a/src/Notepad3.h +++ b/src/Notepad3.h @@ -162,7 +162,7 @@ void GetFindPatternMB(LPSTR, size_t); bool FileIO(bool,LPCWSTR,bool,bool,int*,int*,bool*,bool*,bool*,bool*,bool); bool FileLoad(bool,bool,bool,bool,bool,LPCWSTR); -bool FileRevert(LPCWSTR); +bool FileRevert(LPCWSTR,bool); bool FileSave(bool,bool,bool,bool); bool OpenFileDlg(HWND,LPWSTR,int,LPCWSTR); bool SaveFileDlg(HWND,LPWSTR,int,LPCWSTR);