WSGo$Hd
Ih0kmX0K4W;^Z)<=
delta 146
zcmZo$#j^5#N?p8B9nEL6(&0rbMfjh7=cw7
z0!j19z4h6X1H6Z0a)pn{WQ8~mW-|uE$p__4C%^IWn*1d+fZGhJ2PCdo
p?LGOx`l!hc`&k%`H#hpdT*_?DU_ANb_gElpIN9-|@ushA3IM7zF*g7J
diff --git a/language/np3_zh_cn/strings_zh_cn.rc b/language/np3_zh_cn/strings_zh_cn.rc
index da04bbbbdc02d5554ae20c32200c31f82765ccc3..2e8055cb4be098a67f6df7e2558a4991273a6c70 100644
GIT binary patch
delta 134
zcmdmRoAJmU#tjYfldE(kCI={SWqUICF*q~$1Ib_pPaqCqh-YvG@_m481qLM`KZ79^
z$Vy|#WXJ)tG8hsWih&}T40#O64EaE^7|1SWC;`gm0Z9d*I*?o{gDyi7LlKZpWXJ}}
PD^7lBAG-OR{3Blg7r!35
delta 30
mcmX?dhjGJg#tjYflgnJpCI|3IOb$@um@FXAx4A;$j4uGfEDK5i
diff --git a/src/Dialogs.c b/src/Dialogs.c
index 3ee32ece5..c49c01bbe 100644
--- a/src/Dialogs.c
+++ b/src/Dialogs.c
@@ -2464,13 +2464,10 @@ bool RecodeDlg(HWND hwnd,int *pidREncoding)
//
// SelectDefLineEndingDlgProc()
//
-// Controls: 100 Combo
-// IDC_CONSISTENTEOLS
-// IDC_AUTOSTRIPBLANKS
//
INT_PTR CALLBACK SelectDefLineEndingDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LPARAM lParam)
{
- static int *piOption;
+ static int* piOption;
switch(umsg)
{
@@ -2486,12 +2483,13 @@ INT_PTR CALLBACK SelectDefLineEndingDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LP
// Load options
for (i = 0; i < 3; i++) {
GetLngString(IDS_EOL_WIN+i,wch,COUNTOF(wch));
- SendDlgItemMessage(hwnd,100,CB_ADDSTRING,0,(LPARAM)wch);
+ SendDlgItemMessage(hwnd, IDC_EOLMODELIST,CB_ADDSTRING,0,(LPARAM)wch);
}
- SendDlgItemMessage(hwnd,100,CB_SETCURSEL,(WPARAM)*piOption,0);
- SendDlgItemMessage(hwnd,100,CB_SETEXTENDEDUI,true,0);
+ SendDlgItemMessage(hwnd, IDC_EOLMODELIST,CB_SETCURSEL,(WPARAM)*piOption,0);
+ SendDlgItemMessage(hwnd, IDC_EOLMODELIST,CB_SETEXTENDEDUI,true,0);
+ CheckDlgButton(hwnd,IDC_WARNINCONSISTENTEOLS, DlgBtnChk(Settings.WarnInconsistEOLs));
CheckDlgButton(hwnd,IDC_CONSISTENTEOLS, DlgBtnChk(Settings.FixLineEndings));
CheckDlgButton(hwnd,IDC_AUTOSTRIPBLANKS, DlgBtnChk(Settings.FixTrailingBlanks));
@@ -2504,7 +2502,8 @@ INT_PTR CALLBACK SelectDefLineEndingDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LP
switch(LOWORD(wParam))
{
case IDOK: {
- *piOption = (int)SendDlgItemMessage(hwnd,100,CB_GETCURSEL,0,0);
+ *piOption = (int)SendDlgItemMessage(hwnd,IDC_EOLMODELIST,CB_GETCURSEL,0,0);
+ Settings.WarnInconsistEOLs = (IsDlgButtonChecked(hwnd,IDC_WARNINCONSISTENTEOLS) == BST_CHECKED);
Settings.FixLineEndings = (IsDlgButtonChecked(hwnd,IDC_CONSISTENTEOLS) == BST_CHECKED);
Settings.FixTrailingBlanks = (IsDlgButtonChecked(hwnd,IDC_AUTOSTRIPBLANKS) == BST_CHECKED);
EndDialog(hwnd,IDOK);
@@ -2525,20 +2524,15 @@ INT_PTR CALLBACK SelectDefLineEndingDlgProc(HWND hwnd,UINT umsg,WPARAM wParam,LP
//
// SelectDefLineEndingDlg()
//
-bool SelectDefLineEndingDlg(HWND hwnd,int *iOption)
+bool SelectDefLineEndingDlg(HWND hwnd, LPARAM piOption)
{
+ INT_PTR const iResult = ThemedDialogBoxParam(Globals.hLngResContainer,
+ MAKEINTRESOURCE(IDD_MUI_DEFEOLMODE),
+ hwnd,
+ SelectDefLineEndingDlgProc,
+ piOption);
- INT_PTR iResult;
-
- iResult = ThemedDialogBoxParam(
- Globals.hLngResContainer,
- MAKEINTRESOURCE(IDD_MUI_DEFEOLMODE),
- hwnd,
- SelectDefLineEndingDlgProc,
- (LPARAM)iOption);
-
- return (iResult == IDOK) ? true : false;
-
+ return (iResult == IDOK);
}
@@ -3532,9 +3526,10 @@ DLGTEMPLATE* LoadThemedDialogTemplate(LPCTSTR lpDialogTemplateID, HINSTANCE hIns
INT_PTR ThemedDialogBoxParam(HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent,
DLGPROC lpDialogFunc, LPARAM dwInitParam)
{
+ INT_PTR ret = IDABORT;
DLGTEMPLATE* pDlgTemplate = LoadThemedDialogTemplate(lpTemplate, hInstance);
- INT_PTR ret = DialogBoxIndirectParam(hInstance, pDlgTemplate, hWndParent, lpDialogFunc, dwInitParam);
if (pDlgTemplate) {
+ ret = DialogBoxIndirectParam(hInstance, pDlgTemplate, hWndParent, lpDialogFunc, dwInitParam);
FreeMem(pDlgTemplate);
}
return ret;
@@ -3543,9 +3538,10 @@ INT_PTR ThemedDialogBoxParam(HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndP
HWND CreateThemedDialogParam(HINSTANCE hInstance, LPCTSTR lpTemplate, HWND hWndParent,
DLGPROC lpDialogFunc, LPARAM dwInitParam)
{
+ HWND hwnd = INVALID_HANDLE_VALUE;
DLGTEMPLATE* pDlgTemplate = LoadThemedDialogTemplate(lpTemplate, hInstance);
- HWND hwnd = CreateDialogIndirectParam(hInstance, pDlgTemplate, hWndParent, lpDialogFunc, dwInitParam);
if (pDlgTemplate) {
+ hwnd = CreateDialogIndirectParam(hInstance, pDlgTemplate, hWndParent, lpDialogFunc, dwInitParam);
FreeMem(pDlgTemplate);
}
return(hwnd);
diff --git a/src/Dialogs.h b/src/Dialogs.h
index 89b02775a..b552e3ee0 100644
--- a/src/Dialogs.h
+++ b/src/Dialogs.h
@@ -35,7 +35,7 @@ bool TabSettingsDlg(HWND,UINT,int *);
bool SelectDefEncodingDlg(HWND,int *);
bool SelectEncodingDlg(HWND,int *);
bool RecodeDlg(HWND,int *);
-bool SelectDefLineEndingDlg(HWND,int *);
+bool SelectDefLineEndingDlg(HWND,LPARAM);
bool GetMonitorInfoFromRect(const RECT* rc, MONITORINFO* hMonitorInfo);
void WinInfoToScreen(WININFO*);
diff --git a/src/Edit.c b/src/Edit.c
index 689d299c2..6cc97c6b0 100644
--- a/src/Edit.c
+++ b/src/Edit.c
@@ -855,36 +855,66 @@ bool EditCopyAppend(HWND hwnd, bool bAppend)
//=============================================================================
//
-// EditDetectEOLMode() - moved here to handle Unicode files correctly
+// EditDetectEOLMode() - moved here to handle Unicode files correctly
+// by zufuliu (https://github.com/zufuliu/notepad2)
//
-int EditDetectEOLMode(HWND hwnd, char* lpData)
+void EditDetectEOLMode(LPCSTR lpData, DWORD cbData, EditFileIOStatus* status)
{
- UNUSED(hwnd);
int iEOLMode = Settings.DefaultEOLMode;
- LPCSTR cp = lpData ? StrPBrkA(lpData, "\r\n") : NULL;
-
- if (!cp) {
- return iEOLMode;
+ if (cbData == 0) {
+ status->iEOLMode = iEOLMode;
+ return;
}
- if (*cp == '\r') {
- if (*(cp + 1) == '\n') {
+ DocLn linesCount[3] = { 0, 0, 0 };
+
+ LPCSTR cp = lpData;
+ LPCSTR const end = cp + cbData;
+ while (cp < end) {
+ switch (*cp) {
+ case '\n':
+ ++cp;
+ ++linesCount[SC_EOL_LF];
+ break;
+ case '\r':
+ ++cp;
+ if (*cp == '\n') {
+ ++cp;
+ ++linesCount[SC_EOL_CRLF];
+ }
+ else {
+ ++linesCount[SC_EOL_LF];
+ }
+ break;
+ default:
+ ++cp;
+ break;
+ }
+ }
+
+ DocLn const linesMax = max_ln(max_ln(linesCount[0], linesCount[1]), linesCount[2]);
+
+ if (linesMax != linesCount[iEOLMode]) {
+ if (linesMax == linesCount[SC_EOL_CRLF]) {
iEOLMode = SC_EOL_CRLF;
}
+ else if (linesMax == linesCount[SC_EOL_LF]) {
+ iEOLMode = SC_EOL_LF;
+ }
else {
iEOLMode = SC_EOL_CR;
}
}
- else {
- iEOLMode = SC_EOL_LF;
- }
- return iEOLMode;
+ status->iEOLMode = iEOLMode;
+ status->bInconsistent = ((!!linesCount[0]) + (!!linesCount[1]) + (!!linesCount[2])) > 1;
+ status->linesCount[SC_EOL_CRLF] = linesCount[SC_EOL_CRLF];
+ status->linesCount[SC_EOL_CR] = linesCount[SC_EOL_CR];
+ status->linesCount[SC_EOL_LF] = linesCount[SC_EOL_LF];
}
-
//=============================================================================
//
// EditLoadFile()
@@ -894,18 +924,11 @@ bool EditLoadFile(
LPWSTR pszFile,
bool bSkipUTFDetection,
bool bSkipANSICPDetection,
- int* iEncoding,
- int* iEOLMode,
- bool *pbUnicodeErr,
- bool *pbFileTooBig,
- bool *pbUnkownExt)
+ EditFileIOStatus* status)
{
- if (pbUnicodeErr)
- *pbUnicodeErr = false;
- if (pbFileTooBig)
- *pbFileTooBig = false;
- if (pbUnkownExt)
- *pbUnkownExt = false;
+ status->bUnicodeErr = false;
+ status->bFileTooBig = false;
+ status->bUnknownExt = false;
HANDLE hFile = CreateFile(pszFile,
GENERIC_READ,
@@ -931,8 +954,7 @@ bool EditLoadFile(
if (!Style_HasLexerForExt(lpszExt)) {
if (InfoBoxLng(MBYESNO,L"MsgFileUnknownExt",IDS_MUI_WARN_UNKNOWN_EXT,lpszExt) != IDYES) {
CloseHandle(hFile);
- if (pbUnkownExt)
- *pbUnkownExt = true;
+ status->bUnknownExt = true;
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return false;
@@ -944,8 +966,7 @@ bool EditLoadFile(
if ((dwFileSizeLimit != 0) && ((dwFileSizeLimit * 1024 * 1024) < dwFileSize)) {
if (InfoBoxLng(MBYESNO,L"MsgFileSizeWarning",IDS_MUI_WARN_LOAD_BIG_FILE) != IDYES) {
CloseHandle(hFile);
- if (pbFileTooBig)
- *pbFileTooBig = true;
+ status->bFileTooBig = true;
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return false;
@@ -971,8 +992,7 @@ bool EditLoadFile(
if (!lpData)
{
CloseHandle(hFile);
- if (pbFileTooBig)
- *pbFileTooBig = false;
+ status->bFileTooBig = true;
Encoding_SrcCmdLn(CPI_NONE);
Encoding_SrcWeak(CPI_NONE);
return false;
@@ -985,7 +1005,6 @@ bool EditLoadFile(
bool bReadSuccess = ((readFlag & DECRYPT_FATAL_ERROR) || (readFlag & DECRYPT_FREAD_FAILED)) ? false : true;
// ((readFlag == DECRYPT_SUCCESS) || (readFlag & DECRYPT_NO_ENCRYPTION)) => true;
-
if ((readFlag & DECRYPT_CANCELED_NO_PASS) || (readFlag & DECRYPT_WRONG_PASS))
{
bReadSuccess = (InfoBoxLng(MBOKCANCEL, L"MsgNoOrWrongPassphrase", IDS_MUI_NOPASS) == IDOK);
@@ -1067,10 +1086,11 @@ bool EditLoadFile(
if (cbData == 0) {
FileVars_Init(NULL,0,&g_fvCurFile);
- *iEOLMode = Settings.DefaultEOLMode;
- *iEncoding = !Encoding_IsNONE(iForcedEncoding) ? iForcedEncoding : (Settings.LoadASCIIasUTF8 ? CPI_UTF8 : iPreferedEncoding);
+ status->iEOLMode = Settings.DefaultEOLMode;
+ status->iEncoding = !Encoding_IsNONE(iForcedEncoding) ? iForcedEncoding :
+ (Settings.LoadASCIIasUTF8 ? CPI_UTF8 : iPreferedEncoding);
EditSetNewText(hwnd,"",0);
- SendMessage(hwnd,SCI_SETEOLMODE,Settings.DefaultEOLMode,0);
+ SciCall_SetEOLMode(Settings.DefaultEOLMode);
FreeMem(lpData);
}
// === UNICODE ===
@@ -1093,10 +1113,10 @@ bool EditLoadFile(
if (bReverse)
{
_swab(lpData,lpData,cbData);
- *iEncoding = (bBOM ? CPI_UNICODEBEBOM : CPI_UNICODEBE);
+ status->iEncoding = (bBOM ? CPI_UNICODEBEBOM : CPI_UNICODEBE);
}
else {
- *iEncoding = (bBOM ? CPI_UNICODEBOM : CPI_UNICODE);
+ status->iEncoding = (bBOM ? CPI_UNICODEBOM : CPI_UNICODE);
}
char* lpDataUTF8 = AllocMem((cbData * 3) + 2, HEAP_ZERO_MEMORY);
@@ -1105,8 +1125,7 @@ bool EditLoadFile(
(bBOM) ? (cbData)/sizeof(WCHAR) : cbData/sizeof(WCHAR) + 1,lpDataUTF8,(MBWC_DocPos_Cast)SizeOfMem(lpDataUTF8),NULL,NULL);
if (convCnt == 0) {
- if (pbUnicodeErr)
- *pbUnicodeErr = true;
+ status->bUnicodeErr = true;
convCnt = (DWORD)WideCharToMultiByte(CP_ACP,0,(bBOM) ? (LPWSTR)lpData + 1 : (LPWSTR)lpData,
(-1),lpDataUTF8,(MBWC_DocPos_Cast)SizeOfMem(lpDataUTF8),NULL,NULL);
}
@@ -1116,7 +1135,7 @@ bool EditLoadFile(
EditSetNewText(hwnd,"",0);
FileVars_Init(lpDataUTF8,convCnt - 1,&g_fvCurFile);
EditSetNewText(hwnd,lpDataUTF8,convCnt - 1);
- *iEOLMode = EditDetectEOLMode(hwnd,lpDataUTF8);
+ EditDetectEOLMode(lpDataUTF8, convCnt - 1, status);
FreeMem(lpDataUTF8);
}
else {
@@ -1148,13 +1167,13 @@ bool EditLoadFile(
EditSetNewText(hwnd,"",0);
if (bIsUTF8Sig) {
EditSetNewText(hwnd,UTF8StringStart(lpData),cbData-3);
- *iEncoding = CPI_UTF8SIGN;
- *iEOLMode = EditDetectEOLMode(hwnd,UTF8StringStart(lpData));
+ status->iEncoding = CPI_UTF8SIGN;
+ EditDetectEOLMode(UTF8StringStart(lpData), cbData - 3, status);
}
else {
EditSetNewText(hwnd,lpData,cbData);
- *iEncoding = CPI_UTF8;
- *iEOLMode = EditDetectEOLMode(hwnd,lpData);
+ status->iEncoding = CPI_UTF8;
+ EditDetectEOLMode(lpData, cbData, status);
}
FreeMem(lpData);
}
@@ -1162,19 +1181,19 @@ bool EditLoadFile(
else { // === ALL OTHER ===
if (!Encoding_IsNONE(iForcedEncoding))
- *iEncoding = iForcedEncoding;
+ status->iEncoding = iForcedEncoding;
else {
- *iEncoding = FileVars_GetEncoding(&g_fvCurFile);
- if (Encoding_IsNONE(*iEncoding))
+ status->iEncoding = FileVars_GetEncoding(&g_fvCurFile);
+ if (Encoding_IsNONE(status->iEncoding))
{
- *iEncoding = ((g_fvCurFile.mask & FV_ENCODING) ? CPI_ANSI_DEFAULT : iPreferedEncoding);
+ status->iEncoding = ((g_fvCurFile.mask & FV_ENCODING) ? CPI_ANSI_DEFAULT : iPreferedEncoding);
}
}
- if (((Encoding_GetCodePage(*iEncoding) != CP_UTF7) && Encoding_IsEXTERNAL_8BIT(*iEncoding)) ||
- ((Encoding_GetCodePage(*iEncoding) == CP_UTF7) && IsValidUTF7(lpData,cbData))) {
+ if (((Encoding_GetCodePage(status->iEncoding) != CP_UTF7) && Encoding_IsEXTERNAL_8BIT(status->iEncoding)) ||
+ ((Encoding_GetCodePage(status->iEncoding) == CP_UTF7) && IsValidUTF7(lpData,cbData))) {
- UINT uCodePage = Encoding_GetCodePage(*iEncoding);
+ UINT uCodePage = Encoding_GetCodePage(status->iEncoding);
LPWSTR lpDataWide = AllocMem(cbData * 2 + 16, HEAP_ZERO_MEMORY);
int const cbDataWide = MultiByteToWideChar(uCodePage,0,lpData,cbData,lpDataWide,(MBWC_DocPos_Cast)(SizeOfMem(lpDataWide)/sizeof(WCHAR)));
@@ -1188,7 +1207,7 @@ bool EditLoadFile(
FreeMem(lpDataWide);
EditSetNewText(hwnd,"",0);
EditSetNewText(hwnd,lpData,cbData);
- *iEOLMode = EditDetectEOLMode(hwnd,lpData);
+ EditDetectEOLMode(lpData, cbData, status);
FreeMem(lpData);
}
else {
@@ -1208,10 +1227,10 @@ bool EditLoadFile(
}
}
else {
- *iEncoding = Encoding_IsValid(iForcedEncoding) ? iForcedEncoding : iPreferedEncoding;
+ status->iEncoding = Encoding_IsValid(iForcedEncoding) ? iForcedEncoding : iPreferedEncoding;
EditSetNewText(hwnd,"",0);
EditSetNewText(hwnd,lpData,cbData);
- *iEOLMode = EditDetectEOLMode(hwnd,lpData);
+ EditDetectEOLMode(lpData, cbData, status);
FreeMem(lpData);
}
}
@@ -1231,8 +1250,7 @@ bool EditLoadFile(
bool EditSaveFile(
HWND hwnd,
LPCWSTR pszFile,
- int iEncoding,
- bool *pbCancelDataLoss,
+ EditFileIOStatus* status,
bool bSaveCopy)
{
@@ -1243,7 +1261,7 @@ bool EditSaveFile(
DWORD cbData;
DWORD dwBytesWritten;
- *pbCancelDataLoss = false;
+ status->bCancelDataLoss = false;
hFile = CreateFile(pszFile,
GENERIC_WRITE,
@@ -1277,7 +1295,7 @@ bool EditSaveFile(
// ensure consistent line endings
if (Settings.FixLineEndings) {
- SendMessage(hwnd,SCI_CONVERTEOLS, SciCall_GetEOLMode(),0);
+ SciCall_ConvertEOLs(SciCall_GetEOLMode());
EditFixPositions(hwnd);
}
@@ -1320,13 +1338,13 @@ bool EditSaveFile(
}
}*/
- if (Encoding_IsUNICODE(iEncoding))
+ if (Encoding_IsUNICODE(status->iEncoding))
{
SetEndOfFile(hFile);
LPWSTR lpDataWide = AllocMem(cbData * 2 + 16, HEAP_ZERO_MEMORY);
int bomoffset = 0;
- if (Encoding_IsUNICODE_BOM(iEncoding)) {
+ if (Encoding_IsUNICODE_BOM(status->iEncoding)) {
const char* bom = "\xFF\xFE";
CopyMemory((char*)lpDataWide, bom, 2);
bomoffset = 1;
@@ -1334,7 +1352,7 @@ bool EditSaveFile(
int const cbDataWide = bomoffset +
MultiByteToWideChar(Encoding_SciCP, 0, lpData, cbData, &lpDataWide[bomoffset],
(MBWC_DocPos_Cast)((SizeOfMem(lpDataWide) / sizeof(WCHAR)) - bomoffset));
- if (Encoding_IsUNICODE_REVERSE(iEncoding)) {
+ if (Encoding_IsUNICODE_REVERSE(status->iEncoding)) {
_swab((char*)lpDataWide, (char*)lpDataWide, cbDataWide * sizeof(WCHAR));
}
bWriteSuccess = EncryptAndWriteFile(hwnd, hFile, (BYTE*)lpDataWide, cbDataWide * sizeof(WCHAR), &dwBytesWritten);
@@ -1344,11 +1362,11 @@ bool EditSaveFile(
FreeMem(lpData);
}
- else if (Encoding_IsUTF8(iEncoding))
+ else if (Encoding_IsUTF8(status->iEncoding))
{
SetEndOfFile(hFile);
- if (Encoding_IsUTF8_SIGN(iEncoding)) {
+ if (Encoding_IsUTF8_SIGN(status->iEncoding)) {
const char* bom = "\xEF\xBB\xBF";
DWORD bomoffset = 3;
MoveMemory(&lpData[bomoffset], lpData, cbData);
@@ -1362,16 +1380,16 @@ bool EditSaveFile(
FreeMem(lpData);
}
- else if (Encoding_IsEXTERNAL_8BIT(iEncoding)) {
+ else if (Encoding_IsEXTERNAL_8BIT(status->iEncoding)) {
BOOL bCancelDataLoss = FALSE;
- UINT uCodePage = Encoding_GetCodePage(iEncoding);
+ UINT uCodePage = Encoding_GetCodePage(status->iEncoding);
LPWSTR lpDataWide = AllocMem(cbData * 2 + 16, HEAP_ZERO_MEMORY);
int cbDataWide = MultiByteToWideChar(Encoding_SciCP,0,lpData,cbData,
lpDataWide,(MBWC_DocPos_Cast)(SizeOfMem(lpDataWide)/sizeof(WCHAR)));
- if (Encoding_IsMBCS(iEncoding)) {
+ if (Encoding_IsMBCS(status->iEncoding)) {
FreeMem(lpData);
lpData = AllocMem(SizeOfMem(lpDataWide) * 2, HEAP_ZERO_MEMORY); // need more space
cbData = WideCharToMultiByte(uCodePage, 0, lpDataWide, cbDataWide,
@@ -1396,9 +1414,8 @@ bool EditSaveFile(
}
else {
bWriteSuccess = false;
- *pbCancelDataLoss = true;
+ status->bCancelDataLoss = true;
}
-
FreeMem(lpData);
}
@@ -5793,8 +5810,9 @@ HWND EditFindReplaceDlg(HWND hwnd,LPCEDITFINDREPLACE lpefr,bool bReplace)
EditFindReplaceDlgProcW,
(LPARAM) lpefr);
- ShowWindow(hDlg,SW_SHOW);
-
+ if (hDlg != INVALID_HANDLE_VALUE) {
+ ShowWindow(hDlg, SW_SHOW);
+ }
CoUninitialize();
return hDlg;
}
diff --git a/src/Edit.h b/src/Edit.h
index 21d3fdafc..097e92b0a 100644
--- a/src/Edit.h
+++ b/src/Edit.h
@@ -31,9 +31,9 @@ bool EditSetClipboardText(HWND hwnd, const char* pszText, size_t cchText);
bool EditClearClipboard(HWND hwnd);
bool EditSwapClipboard(HWND hwnd,bool);
bool EditCopyAppend(HWND hwnd,bool);
-int EditDetectEOLMode(HWND hwnd,char* lpData);
-bool EditLoadFile(HWND hwnd,LPWSTR pszFile,bool,bool,int* iEncoding,int* iEOLMode,bool*,bool*,bool*);
-bool EditSaveFile(HWND hwnd,LPCWSTR pszFile,int iEncoding,bool*,bool);
+void EditDetectEOLMode(LPCSTR lpData, DWORD cbData, EditFileIOStatus* status);
+bool EditLoadFile(HWND hwnd, LPWSTR pszFile, bool, bool, EditFileIOStatus* status);
+bool EditSaveFile(HWND hwnd,LPCWSTR pszFile, EditFileIOStatus* status, bool bSaveCopy);
void EditInvertCase(HWND hwnd);
void EditTitleCase(HWND hwnd);
diff --git a/src/Notepad3.c b/src/Notepad3.c
index f8a942e35..7dd4dc45c 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -3313,8 +3313,8 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
BeginWaitCursor(NULL);
_IGNORE_NOTIFY_CHANGE_;
Globals.iEOLMode = (LOWORD(wParam)-IDM_LINEENDINGS_CRLF); // SC_EOL_CRLF(0), SC_EOL_CR(1), SC_EOL_LF(2)
- SendMessage(Globals.hwndEdit,SCI_SETEOLMODE,Globals.iEOLMode,0);
- SendMessage(Globals.hwndEdit,SCI_CONVERTEOLS,Globals.iEOLMode,0);
+ SciCall_SetEOLMode(Globals.iEOLMode);
+ SciCall_ConvertEOLs(Globals.iEOLMode);
EditFixPositions(Globals.hwndEdit);
_OBSERVE_NOTIFY_CHANGE_;
EndWaitCursor();
@@ -3324,7 +3324,7 @@ LRESULT MsgCommand(HWND hwnd, UINT umsg, WPARAM wParam, LPARAM lParam)
case IDM_LINEENDINGS_SETDEFAULT:
- SelectDefLineEndingDlg(hwnd,&Settings.DefaultEOLMode);
+ SelectDefLineEndingDlg(hwnd, (LPARAM)&Settings.DefaultEOLMode);
break;
@@ -6436,7 +6436,7 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
switch (pnmm->dwItemSpec)
{
case STATUS_EOLMODE:
- SendMessage(Globals.hwndEdit,SCI_CONVERTEOLS, SciCall_GetEOLMode(),0);
+ SciCall_ConvertEOLs(SciCall_GetEOLMode());
EditFixPositions(Globals.hwndEdit);
return 1LL;
@@ -6843,6 +6843,7 @@ void LoadSettings()
GET_BOOL_VALUE_FROM_INISECTION(LoadNFOasOEM, true);
GET_BOOL_VALUE_FROM_INISECTION(NoEncodingTags, false);
GET_INT_VALUE_FROM_INISECTION(DefaultEOLMode, SC_EOL_CRLF, SC_EOL_CRLF, SC_EOL_LF); Globals.iEOLMode = Settings.DefaultEOLMode;
+ GET_BOOL_VALUE_FROM_INISECTION(WarnInconsistEOLs, true);
GET_BOOL_VALUE_FROM_INISECTION(FixLineEndings, false);
GET_BOOL_VALUE_FROM_INISECTION(FixTrailingBlanks, false);
GET_INT_VALUE_FROM_INISECTION(PrintHeader, 1, 0, 3);
@@ -7201,6 +7202,7 @@ void SaveSettings(bool bSaveSettingsNow)
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, LoadNFOasOEM);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, NoEncodingTags);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, DefaultEOLMode);
+ SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, WarnInconsistEOLs);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, FixLineEndings);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Bool, FixTrailingBlanks);
SAVE_VALUE_IF_NOT_EQ_DEFAULT(Int, PrintHeader);
@@ -9137,9 +9139,7 @@ static int _UndoRedoActionMap(int token, UndoRedoSelection_t* selection)
//
//
bool FileIO(bool fLoad,LPWSTR pszFileName,bool bSkipUnicodeDetect,bool bSkipANSICPDetection,
- int *ienc,int *ieol,
- bool *pbUnicodeErr,bool *pbFileTooBig, bool* pbUnknownExt,
- bool *pbCancelDataLoss,bool bSaveCopy)
+ EditFileIOStatus* status, bool bSaveCopy)
{
WCHAR tch[MAX_PATH+40];
bool fSuccess;
@@ -9150,12 +9150,12 @@ bool FileIO(bool fLoad,LPWSTR pszFileName,bool bSkipUnicodeDetect,bool bSkipANSI
BeginWaitCursor(tch);
if (fLoad) {
- fSuccess = EditLoadFile(Globals.hwndEdit,pszFileName,bSkipUnicodeDetect,bSkipANSICPDetection,ienc,ieol,pbUnicodeErr,pbFileTooBig,pbUnknownExt);
+ fSuccess = EditLoadFile(Globals.hwndEdit,pszFileName,bSkipUnicodeDetect,bSkipANSICPDetection,status);
}
else {
int idx;
if (MRU_FindFile(Globals.pFileMRU,pszFileName,&idx)) {
- Globals.pFileMRU->iEncoding[idx] = *ienc;
+ Globals.pFileMRU->iEncoding[idx] = status->iEncoding;
Globals.pFileMRU->iCaretPos[idx] = (Settings.PreserveCaretPos ? SciCall_GetCurrentPos() : 0);
WCHAR wchBookMarks[MRU_BMRK_SIZE] = { L'\0' };
EditGetBookmarkList(Globals.hwndEdit, wchBookMarks, COUNTOF(wchBookMarks));
@@ -9163,7 +9163,7 @@ bool FileIO(bool fLoad,LPWSTR pszFileName,bool bSkipUnicodeDetect,bool bSkipANSI
LocalFree(Globals.pFileMRU->pszBookMarks[idx]); // StrDup()
Globals.pFileMRU->pszBookMarks[idx] = StrDup(wchBookMarks);
}
- fSuccess = EditSaveFile(Globals.hwndEdit,pszFileName,*ienc,pbCancelDataLoss,bSaveCopy);
+ fSuccess = EditSaveFile(Globals.hwndEdit,pszFileName, status, bSaveCopy);
}
dwFileAttributes = GetFileAttributes(pszFileName);
@@ -9184,11 +9184,10 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
{
WCHAR tch[MAX_PATH] = { L'\0' };
WCHAR szFileName[MAX_PATH] = { L'\0' };
- bool bUnicodeErr = false;
- bool bFileTooBig = false;
- bool bUnknownExt = false;
- bool fSuccess;
- int fileEncoding = CPI_ANSI_DEFAULT;
+ bool fSuccess = false;
+
+ EditFileIOStatus fioStatus = INIT_FILEIO_STATUS;
+ fioStatus.iEOLMode = Globals.iEOLMode;
if (bNew || bReload) {
if (EditToggleView(Globals.hwndEdit, false)) {
@@ -9213,7 +9212,7 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
EditSetNewText(Globals.hwndEdit, "", 0);
Globals.iEOLMode = Settings.DefaultEOLMode;
- SendMessage(Globals.hwndEdit,SCI_SETEOLMODE,Globals.iEOLMode,0);
+ SciCall_SetEOLMode(Globals.iEOLMode);
Encoding_Current(Settings.DefaultEncoding);
Encoding_HasChanged(Settings.DefaultEncoding);
@@ -9289,11 +9288,11 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
EditSetNewText(Globals.hwndEdit,"",0);
Style_SetDefaultLexer(Globals.hwndEdit);
Globals.iEOLMode = Settings.DefaultEOLMode;
- SendMessage(Globals.hwndEdit,SCI_SETEOLMODE,Globals.iEOLMode,0);
+ SciCall_SetEOLMode(Globals.iEOLMode);
if (Encoding_SrcCmdLn(CPI_GET) != CPI_NONE) {
- fileEncoding = Encoding_SrcCmdLn(CPI_GET);
- Encoding_Current(fileEncoding);
- Encoding_HasChanged(fileEncoding);
+ fioStatus.iEncoding = Encoding_SrcCmdLn(CPI_GET);
+ Encoding_Current(fioStatus.iEncoding);
+ Encoding_HasChanged(fioStatus.iEncoding);
}
else {
Encoding_Current(Settings.DefaultEncoding);
@@ -9312,16 +9311,18 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
else {
int idx;
if (!bReload && MRU_FindFile(Globals.pFileMRU,szFileName,&idx)) {
- fileEncoding = Globals.pFileMRU->iEncoding[idx];
- if (fileEncoding > 0)
- Encoding_SrcCmdLn(Encoding_MapUnicode(fileEncoding));
+ fioStatus.iEncoding = Globals.pFileMRU->iEncoding[idx];
+ if (fioStatus.iEncoding > 0)
+ Encoding_SrcCmdLn(Encoding_MapUnicode(fioStatus.iEncoding));
}
else
- fileEncoding = Encoding_Current(CPI_GET);
+ fioStatus.iEncoding = Encoding_Current(CPI_GET);
- fSuccess = FileIO(true,szFileName,bSkipUnicodeDetect,bSkipANSICPDetection,&fileEncoding,&Globals.iEOLMode,&bUnicodeErr,&bFileTooBig,&bUnknownExt,NULL,false);
- if (fSuccess)
- Encoding_Current(fileEncoding); // load may change encoding
+ fSuccess = FileIO(true,szFileName,bSkipUnicodeDetect,bSkipANSICPDetection,&fioStatus,false);
+ if (fSuccess) {
+ Globals.iEOLMode = fioStatus.iEOLMode;
+ Encoding_Current(fioStatus.iEncoding); // load may change encoding
+ }
}
if (fSuccess) {
StringCchCopy(Globals.CurrentFile,COUNTOF(Globals.CurrentFile),szFileName);
@@ -9334,9 +9335,9 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
if (!s_flagLexerSpecified) // flag will be cleared
Style_SetLexerFromFile(Globals.hwndEdit,Globals.CurrentFile);
- SendMessage(Globals.hwndEdit,SCI_SETEOLMODE,Globals.iEOLMode,0);
- fileEncoding = Encoding_Current(CPI_GET);
- Encoding_HasChanged(fileEncoding);
+ SciCall_SetEOLMode(Globals.iEOLMode);
+ fioStatus.iEncoding = Encoding_Current(CPI_GET);
+ Encoding_HasChanged(fioStatus.iEncoding);
int idx = 0;
DocPos iCaretPos = 0;
LPCWSTR pszBookMarks = L"";
@@ -9344,7 +9345,7 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
iCaretPos = Globals.pFileMRU->iCaretPos[idx];
pszBookMarks = Globals.pFileMRU->pszBookMarks[idx];
}
- MRU_AddFile(Globals.pFileMRU,szFileName,Flags.RelativeFileMRU,Flags.PortableMyDocs,fileEncoding,iCaretPos,pszBookMarks);
+ MRU_AddFile(Globals.pFileMRU,szFileName,Flags.RelativeFileMRU,Flags.PortableMyDocs,fioStatus.iEncoding,iCaretPos,pszBookMarks);
EditSetBookmarkList(Globals.hwndEdit, pszBookMarks);
SetFindPattern((Globals.pMRUfind ? Globals.pMRUfind->pszItems[0] : L""));
@@ -9398,13 +9399,17 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
UpdateSettingsCmds();
// Show warning: Unicode file loaded as ANSI
- if (bUnicodeErr)
- MsgBoxLng(MBWARN,IDS_MUI_ERR_UNICODE);
+ if (fioStatus.bUnicodeErr) {
+ MsgBoxLng(MBWARN, IDS_MUI_ERR_UNICODE);
+ }
+ // Show inconsistent line endings warning
+ if (fioStatus.bInconsistent && Settings.WarnInconsistEOLs) {
+ MsgBoxLng(MBWARN, IDS_MUI_WARN_INCONSIST_EOLS);
+ }
+ }
+ else if (!(fioStatus.bFileTooBig || fioStatus.bUnknownExt)) {
+ MsgBoxLng(MBWARN, IDS_MUI_ERR_LOADFILE, szFileName);
}
-
- else if (!(bFileTooBig || bUnknownExt))
- MsgBoxLng(MBWARN,IDS_MUI_ERR_LOADFILE,szFileName);
-
return(fSuccess);
}
@@ -9476,7 +9481,10 @@ bool FileSave(bool bSaveAlways,bool bAsk,bool bSaveAs,bool bSaveCopy)
WCHAR tchFile[MAX_PATH] = { L'\0' };
WCHAR tchBase[MAX_PATH] = { L'\0' };
bool fSuccess = false;
- bool bCancelDataLoss = false;
+
+ EditFileIOStatus fioStatus = INIT_FILEIO_STATUS;
+ fioStatus.iEncoding = Encoding_Current(CPI_GET);
+ fioStatus.iEOLMode = Globals.iEOLMode;
bool bIsEmptyNewFile = false;
if (StringCchLenW(Globals.CurrentFile,COUNTOF(Globals.CurrentFile)) == 0) {
@@ -9553,9 +9561,8 @@ bool FileSave(bool bSaveAlways,bool bAsk,bool bSaveAs,bool bSaveCopy)
if (SaveFileDlg(Globals.hwndMain,tchFile,COUNTOF(tchFile),tchInitialDir))
{
- int fileEncoding = Encoding_Current(CPI_GET);
- fSuccess = FileIO(false, tchFile, false, true, &fileEncoding, &Globals.iEOLMode, NULL, NULL, NULL, &bCancelDataLoss, bSaveCopy);
- //~if (fSuccess) Encoding_Current(fileEncoding); // save should not change encoding
+ fSuccess = FileIO(false, tchFile, false, true, &fioStatus, bSaveCopy);
+ //~if (fSuccess) Encoding_Current(fioStatus.iEncoding); // save should not change encoding
if (fSuccess)
{
if (!bSaveCopy)
@@ -9577,9 +9584,8 @@ bool FileSave(bool bSaveAlways,bool bAsk,bool bSaveAs,bool bSaveCopy)
return false;
}
else {
- int fileEncoding = Encoding_Current(CPI_GET);
- fSuccess = FileIO(false, Globals.CurrentFile, false, true, &fileEncoding, &Globals.iEOLMode, NULL, NULL, NULL, &bCancelDataLoss, false);
- //~if (fSuccess) Encoding_Current(fileEncoding); // save should not change encoding
+ fSuccess = FileIO(false, Globals.CurrentFile, false, true, &fioStatus, false);
+ //~if (fSuccess) Encoding_Current(fioStatus.iEncoding); // save should not change encoding
}
if (fSuccess)
@@ -9607,7 +9613,7 @@ bool FileSave(bool bSaveAlways,bool bAsk,bool bSaveAs,bool bSaveCopy)
InstallFileWatching(Globals.CurrentFile);
}
}
- else if (!bCancelDataLoss)
+ else if (!fioStatus.bCancelDataLoss)
{
if (StringCchLenW(Globals.CurrentFile,COUNTOF(Globals.CurrentFile)) > 0) {
StringCchCopy(tchFile,COUNTOF(tchFile),Globals.CurrentFile);
@@ -9621,9 +9627,8 @@ 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,true,&fileEncoding,&Globals.iEOLMode,NULL,NULL,NULL,&bCancelDataLoss,true)) {
- //~Encoding_Current(fileEncoding); // save should not change encoding
+ if (FileIO(false,szTempFileName,false,true,&fioStatus,true)) {
+ //~Encoding_Current(fioStatus.iEncoding); // save should not change encoding
WCHAR szArguments[2048] = { L'\0' };
LPWSTR lpCmdLine = GetCommandLine();
size_t const wlen = StringCchLenW(lpCmdLine,0) + 2;
diff --git a/src/Notepad3.h b/src/Notepad3.h
index eec325e21..a8ca25712 100644
--- a/src/Notepad3.h
+++ b/src/Notepad3.h
@@ -160,7 +160,7 @@ void SetFindPatternMB(LPCSTR chFindPattern);
void GetFindPattern(LPWSTR wchFindPattern, size_t bufferSize);
void GetFindPatternMB(LPSTR chFindPattern, size_t bufferSize);
-bool FileIO(bool,LPWSTR pszFileName,bool,bool,int* ienc,int* ieol,bool*,bool*,bool*,bool*,bool);
+bool FileIO(bool, LPWSTR pszFileName, bool, bool, EditFileIOStatus* status, bool);
bool FileLoad(bool,bool,bool,bool,bool,LPCWSTR lpszFile);
bool FileRevert(LPCWSTR szFileName,bool);
bool FileSave(bool,bool,bool,bool);
diff --git a/src/SciCall.h b/src/SciCall.h
index c4d9b40a9..d3f4874ba 100644
--- a/src/SciCall.h
+++ b/src/SciCall.h
@@ -227,6 +227,8 @@ DeclareSciCallR1(PositionBefore, POSITIONBEFORE, DocPos, DocPos, position)
DeclareSciCallR1(PositionAfter, POSITIONAFTER, DocPos, DocPos, position)
DeclareSciCallR1(GetCharAt, GETCHARAT, char, DocPos, position)
DeclareSciCallR0(GetEOLMode, GETEOLMODE, int)
+DeclareSciCallV1(SetEOLMode, SETEOLMODE, int, eolmode)
+DeclareSciCallV1(ConvertEOLs, CONVERTEOLS, int, eolmode)
DeclareSciCallV0(SetCharsDefault, SETCHARSDEFAULT)
DeclareSciCallV01(SetWordChars, SETWORDCHARS, const char*, chrs)
diff --git a/src/Styles.c b/src/Styles.c
index 340d15514..e34d99f0e 100644
--- a/src/Styles.c
+++ b/src/Styles.c
@@ -3747,7 +3747,9 @@ HWND Style_CustomizeSchemesDlg(HWND hwnd)
GetParent(hwnd),
Style_CustomizeSchemesDlgProc,
(LPARAM)NULL);
- ShowWindow(hDlg, SW_SHOW);
+ if (hDlg != INVALID_HANDLE_VALUE) {
+ ShowWindow(hDlg, SW_SHOW);
+ }
return hDlg;
}
diff --git a/src/TypeDefs.h b/src/TypeDefs.h
index 916a58db3..bd5a90471 100644
--- a/src/TypeDefs.h
+++ b/src/TypeDefs.h
@@ -304,6 +304,7 @@ typedef struct _settings_t
bool LoadNFOasOEM;
bool NoEncodingTags;
int DefaultEOLMode;
+ bool WarnInconsistEOLs;
bool FixLineEndings;
bool FixTrailingBlanks;
int PrintHeader;
@@ -409,7 +410,26 @@ typedef struct _flags_t
extern FLAGS_T Flags;
+//=============================================================================
+typedef struct _editfileiostatus
+{
+ int iEncoding;
+ int iEOLMode;
+
+ bool bFileTooBig;
+ bool bUnicodeErr;
+
+ // inconsistent line endings
+ bool bInconsistent;
+ DocLn linesCount[3];
+
+ bool bCancelDataLoss;
+ bool bUnknownExt;
+
+} EditFileIOStatus;
+
+#define INIT_FILEIO_STATUS { CPI_ANSI_DEFAULT, SC_EOL_CRLF, false, false, false, {0,0,0}, false, false }
//=============================================================================
From cda4804d011695bdac25bc1149f88ea597fe5ab9 Mon Sep 17 00:00:00 2001
From: Rainer Kottenhoff
Date: Tue, 23 Oct 2018 13:59:28 +0200
Subject: [PATCH 5/5] + enh: option to equalize inconsistent line-breaks after
loading
---
language/np3_af_za/strings_af_za.rc | Bin 34554 -> 34630 bytes
language/np3_de_de/strings_de_de.rc | Bin 38306 -> 38398 bytes
language/np3_en_gb/strings_en_gb.rc | Bin 34638 -> 34714 bytes
language/np3_en_us/strings_en_us.rc | Bin 35250 -> 35326 bytes
language/np3_es_es/strings_es_es.rc | Bin 37620 -> 37696 bytes
language/np3_fr_fr/strings_fr_fr.rc | Bin 37958 -> 38034 bytes
language/np3_ja_jp/strings_ja_jp.rc | Bin 28940 -> 29016 bytes
language/np3_nl_nl/strings_nl_nl.rc | Bin 37058 -> 37134 bytes
language/np3_zh_cn/strings_zh_cn.rc | Bin 28228 -> 28304 bytes
src/Edit.c | 20 +++++++++-----------
src/Notepad3.c | 15 +++++++++++++--
11 files changed, 22 insertions(+), 13 deletions(-)
diff --git a/language/np3_af_za/strings_af_za.rc b/language/np3_af_za/strings_af_za.rc
index 64766d2ad7513ee903689c35973bddd3049e0cd3..7ab756338f929632d5369012d6c4a64da75ac56c 100644
GIT binary patch
delta 74
zcmey>%XF-dX+w;WVhlqbgDOKY1Beb{NM$Hs$YDriNCvVLfOHN+&SXa;NkIjMB!)_$
Uh&ouUI)nY>_06K23yiu#0J*~v{Qv*}
delta 18
ZcmX@s$Mmb0X+wgEPG5Kyp>}EZ)l6U|UJ0Xi1%pC2Uod#KAt_ddq
diff --git a/language/np3_es_es/strings_es_es.rc b/language/np3_es_es/strings_es_es.rc
index 5d5d519213b05cb605e4ae74bf2274e253153857..629895aa2d81e1f2fea4e97c8a00f9765a57923b 100644
GIT binary patch
delta 72
zcmeyelXYk3BRAKWR>T4Tk=hYv
delta 14
WcmX@GjOoi#rVVPQn~O}(#R32`y9Sg1
diff --git a/language/np3_fr_fr/strings_fr_fr.rc b/language/np3_fr_fr/strings_fr_fr.rc
index c349421666479363d888ca324cd730c2b430df6f..2cc2d93ada60f118490ee626c22e04d6264e5f09 100644
GIT binary patch
delta 90
zcmX@Mf@#u9rVUJH-Z2b$45|#p3?Mp)A(f$kA%`K6AsNV00Ma=?r~t&7K-p9VU4|rv
cA|Rc}kPXzK0OVByNp-M(bq4#*jApKJ0Gpi>TmS$7
delta 18
acmbQVlIhqArVUJHlRv42Y+hvcAr=5ls0eKU
diff --git a/language/np3_ja_jp/strings_ja_jp.rc b/language/np3_ja_jp/strings_ja_jp.rc
index 5ae36e01a33defba5c933eb5f5bdd27777a8bd1f..ba1fd8932d2ac3d188babcd39ac61ae8a7ff2272 100644
GIT binary patch
delta 75
zcmeBq#CYQo;|3m8#TbS>233Y)1`r*@kjhZNki(G3kPKug0O=ftoXHJ0V_lMjf5Y)(*J;|&1S#u94)
delta 22
ecmccdh_UAp;|3np$qS6aCVx;C*?dTKnl}J=RSEn6
diff --git a/language/np3_nl_nl/strings_nl_nl.rc b/language/np3_nl_nl/strings_nl_nl.rc
index 914e6579846144729c5dfbdf36a8841b1a10090f..100bb28efc794bcad2310c2e9a0c9fc875adf18a 100644
GIT binary patch
delta 98
zcmX@Kkg0DG(}p?|?-+(W233Y)1`r*@kjhZNki(G3kPKug0O=ecQ~=^kplm9GE<+MS
l5s*$~$Oh_A0P-qf&P3GNP?FPVIZ1^{6T7N7tC
delta 18
acmeBM#B^vO(}p^e$)6%aHp`iQhz0;q+X#IC
diff --git a/language/np3_zh_cn/strings_zh_cn.rc b/language/np3_zh_cn/strings_zh_cn.rc
index 2e8055cb4be098a67f6df7e2558a4991273a6c70..b7cece68927a9c8939c8d3865c501836314b7f9c 100644
GIT binary patch
delta 107
zcmX?dhjGGP#tnQ5J~0e=45|#p3?Mp)A(f$kA%`K6AsNV00Ma=?r~t&7K-p9VU4|rv
uA|Rc}kPXzK0OVByNp-M(bq0He$ptPplLPo9CI={SOcs#m+gzb=#uor1Z5QiEOLMode = iEOLMode;
diff --git a/src/Notepad3.c b/src/Notepad3.c
index 7dd4dc45c..2b3130146 100644
--- a/src/Notepad3.c
+++ b/src/Notepad3.c
@@ -9403,8 +9403,19 @@ bool FileLoad(bool bDontSave, bool bNew, bool bReload, bool bSkipUnicodeDetect,
MsgBoxLng(MBWARN, IDS_MUI_ERR_UNICODE);
}
// Show inconsistent line endings warning
- if (fioStatus.bInconsistent && Settings.WarnInconsistEOLs) {
- MsgBoxLng(MBWARN, IDS_MUI_WARN_INCONSIST_EOLS);
+ if (fioStatus.bInconsistent && Settings.WarnInconsistEOLs)
+ {
+ WCHAR szDefault[32];
+ WCHAR szStatistic[80];
+ int const eolm = Globals.iEOLMode; //Settings.DefaultEOLMode;
+ StringCchPrintf(szDefault, COUNTOF(szDefault), L"%s",
+ ((eolm == SC_EOL_CRLF) ? L"CRLF (\\r\\n)" : ((eolm == SC_EOL_CR) ? L"CR (\\r)" : L"LF (\\n)")));
+ StringCchPrintf(szStatistic, COUNTOF(szStatistic), L">>> #CRLF = %i, #CR = %i, #LF = %i <<<",
+ fioStatus.linesCount[SC_EOL_CRLF], fioStatus.linesCount[SC_EOL_CR], fioStatus.linesCount[SC_EOL_LF]);
+ int const res = MsgBoxLng(MBYESNOWARN, IDS_MUI_WARN_INCONSIST_EOLS, szStatistic, szDefault);
+ if (res == IDYES) {
+ SciCall_ConvertEOLs(eolm);
+ }
}
}
else if (!(fioStatus.bFileTooBig || fioStatus.bUnknownExt)) {