diff --git a/src/Dialogs.c b/src/Dialogs.c
index 75563b1aa..0f3308d02 100644
--- a/src/Dialogs.c
+++ b/src/Dialogs.c
@@ -59,6 +59,7 @@ extern WCHAR g_wchAppUserModelID[];
extern DWORD dwLastIOError;
extern BOOL bUseDefaultForFileEncoding;
extern BOOL bSkipUnicodeDetection;
+extern BOOL bSkipANSICodePageDetection;
extern BOOL bLoadASCIIasUTF8;
extern BOOL bLoadNFOasOEM;
extern BOOL bNoEncodingTags;
@@ -2105,6 +2106,9 @@ INT_PTR CALLBACK SelectDefEncodingDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR
if (bSkipUnicodeDetection)
CheckDlgButton(hwnd,IDC_NOUNICODEDETECTION,BST_CHECKED);
+ if (bSkipANSICodePageDetection)
+ CheckDlgButton(hwnd, IDC_NOANSICPDETECTION, BST_CHECKED);
+
if (bLoadASCIIasUTF8)
CheckDlgButton(hwnd,IDC_ASCIIASUTF8,BST_CHECKED);
@@ -2131,6 +2135,7 @@ INT_PTR CALLBACK SelectDefEncodingDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPAR
else {
bUseDefaultForFileEncoding = (IsDlgButtonChecked(hwnd, IDC_USEASREADINGFALLBACK) == BST_CHECKED) ? 1 : 0;
bSkipUnicodeDetection = (IsDlgButtonChecked(hwnd,IDC_NOUNICODEDETECTION) == BST_CHECKED) ? 1 : 0;
+ bSkipANSICodePageDetection = (IsDlgButtonChecked(hwnd, IDC_NOANSICPDETECTION) == BST_CHECKED) ? 1 : 0;
bLoadASCIIasUTF8 = (IsDlgButtonChecked(hwnd,IDC_ASCIIASUTF8) == BST_CHECKED) ? 1 : 0;
bLoadNFOasOEM = (IsDlgButtonChecked(hwnd,IDC_NFOASOEM) == BST_CHECKED) ? 1 : 0;
bNoEncodingTags = (IsDlgButtonChecked(hwnd,IDC_ENCODINGFROMFILEVARS) == BST_CHECKED) ? 1 : 0;
diff --git a/src/Edit.c b/src/Edit.c
index 6291bc960..775632d1d 100644
--- a/src/Edit.c
+++ b/src/Edit.c
@@ -70,7 +70,6 @@ extern UINT cpLastFind;
extern BOOL bReplaceInitialized;
extern BOOL bUseOldStyleBraceMatching;
extern BOOL bUseDefaultForFileEncoding;
-extern BOOL bSkipUnicodeDetection;
extern BOOL bFindReplCopySelOrClip;
static EDITFINDREPLACE efrSave;
@@ -784,12 +783,12 @@ void EditPaste2RectSel(HWND hwnd, char* pText)
//
// EditPasteClipboard()
//
-BOOL EditPasteClipboard(HWND hwnd, BOOL bSwapClipBoard)
+BOOL EditPasteClipboard(HWND hwnd, BOOL bSwapClipBoard, BOOL bSkipUnicodeCheck)
{
int lineCount = 0;
int lenLastLine = 0;
- char* pClip = EditGetClipboardText(hwnd, !bSkipUnicodeDetection, &lineCount, &lenLastLine);
+ char* pClip = EditGetClipboardText(hwnd, !bSkipUnicodeCheck, &lineCount, &lenLastLine);
if (!pClip) {
return FALSE; // recoding canceled
}
@@ -972,7 +971,8 @@ int EditDetectEOLMode(HWND hwnd,char* lpData,DWORD cbData)
BOOL EditLoadFile(
HWND hwnd,
LPCWSTR pszFile,
- BOOL bSkipEncodingDetection,
+ BOOL bSkipUTFDetection,
+ BOOL bSkipANSICPDetection,
int* iEncoding,
int* iEOLMode,
BOOL *pbUnicodeErr,
@@ -1065,7 +1065,7 @@ BOOL EditLoadFile(
const int iForcedEncoding = Encoding_SrcCmdLn(CPI_GET);
const int iFileEncWeak = Encoding_SrcWeak(CPI_GET);
- const int iAnalyzedEncoding = !bSkipEncodingDetection ? Encoding_Analyze(lpData, cbData) : CPI_NONE;
+ const int iAnalyzedEncoding = bSkipANSICPDetection ? CPI_NONE : Encoding_Analyze(lpData, cbData);
// choose best encoding guess
int iPreferedEncoding = (bPreferOEM) ? g_DOSEncoding : (bUseDefaultForFileEncoding ? g_iDefaultNewFileEncoding : CPI_ANSI_DEFAULT);
@@ -1074,6 +1074,8 @@ BOOL EditLoadFile(
iPreferedEncoding = iForcedEncoding;
else if (iFileEncWeak != CPI_NONE)
iPreferedEncoding = iFileEncWeak;
+ else if (Encoding_IsUNICODE(iAnalyzedEncoding) && !bSkipUTFDetection)
+ iPreferedEncoding = iAnalyzedEncoding;
else if (iAnalyzedEncoding != CPI_NONE)
iPreferedEncoding = iAnalyzedEncoding;
@@ -1099,7 +1101,7 @@ BOOL EditLoadFile(
GlobalFree(lpData);
}
// === UNICODE ===
- else if (!bSkipEncodingDetection && //TODO: use Encoding_IsUNICODE(iAnalyzedEncoding) here ???
+ else if (!bSkipUTFDetection && //TODO: use Encoding_IsUNICODE(iAnalyzedEncoding) here ???
(Encoding_IsUNICODE(iForcedEncoding) || (iForcedEncoding == CPI_NONE)) &&
(Encoding_IsUNICODE(iForcedEncoding) || IsUnicode(lpData,cbData,&bBOM,&bReverse)) &&
(Encoding_IsUNICODE(iForcedEncoding) || !IsUTF8Signature(lpData))) // check for UTF-8 signature
@@ -1163,7 +1165,7 @@ BOOL EditLoadFile(
FileVars_Init(lpData,cbData,&fvCurFile);
// === UTF-8 ===
- if (!bSkipEncodingDetection && (Encoding_IsNONE(iForcedEncoding) || Encoding_IsUTF8(iForcedEncoding)) &&
+ if (!bSkipUTFDetection && (Encoding_IsNONE(iForcedEncoding) || Encoding_IsUTF8(iForcedEncoding)) &&
((IsUTF8Signature(lpData) ||
FileVars_IsUTF8(&fvCurFile) ||
(Encoding_IsUTF8(iForcedEncoding) ||
diff --git a/src/Edit.h b/src/Edit.h
index 654a5b40d..083ea56a4 100644
--- a/src/Edit.h
+++ b/src/Edit.h
@@ -68,10 +68,10 @@ char* EditGetClipboardText(HWND,BOOL,int*,int*);
BOOL EditSetClipboardText(HWND, const char*);
BOOL EditClearClipboard(HWND);
void EditPaste2RectSel(HWND,char*);
-BOOL EditPasteClipboard(HWND,BOOL);
+BOOL EditPasteClipboard(HWND,BOOL,BOOL);
BOOL EditCopyAppend(HWND,BOOL);
int EditDetectEOLMode(HWND,char*,DWORD);
-BOOL EditLoadFile(HWND,LPCWSTR,BOOL,int*,int*,BOOL*,BOOL*,BOOL*);
+BOOL EditLoadFile(HWND,LPCWSTR,BOOL,BOOL,int*,int*,BOOL*,BOOL*,BOOL*);
BOOL EditSaveFile(HWND,LPCWSTR,int,BOOL*,BOOL);
void EditInvertCase(HWND);
diff --git a/src/Encoding.c b/src/Encoding.c
index a99b16c91..06109c07f 100644
--- a/src/Encoding.c
+++ b/src/Encoding.c
@@ -1365,8 +1365,6 @@ void Encoding_SciSetCodePage(HWND hwnd, int iEncoding) {
// ============================================================================
-extern BOOL bSkipUnicodeDetection;
-
BOOL IsUnicode(const char* pBuffer, int cb, LPBOOL lpbBOM, LPBOOL lpbReverse) {
int i = 0xFFFF;
@@ -1378,10 +1376,7 @@ BOOL IsUnicode(const char* pBuffer, int cb, LPBOOL lpbBOM, LPBOOL lpbReverse) {
if (!pBuffer || cb < 2)
return FALSE;
- if (!bSkipUnicodeDetection)
- bIsTextUnicode = IsTextUnicode(pBuffer, cb, &i);
- else
- bIsTextUnicode = FALSE;
+ bIsTextUnicode = IsTextUnicode(pBuffer, cb, &i);
bHasBOM = (*((UNALIGNED PWCHAR)pBuffer) == 0xFEFF);
bHasRBOM = (*((UNALIGNED PWCHAR)pBuffer) == 0xFFFE);
diff --git a/src/Notepad3.c b/src/Notepad3.c
index f57823982..8f2776078 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -181,6 +181,7 @@ BOOL bViewWhiteSpace;
BOOL bViewEOLs;
BOOL bUseDefaultForFileEncoding;
BOOL bSkipUnicodeDetection;
+BOOL bSkipANSICodePageDetection;
BOOL bLoadASCIIasUTF8;
BOOL bLoadNFOasOEM;
BOOL bNoEncodingTags;
@@ -736,7 +737,7 @@ HWND InitInstance(HINSTANCE hInstance,LPSTR pszCmdLine,int nCmdShow)
SetWindowTransparentMode(g_hwndMain,TRUE);
// Current file information -- moved in front of ShowWindow()
- FileLoad(TRUE,TRUE,FALSE,FALSE,L"");
+ FileLoad(TRUE,TRUE,FALSE,bSkipUnicodeDetection,bSkipANSICodePageDetection,L"");
if (!flagStartAsTrayIcon) {
ShowWindow(g_hwndMain,nCmdShow);
@@ -759,12 +760,12 @@ HWND InitInstance(HINSTANCE hInstance,LPSTR pszCmdLine,int nCmdShow)
// Open from Directory
if (!flagBufferFile && PathIsDirectory(lpFileArg)) {
WCHAR tchFile[MAX_PATH] = { L'\0' };
- if (OpenFileDlg(g_hwndMain,tchFile,COUNTOF(tchFile),lpFileArg))
- bOpened = FileLoad(FALSE,FALSE,FALSE,FALSE,tchFile);
+ if (OpenFileDlg(g_hwndMain, tchFile, COUNTOF(tchFile), lpFileArg))
+ bOpened = FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, tchFile);
}
else {
LPCWSTR lpFileToOpen = flagBufferFile ? szBufferFile : lpFileArg;
- bOpened = FileLoad(FALSE,FALSE,FALSE,FALSE,lpFileToOpen);
+ bOpened = FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, lpFileToOpen);
if (bOpened) {
if (flagBufferFile) {
if (lpFileArg) {
@@ -1771,10 +1772,10 @@ void MsgDropFiles(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (PathIsDirectory(szBuf)) {
WCHAR tchFile[MAX_PATH] = { L'\0' };
if (OpenFileDlg(g_hwndMain, tchFile, COUNTOF(tchFile), szBuf))
- FileLoad(FALSE, FALSE, FALSE, FALSE, tchFile);
+ FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, tchFile);
}
else if (PathFileExists(szBuf))
- FileLoad(FALSE, FALSE, FALSE, FALSE, szBuf);
+ FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, szBuf);
else
// Windows Bug: wParam (HDROP) pointer is corrupted if dropped from 32-bit App
MsgBox(MBWARN, IDS_DROP_NO_FILE);
@@ -1814,10 +1815,10 @@ static DWORD DropFilesProc(CLIPFORMAT cf, HGLOBAL hData, HWND hWnd, DWORD dwKeyS
if (PathIsDirectory(szBuf)) {
WCHAR tchFile[MAX_PATH] = { L'\0' };
if (OpenFileDlg(hWnd, tchFile, COUNTOF(tchFile), szBuf))
- FileLoad(FALSE, FALSE, FALSE, FALSE, tchFile);
+ FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, tchFile);
}
else
- FileLoad(FALSE, FALSE, FALSE, FALSE, szBuf);
+ FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, szBuf);
if (DragQueryFile(hDrop, (UINT)(-1), NULL, 0) > 1)
MsgBox(MBWARN, IDS_ERR_DROP);
@@ -1864,11 +1865,11 @@ LRESULT MsgCopyData(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (PathIsDirectory(¶ms->wchData)) {
WCHAR tchFile[MAX_PATH] = { L'\0' };
if (OpenFileDlg(g_hwndMain, tchFile, COUNTOF(tchFile), ¶ms->wchData))
- bOpened = FileLoad(FALSE, FALSE, FALSE, FALSE, tchFile);
+ bOpened = FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, tchFile);
}
else
- bOpened = FileLoad(FALSE, FALSE, FALSE, FALSE, ¶ms->wchData);
+ bOpened = FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, ¶ms->wchData);
if (bOpened) {
@@ -2439,12 +2440,12 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
break;
case IDM_FILE_NEW:
- FileLoad(FALSE,TRUE,FALSE,FALSE,L"");
+ FileLoad(FALSE,TRUE,FALSE,bSkipUnicodeDetection,bSkipANSICodePageDetection,L"");
break;
case IDM_FILE_OPEN:
- FileLoad(FALSE,FALSE,FALSE,FALSE,L"");
+ FileLoad(FALSE,FALSE,FALSE,bSkipUnicodeDetection,bSkipANSICodePageDetection,L"");
break;
@@ -2634,10 +2635,10 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
WCHAR tchFile[MAX_PATH] = { L'\0' };
if (OpenFileDlg(g_hwndMain,tchFile,COUNTOF(tchFile),tchSelItem))
- FileLoad(TRUE,FALSE,FALSE,FALSE,tchFile);
+ FileLoad(TRUE,FALSE,FALSE,bSkipUnicodeDetection,bSkipANSICodePageDetection,tchFile);
}
else
- FileLoad(TRUE,FALSE,FALSE,FALSE,tchSelItem);
+ FileLoad(TRUE,FALSE,FALSE,bSkipUnicodeDetection,bSkipANSICodePageDetection,tchSelItem);
}
}
break;
@@ -2676,7 +2677,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (FileSave(FALSE,TRUE,FALSE,FALSE)) {
WCHAR tchFile[MAX_PATH] = { L'\0' };
if (FileMRUDlg(hwnd,tchFile))
- FileLoad(TRUE,FALSE,FALSE,FALSE,tchFile);
+ FileLoad(TRUE,FALSE,FALSE,FALSE,TRUE,tchFile);
}
}
break;
@@ -2745,7 +2746,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
{
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
Encoding_SrcCmdLn(iNewEncoding);
- FileLoad(TRUE,FALSE,TRUE,FALSE,tchCurFile2);
+ FileLoad(TRUE,FALSE,TRUE,FALSE,TRUE,tchCurFile2);
}
}
}
@@ -2846,7 +2847,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
int token = BeginUndoAction();
- EditPasteClipboard(g_hwndEdit, FALSE);
+ EditPasteClipboard(g_hwndEdit, FALSE, bSkipUnicodeDetection);
EndUndoAction(token);
UpdateToolbar();
UpdateStatusbar();
@@ -2858,7 +2859,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (flagPasteBoard)
bLastCopyFromMe = TRUE;
int token = BeginUndoAction();
- EditPasteClipboard(g_hwndEdit, TRUE);
+ EditPasteClipboard(g_hwndEdit, TRUE, bSkipUnicodeDetection);
EndUndoAction(token);
UpdateToolbar();
UpdateStatusbar();
@@ -4494,7 +4495,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (StringCchLenW(g_wchCurFile,COUNTOF(g_wchCurFile))) {
Encoding_SrcCmdLn(Encoding_MapUnicode(g_iDefaultNewFileEncoding));
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
- FileLoad(FALSE,FALSE,TRUE,TRUE,tchCurFile2);
+ FileLoad(FALSE,FALSE,TRUE,TRUE,TRUE,tchCurFile2);
}
}
break;
@@ -4506,7 +4507,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (StringCchLenW(g_wchCurFile,COUNTOF(g_wchCurFile))) {
Encoding_SrcCmdLn(CPI_ANSI_DEFAULT);
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
- FileLoad(FALSE,FALSE,TRUE,TRUE,tchCurFile2);
+ FileLoad(FALSE,FALSE,TRUE,TRUE,bSkipANSICodePageDetection,tchCurFile2);
}
}
break;
@@ -4518,7 +4519,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (StringCchLenW(g_wchCurFile,COUNTOF(g_wchCurFile))) {
Encoding_SrcCmdLn(CPI_OEM);
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
- FileLoad(FALSE,FALSE,TRUE,TRUE,tchCurFile2);
+ FileLoad(FALSE,FALSE,TRUE,TRUE,TRUE,tchCurFile2);
}
}
break;
@@ -4531,7 +4532,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
if (StringCchLenW(g_wchCurFile,COUNTOF(g_wchCurFile))) {
bLoadASCIIasUTF8 = 1;
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
- FileLoad(FALSE,FALSE,TRUE,FALSE,tchCurFile2);
+ FileLoad(FALSE,FALSE,TRUE,FALSE,TRUE,tchCurFile2);
bLoadASCIIasUTF8 = _bLoadASCIIasUTF8;
}
}
@@ -4547,7 +4548,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
flagNoFileVariables = 1;
bNoEncodingTags = 1;
StringCchCopy(tchCurFile2,COUNTOF(tchCurFile2),g_wchCurFile);
- FileLoad(FALSE,FALSE,TRUE,FALSE,tchCurFile2);
+ FileLoad(FALSE,FALSE,TRUE, bSkipUnicodeDetection, bSkipANSICodePageDetection, tchCurFile2);
flagNoFileVariables = _fNoFileVariables;
bNoEncodingTags = _bNoEncodingTags;
}
@@ -4919,7 +4920,7 @@ LRESULT MsgCommand(HWND hwnd, WPARAM wParam, LPARAM lParam)
case CMD_OPENINIFILE:
if (StringCchLenW(g_wchIniFile,COUNTOF(g_wchIniFile))) {
CreateIniFile();
- FileLoad(FALSE,FALSE,FALSE,FALSE,g_wchIniFile);
+ FileLoad(FALSE,FALSE,FALSE,FALSE,TRUE,g_wchIniFile);
}
break;
@@ -5211,10 +5212,10 @@ void OpenHotSpotURL(DocPos position, BOOL bForceBrowser)
WCHAR tchFile[MAX_PATH + 1] = { L'\0' };
if (OpenFileDlg(g_hwndMain, tchFile, COUNTOF(tchFile), szFileName))
- FileLoad(FALSE, FALSE, FALSE, FALSE, tchFile);
+ FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, tchFile);
}
else
- FileLoad(FALSE, FALSE, FALSE, FALSE, szFileName);
+ FileLoad(FALSE, FALSE, FALSE, bSkipUnicodeDetection, bSkipANSICodePageDetection, szFileName);
}
else { // open in web browser
@@ -5842,6 +5843,8 @@ void LoadSettings()
bSkipUnicodeDetection = IniSectionGetBool(pIniSection, L"SkipUnicodeDetection", FALSE);
+ bSkipANSICodePageDetection = IniSectionGetBool(pIniSection, L"SkipANSICodePageDetection", TRUE);
+
bLoadASCIIasUTF8 = IniSectionGetBool(pIniSection, L"LoadASCIIasUTF8", FALSE);
bLoadNFOasOEM = IniSectionGetBool(pIniSection,L"LoadNFOasOEM",TRUE);
@@ -6145,6 +6148,7 @@ void SaveSettings(BOOL bSaveSettingsNow) {
IniSectionSetInt(pIniSection, L"DefaultEncoding", Encoding_MapIniSetting(FALSE, g_iDefaultNewFileEncoding));
IniSectionSetBool(pIniSection, L"UseDefaultForFileEncoding", bUseDefaultForFileEncoding);
IniSectionSetBool(pIniSection, L"SkipUnicodeDetection", bSkipUnicodeDetection);
+ IniSectionSetBool(pIniSection, L"SkipANSICodePageDetection", bSkipANSICodePageDetection);
IniSectionSetInt(pIniSection, L"LoadASCIIasUTF8", bLoadASCIIasUTF8);
IniSectionSetBool(pIniSection, L"LoadNFOasOEM", bLoadNFOasOEM);
IniSectionSetBool(pIniSection, L"NoEncodingTags", bNoEncodingTags);
@@ -7406,7 +7410,8 @@ int UndoRedoActionMap(int token, UndoRedoSelection_t* selection)
// FileIO()
//
//
-BOOL FileIO(BOOL fLoad,LPCWSTR pszFileName,BOOL bNoEncDetect,int *ienc,int *ieol,
+BOOL FileIO(BOOL fLoad,LPCWSTR pszFileName,BOOL bSkipUnicodeDetect,BOOL bSkipANSICPDetection,
+ int *ienc,int *ieol,
BOOL *pbUnicodeErr,BOOL *pbFileTooBig, BOOL* pbUnknownExt,
BOOL *pbCancelDataLoss,BOOL bSaveCopy)
{
@@ -7419,7 +7424,7 @@ BOOL FileIO(BOOL fLoad,LPCWSTR pszFileName,BOOL bNoEncDetect,int *ienc,int *ieol
BeginWaitCursor(tch);
if (fLoad) {
- fSuccess = EditLoadFile(g_hwndEdit,pszFileName,bNoEncDetect,ienc,ieol,pbUnicodeErr,pbFileTooBig,pbUnknownExt);
+ fSuccess = EditLoadFile(g_hwndEdit,pszFileName,bSkipUnicodeDetect,bSkipANSICPDetection,ienc,ieol,pbUnicodeErr,pbFileTooBig,pbUnknownExt);
}
else {
int idx;
@@ -7449,7 +7454,7 @@ BOOL FileIO(BOOL fLoad,LPCWSTR pszFileName,BOOL bNoEncDetect,int *ienc,int *ieol
// FileLoad()
//
//
-BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lpszFile)
+BOOL FileLoad(BOOL bDontSave, BOOL bNew, BOOL bReload, BOOL bSkipUnicodeDetect, BOOL bSkipANSICPDetection, LPCWSTR lpszFile)
{
WCHAR tch[MAX_PATH] = { L'\0' };
WCHAR szFileName[MAX_PATH] = { L'\0' };
@@ -7579,7 +7584,7 @@ BOOL FileLoad(BOOL bDontSave,BOOL bNew,BOOL bReload,BOOL bNoEncDetect,LPCWSTR lp
else
fileEncoding = Encoding_Current(CPI_GET);
- fSuccess = FileIO(TRUE,szFileName,bNoEncDetect,&fileEncoding,&g_iEOLMode,&bUnicodeErr,&bFileTooBig,&bUnknownExt,NULL,FALSE);
+ fSuccess = FileIO(TRUE,szFileName,bSkipUnicodeDetect,bSkipANSICPDetection,&fileEncoding,&g_iEOLMode,&bUnicodeErr,&bFileTooBig,&bUnknownExt,NULL,FALSE);
if (fSuccess)
Encoding_Current(fileEncoding); // load may change encoding
}
@@ -7690,7 +7695,7 @@ BOOL FileRevert(LPCWSTR szFileName)
WCHAR tchFileName2[MAX_PATH] = { L'\0' };
StringCchCopy(tchFileName2,COUNTOF(tchFileName2),szFileName);
- if (FileLoad(TRUE,FALSE,TRUE,FALSE,tchFileName2))
+ if (FileLoad(TRUE,FALSE,TRUE,FALSE,TRUE,tchFileName2))
{
if (bIsTail && iFileWatchingMode == 2) {
SendMessage(g_hwndEdit, SCI_DOCUMENTEND, 0, 0);
@@ -7802,7 +7807,7 @@ BOOL FileSave(BOOL bSaveAlways,BOOL bAsk,BOOL bSaveAs,BOOL bSaveCopy)
if (SaveFileDlg(g_hwndMain,tchFile,COUNTOF(tchFile),tchInitialDir))
{
int fileEncoding = Encoding_Current(CPI_GET);
- fSuccess = FileIO(FALSE, tchFile, FALSE, &fileEncoding, &g_iEOLMode, NULL, NULL, NULL, &bCancelDataLoss, bSaveCopy);
+ fSuccess = FileIO(FALSE, tchFile, FALSE, TRUE, &fileEncoding, &g_iEOLMode, NULL, NULL, NULL, &bCancelDataLoss, bSaveCopy);
//~if (fSuccess) Encoding_Current(fileEncoding); // save should not change encoding
if (fSuccess)
{
@@ -7829,7 +7834,7 @@ BOOL FileSave(BOOL bSaveAlways,BOOL bAsk,BOOL bSaveAs,BOOL bSaveCopy)
}
else {
int fileEncoding = Encoding_Current(CPI_GET);
- fSuccess = FileIO(FALSE,g_wchCurFile,FALSE,&fileEncoding,&g_iEOLMode,NULL,NULL,NULL,&bCancelDataLoss,FALSE);
+ fSuccess = FileIO(FALSE, g_wchCurFile, FALSE, TRUE, &fileEncoding, &g_iEOLMode, NULL, NULL, NULL, &bCancelDataLoss, FALSE);
//~if (fSuccess) Encoding_Current(fileEncoding); // save should not change encoding
}
@@ -7868,7 +7873,7 @@ BOOL FileSave(BOOL bSaveAlways,BOOL bAsk,BOOL bSaveAs,BOOL bSaveCopy)
if (GetTempPath(MAX_PATH,lpTempPathBuffer) &&
GetTempFileName(lpTempPathBuffer,TEXT("NP3"),0,szTempFileName)) {
int fileEncoding = Encoding_Current(CPI_GET);
- if (FileIO(FALSE,szTempFileName,FALSE,&fileEncoding,&g_iEOLMode,NULL,NULL,NULL,&bCancelDataLoss,TRUE)) {
+ if (FileIO(FALSE,szTempFileName,FALSE,TRUE,&fileEncoding,&g_iEOLMode,NULL,NULL,NULL,&bCancelDataLoss,TRUE)) {
//~Encoding_Current(fileEncoding); // save should not change encoding
WCHAR szArguments[2048] = { L'\0' };
LPWSTR lpCmdLine = GetCommandLine();
diff --git a/src/Notepad3.h b/src/Notepad3.h
index 8ecf55893..47ddd8950 100644
--- a/src/Notepad3.h
+++ b/src/Notepad3.h
@@ -163,8 +163,8 @@ int UndoRedoActionMap(int,UndoRedoSelection_t*);
void OpenHotSpotURL(DocPos, BOOL);
-BOOL FileIO(BOOL,LPCWSTR,BOOL,int*,int*,BOOL*,BOOL*,BOOL*,BOOL*,BOOL);
-BOOL FileLoad(BOOL,BOOL,BOOL,BOOL,LPCWSTR);
+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 FileSave(BOOL,BOOL,BOOL,BOOL);
BOOL OpenFileDlg(HWND,LPWSTR,int,LPCWSTR);
diff --git a/src/Notepad3.rc b/src/Notepad3.rc
index 4b289a6ba..06cc3f3fc 100644
--- a/src/Notepad3.rc
+++ b/src/Notepad3.rc
@@ -639,6 +639,7 @@ BEGIN
VK_F12, IDACC_VIEWSCHEMECONFIG, VIRTKEY, CONTROL, NOINVERT
END
+
/////////////////////////////////////////////////////////////////////////////
//
// Dialog
@@ -750,25 +751,27 @@ BEGIN
SCROLLBAR IDC_RESIZEGRIP3,7,112,10,10
END
-IDD_DEFENCODING DIALOGEX 0, 0, 181, 122
+IDD_DEFENCODING DIALOGEX 0, 0, 197, 159
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
CAPTION "Encoding"
FONT 8, "MS Shell Dlg", 400, 0, 0x1
BEGIN
- LTEXT "&Default encoding (new file):",IDC_STATIC,7,7,90,8
- CONTROL "",IDC_ENCODINGLIST,"ComboBoxEx32",CBS_DROPDOWNLIST | WS_CLIPSIBLINGS | WS_VSCROLL | WS_TABSTOP,7,20,167,128
+ GROUPBOX "Default Encoding (new file):",IDC_STATIC,7,7,183,48,0,WS_EX_TRANSPARENT
+ CONTROL "",IDC_ENCODINGLIST,"ComboBoxEx32",CBS_DROPDOWNLIST | WS_CLIPSIBLINGS | WS_VSCROLL | WS_TABSTOP,14,19,167,128
CONTROL "Use as &fallback on detection failure.",IDC_USEASREADINGFALLBACK,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,40,155,10
- CONTROL "Skip &encoding detection.",IDC_NOUNICODEDETECTION,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,51,122,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,38,155,10
+ GROUPBOX "Encoding Detection: ",IDC_STATIC,7,58,183,77,0,WS_EX_TRANSPARENT
+ CONTROL "Skip &ANSI Code Page detection.",IDC_NOANSICPDETECTION,
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,71,122,10
+ CONTROL "Skip &UNICODE detection.",IDC_NOUNICODEDETECTION,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,83,122,10
CONTROL "Open 7-bit &ASCII files in UTF-8 mode.",IDC_ASCIIASUTF8,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,62,136,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,96,136,10
CONTROL "Open 8-bit *.&nfo/diz files in DOS-437 mode.",IDC_NFOASOEM,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,73,155,10
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,109,155,10
CONTROL "Don't parse encoding file &tags.",IDC_ENCODINGFROMFILEVARS,
- "Button",BS_AUTOCHECKBOX | WS_TABSTOP,7,84,126,10
- DEFPUSHBUTTON "OK",IDOK,68,101,50,14
- PUSHBUTTON "Cancel",IDCANCEL,124,101,50,14
+ "Button",BS_AUTOCHECKBOX | WS_TABSTOP,14,121,126,10
+ DEFPUSHBUTTON "OK",IDOK,87,138,50,14
+ PUSHBUTTON "Cancel",IDCANCEL,140,138,50,14
END
IDD_DEFEOLMODE DIALOGEX 0, 0, 180, 78
@@ -1217,9 +1220,9 @@ BEGIN
IDD_DEFENCODING, DIALOG
BEGIN
LEFTMARGIN, 7
- RIGHTMARGIN, 174
+ RIGHTMARGIN, 190
TOPMARGIN, 7
- BOTTOMMARGIN, 115
+ BOTTOMMARGIN, 152
END
IDD_DEFEOLMODE, DIALOG
diff --git a/src/Notepad3.vcxproj b/src/Notepad3.vcxproj
index 101a5e840..098c55875 100644
--- a/src/Notepad3.vcxproj
+++ b/src/Notepad3.vcxproj
@@ -31,6 +31,7 @@
v141
true
true
+ false
Unicode
@@ -38,6 +39,7 @@
v141
false
true
+ false
Unicode
@@ -45,6 +47,7 @@
v141
true
true
+ false
Unicode
@@ -52,6 +55,7 @@
v141
false
true
+ false
diff --git a/src/resource.h b/src/resource.h
index 08ac6820e..f89e78599 100644
--- a/src/resource.h
+++ b/src/resource.h
@@ -136,6 +136,7 @@
#define IDC_PRINTER 232
#define IDC_USEASREADINGFALLBACK 233
#define IDR_ACCCUSTOMSCHEMES 234
+#define IDC_NOANSICPDETECTION 235
#define IDACC_FIND 302
#define IDACC_REPLACE 303
#define IDACC_SAVEPOS 304