mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-20 21:13:25 +08:00
+ enh: optimized EOL-Mode detection (taken from zufuliu's NP2 commit 2d76e73)
This commit is contained in:
parent
854c413498
commit
48e8e2f3e9
49
src/Edit.c
49
src/Edit.c
@ -888,27 +888,30 @@ bool EditCopyAppend(HWND hwnd, bool bAppend)
|
||||
//
|
||||
// EditDetectEOLMode() - moved here to handle Unicode files correctly
|
||||
//
|
||||
int EditDetectEOLMode(HWND hwnd,char* lpData,DWORD cbData)
|
||||
int EditDetectEOLMode(HWND hwnd, char* lpData)
|
||||
{
|
||||
int iEOLMode = iLineEndings[g_iDefaultEOLMode];
|
||||
char *cp = (char*)lpData;
|
||||
|
||||
if (!cp)
|
||||
return (iEOLMode);
|
||||
|
||||
while (*cp && (*cp != '\x0D' && *cp != '\x0A')) cp++;
|
||||
|
||||
if (*cp == '\x0D' && *(cp+1) == '\x0A')
|
||||
iEOLMode = SC_EOL_CRLF;
|
||||
else if (*cp == '\x0D' && *(cp+1) != '\x0A')
|
||||
iEOLMode = SC_EOL_CR;
|
||||
else if (*cp == '\x0A')
|
||||
iEOLMode = SC_EOL_LF;
|
||||
|
||||
UNUSED(hwnd);
|
||||
UNUSED(cbData);
|
||||
int iEOLMode = iLineEndings[g_iDefaultEOLMode];
|
||||
|
||||
return (iEOLMode);
|
||||
LPCSTR cp = lpData ? StrPBrkA(lpData, "\r\n") : NULL;
|
||||
|
||||
if (!cp) {
|
||||
return iEOLMode;
|
||||
}
|
||||
|
||||
if (*cp == '\r') {
|
||||
if (*(cp + 1) == '\n') {
|
||||
iEOLMode = SC_EOL_CRLF;
|
||||
}
|
||||
else {
|
||||
iEOLMode = SC_EOL_CR;
|
||||
}
|
||||
}
|
||||
else {
|
||||
iEOLMode = SC_EOL_LF;
|
||||
}
|
||||
|
||||
return iEOLMode;
|
||||
}
|
||||
|
||||
|
||||
@ -1125,7 +1128,7 @@ bool EditLoadFile(
|
||||
EditSetNewText(hwnd,"",0);
|
||||
FileVars_Init(lpDataUTF8,convCnt - 1,&fvCurFile);
|
||||
EditSetNewText(hwnd,lpDataUTF8,convCnt - 1);
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,lpDataUTF8,convCnt - 1);
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,lpDataUTF8);
|
||||
FreeMem(lpDataUTF8);
|
||||
}
|
||||
else {
|
||||
@ -1155,12 +1158,12 @@ bool EditLoadFile(
|
||||
if (IsUTF8Signature(lpData)) {
|
||||
EditSetNewText(hwnd,UTF8StringStart(lpData),cbData-3);
|
||||
*iEncoding = CPI_UTF8SIGN;
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,UTF8StringStart(lpData),cbData-3);
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,UTF8StringStart(lpData));
|
||||
}
|
||||
else {
|
||||
EditSetNewText(hwnd,lpData,cbData);
|
||||
*iEncoding = CPI_UTF8;
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,lpData,cbData);
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,lpData);
|
||||
}
|
||||
FreeMem(lpData);
|
||||
}
|
||||
@ -1197,7 +1200,7 @@ bool EditLoadFile(
|
||||
FreeMem(lpDataWide);
|
||||
EditSetNewText(hwnd,"",0);
|
||||
EditSetNewText(hwnd,lpData,cbData);
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,lpData,cbData);
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,lpData);
|
||||
FreeMem(lpData);
|
||||
}
|
||||
else {
|
||||
@ -1220,7 +1223,7 @@ bool EditLoadFile(
|
||||
*iEncoding = Encoding_IsValid(iForcedEncoding) ? iForcedEncoding : iPreferedEncoding;
|
||||
EditSetNewText(hwnd,"",0);
|
||||
EditSetNewText(hwnd,lpData,cbData);
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,lpData,cbData);
|
||||
*iEOLMode = EditDetectEOLMode(hwnd,lpData);
|
||||
FreeMem(lpData);
|
||||
}
|
||||
}
|
||||
|
||||
@ -32,7 +32,7 @@ bool EditSetClipboardText(HWND, const char*);
|
||||
bool EditClearClipboard(HWND);
|
||||
bool EditSwapClipboard(HWND,bool);
|
||||
bool EditCopyAppend(HWND,bool);
|
||||
int EditDetectEOLMode(HWND,char*,DWORD);
|
||||
int EditDetectEOLMode(HWND,char*);
|
||||
bool EditLoadFile(HWND,LPCWSTR,bool,bool,int*,int*,bool*,bool*,bool*);
|
||||
bool EditSaveFile(HWND,LPCWSTR,int,bool*,bool);
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user