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