+ chg: On FileRevert : if original encoding has been changed, revert file while ignoring cmd-line encoding define or file history stored encoding

This commit is contained in:
Rainer Kottenhoff 2018-08-16 10:50:45 +02:00
parent 7e97943fb8
commit 6c4d844e2f
3 changed files with 13 additions and 11 deletions

View File

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

View File

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

View File

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