mirror of
https://github.com/rizonesoft/Notepad3.git
synced 2026-06-17 21:03:19 +08:00
Merge pull request #1463 from RaiKoHoff/Dev_NF
Disable "NewLine" for AutoComplete fill-up
This commit is contained in:
commit
f4bb56a1a3
@ -39,6 +39,7 @@ SettingsVersion=4
|
||||
;WebTemplate2=https://en.wikipedia.org/w/index.php?search=%s
|
||||
;ExtendedWhiteSpaceChars=:
|
||||
;AutoCompleteWordCharSet=
|
||||
;AutoCompleteFillUpChars=
|
||||
;UpdateDelayMarkAllOccurrences=50
|
||||
;CurrentLineHorizontalSlop=40
|
||||
;CurrentLineVerticalSlop=5
|
||||
|
||||
@ -1 +1 @@
|
||||
2405
|
||||
2406
|
||||
|
||||
@ -3,7 +3,7 @@
|
||||
<assemblyIdentity
|
||||
name="Notepad3"
|
||||
processorArchitecture="*"
|
||||
version="5.19.725.2405"
|
||||
version="5.19.725.2406"
|
||||
type="win32"
|
||||
/>
|
||||
<description>Notepad3 BETA</description>
|
||||
|
||||
@ -728,6 +728,10 @@ void LoadSettings()
|
||||
IniSectionGetString(Settings2_Section, L"AutoCompleteWordCharSet", Defaults2.AutoCompleteWordCharSet,
|
||||
Settings2.AutoCompleteWordCharSet, COUNTOF(Settings2.AutoCompleteWordCharSet));
|
||||
|
||||
Defaults2.AutoCompleteFillUpChars[0] = L'\0';
|
||||
IniSectionGetString(Settings2_Section, L"AutoCompleteFillUpChars", Defaults2.AutoCompleteFillUpChars,
|
||||
Settings2.AutoCompleteFillUpChars, COUNTOF(Settings2.AutoCompleteFillUpChars));
|
||||
|
||||
StringCchCopyW(Defaults2.TimeStamp, COUNTOF(Defaults2.TimeStamp), L"\\$Date:[^\\$]+\\$ | $Date: %Y/%m/%d %H:%M:%S $");
|
||||
IniSectionGetString(Settings2_Section, L"TimeStamp", Defaults2.TimeStamp, Settings2.TimeStamp, COUNTOF(Settings2.TimeStamp));
|
||||
|
||||
@ -743,7 +747,6 @@ void LoadSettings()
|
||||
StringCchCopyW(Defaults2.WebTemplate2, COUNTOF(Defaults2.WebTemplate2), L"https://en.wikipedia.org/w/index.php?search=%s");
|
||||
IniSectionGetString(Settings2_Section, L"WebTemplate2", Defaults2.WebTemplate2, Settings2.WebTemplate2, COUNTOF(Settings2.WebTemplate2));
|
||||
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
const WCHAR* const Settings_Section = L"Settings";
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
78
src/Edit.c
78
src/Edit.c
@ -64,6 +64,9 @@ static char WordCharsAccelerated[ANSI_CHAR_BUFFER] = { '\0' };
|
||||
static char WhiteSpaceCharsAccelerated[ANSI_CHAR_BUFFER] = { '\0' };
|
||||
static char PunctuationCharsAccelerated[1] = { '\0' }; // empty!
|
||||
|
||||
static char AutoCompleteFillUpChars[64] = { '\0' };
|
||||
static bool s_ACFillUpCharsHaveNewLn = false;
|
||||
|
||||
// Default Codepage and Character Set
|
||||
#define W_AUTOC_WORD_ANSI1252 L"#$%&@0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ_abcdefghijklmnopqrstuvwxyzÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþÿ"
|
||||
static char AutoCompleteWordCharSet[ANSI_CHAR_BUFFER] = { L'\0' };
|
||||
@ -255,6 +258,22 @@ void EditInitWordDelimiter(HWND hwnd)
|
||||
StringCchCopyA(DelimCharsAccel, COUNTOF(DelimCharsAccel), WhiteSpaceCharsDefault);
|
||||
StringCchCatA(DelimCharsAccel, COUNTOF(DelimCharsAccel), lineEnds);
|
||||
|
||||
if (StrIsNotEmpty(Settings2.AutoCompleteFillUpChars))
|
||||
{
|
||||
WideCharToMultiByte(Encoding_SciCP, 0, Settings2.AutoCompleteFillUpChars, -1, AutoCompleteFillUpChars, COUNTOF(AutoCompleteFillUpChars), NULL, NULL);
|
||||
UnSlash(AutoCompleteFillUpChars, Encoding_SciCP);
|
||||
|
||||
s_ACFillUpCharsHaveNewLn = false;
|
||||
int i = 0;
|
||||
while (AutoCompleteFillUpChars[i]) {
|
||||
if ((AutoCompleteFillUpChars[i] == '\r') || (AutoCompleteFillUpChars[i] == '\n')) {
|
||||
s_ACFillUpCharsHaveNewLn = true;
|
||||
break;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
}
|
||||
|
||||
if (StrIsNotEmpty(Settings2.AutoCompleteWordCharSet))
|
||||
{
|
||||
WideCharToMultiByte(Encoding_SciCP, 0, Settings2.AutoCompleteWordCharSet, -1, AutoCompleteWordCharSet, COUNTOF(AutoCompleteWordCharSet), NULL, NULL);
|
||||
@ -741,8 +760,8 @@ bool EditCopyAppend(HWND hwnd, bool bAppend)
|
||||
HANDLE const hOld = GetClipboardData(CF_UNICODETEXT);
|
||||
const WCHAR* pszOld = GlobalLock(hOld);
|
||||
|
||||
int const _eol_mode = SciCall_GetEOLMode();
|
||||
const WCHAR *pszSep = ((_eol_mode == SC_EOL_CRLF) ? L"\r\n" : ((_eol_mode == SC_EOL_CR) ? L"\r" : L"\n"));
|
||||
WCHAR pszSep[3] = { L'\0' };
|
||||
Sci_GetCurrentEOL_W(pszSep);
|
||||
|
||||
size_t cchNewText = cchTextW;
|
||||
if (pszOld && *pszOld) {
|
||||
@ -3903,14 +3922,8 @@ void EditWrapToColumn(HWND hwnd,DocPos nColumn/*,int nTabWidth*/)
|
||||
return;
|
||||
}
|
||||
|
||||
int cchEOL = 2;
|
||||
WCHAR wszEOL[] = L"\r\n";
|
||||
int const cEOLMode = SciCall_GetEOLMode();
|
||||
if (cEOLMode == SC_EOL_CR)
|
||||
cchEOL = 1;
|
||||
else if (cEOLMode == SC_EOL_LF) {
|
||||
cchEOL = 1; wszEOL[0] = L'\n';
|
||||
}
|
||||
WCHAR wszEOL[3] = { L'\0' };
|
||||
int const cchEOL = Sci_GetCurrentEOL_W(wszEOL);
|
||||
|
||||
int cchConvW = 0;
|
||||
DocPos iLineLength = 0;
|
||||
@ -4065,23 +4078,8 @@ void EditJoinLinesEx(HWND hwnd, bool bPreserveParagraphs, bool bCRLF2Space)
|
||||
return;
|
||||
}
|
||||
|
||||
char szEOL[] = "\r\n";
|
||||
int cchEOL = 2;
|
||||
switch (SciCall_GetEOLMode())
|
||||
{
|
||||
case SC_EOL_LF:
|
||||
szEOL[0] = '\n';
|
||||
szEOL[1] = '\0';
|
||||
cchEOL = 1;
|
||||
break;
|
||||
case SC_EOL_CR:
|
||||
szEOL[1] = '\0';
|
||||
cchEOL = 1;
|
||||
break;
|
||||
case SC_EOL_CRLF:
|
||||
default:
|
||||
break;
|
||||
}
|
||||
char szEOL[3] = { '\0' };
|
||||
int const cchEOL = Sci_GetCurrentEOL_A(szEOL);
|
||||
|
||||
for (int i = 0; i < iSelLength; ++i)
|
||||
{
|
||||
@ -4208,15 +4206,8 @@ void EditSortLines(HWND hwnd, int iSortFlags)
|
||||
|
||||
DocLn const iLineCount = iLineEnd - iLineStart + 1;
|
||||
|
||||
int const cEOLMode = SciCall_GetEOLMode();
|
||||
char mszEOL[] = "\r\n";
|
||||
if (cEOLMode == SC_EOL_CR) {
|
||||
mszEOL[1] = '\0';
|
||||
}
|
||||
else if (cEOLMode == SC_EOL_LF) {
|
||||
mszEOL[0] = '\n';
|
||||
mszEOL[1] = '\0';
|
||||
}
|
||||
char mszEOL[3] = { '\0' };
|
||||
Sci_GetCurrentEOL_A(mszEOL);
|
||||
|
||||
int const _iTabWidth = SciCall_GetTabWidth();
|
||||
|
||||
@ -6705,6 +6696,16 @@ void EditMarkAll(HWND hwnd, char* pszFind, int flags, DocPos rangeStart, DocPos
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// EditCheckNewLineInACFillUps()
|
||||
//
|
||||
bool EditCheckNewLineInACFillUps()
|
||||
{
|
||||
return s_ACFillUpCharsHaveNewLn;
|
||||
}
|
||||
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// EditAutoCompleteWord()
|
||||
@ -6901,9 +6902,8 @@ bool EditAutoCompleteWord(HWND hwnd, bool autoInsert)
|
||||
SciCall_AutoCSetIgnoreCase(true);
|
||||
//SendMessage(hwnd, SCI_AUTOCSETCASEINSENSITIVEBEHAVIOUR, (WPARAM)SC_CASEINSENSITIVEBEHAVIOUR_IGNORECASE, 0);
|
||||
SciCall_AutoCSetChooseSingle(autoInsert);
|
||||
//SciCall_AutoCSetOrder(SC_ORDER_PERFORMSORT); // already sorted
|
||||
SciCall_AutoCSetFillups("\t\n\r");
|
||||
//SciCall_AutoCSetFillups(Settings.AccelWordNavigation ? WhiteSpaceCharsDefault : WhiteSpaceCharsAccelerated);
|
||||
//~SciCall_AutoCSetOrder(SC_ORDER_PERFORMSORT); // already sorted
|
||||
SciCall_AutoCSetFillups(AutoCompleteFillUpChars);
|
||||
|
||||
++iWListSize; // zero termination
|
||||
char* const pList = AllocMem(iWListSize, HEAP_ZERO_MEMORY);
|
||||
|
||||
@ -110,6 +110,7 @@ void EditFinalizeStyling(HWND hwnd, DocPos iEndPos);
|
||||
void EditUpdateIndicators(HWND hwnd, DocPos startPos, DocPos endPos, bool bClearOnly);
|
||||
void EditSetAccelWordNav(HWND hwnd,bool);
|
||||
bool EditAutoCompleteWord(HWND hwnd,bool);
|
||||
bool EditCheckNewLineInACFillUps();
|
||||
void EditShowZeroLengthCallTip(HWND hwnd, DocPos iPosition);
|
||||
void EditGetBookmarkList(HWND hwnd,LPWSTR pszBookMarks,int cchLength);
|
||||
void EditSetBookmarkList(HWND hwnd,LPCWSTR pszBookMarks);
|
||||
|
||||
@ -347,6 +347,7 @@ bool MRU_MergeSave(LPMRULIST pmru,bool,bool,bool);
|
||||
#define MRU_Count(pmru) MRU_Enum((pmru), 0, NULL, 0)
|
||||
|
||||
//==== UnSlash Functions ======================================================
|
||||
unsigned int UnSlash(char* s, UINT cpEdit);
|
||||
void TransformBackslashes(char* pszInput,bool,UINT cpEdit,int* iReplaceMsg);
|
||||
void TransformMetaChars(char* pszInput,bool,int iEOLMode);
|
||||
|
||||
|
||||
@ -3091,11 +3091,11 @@ LRESULT MsgInitMenu(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
}
|
||||
CheckMenuRadioItem(hmenu,IDM_ENCODING_ANSI,IDM_ENCODING_UTF8SIGN,i,MF_BYCOMMAND);
|
||||
|
||||
int const _eol_mode = SciCall_GetEOLMode();
|
||||
if (_eol_mode == SC_EOL_CRLF) {
|
||||
int const eol_mode = SciCall_GetEOLMode();
|
||||
if (eol_mode == SC_EOL_CRLF) {
|
||||
i = IDM_LINEENDINGS_CRLF;
|
||||
}
|
||||
else if (_eol_mode == SC_EOL_CR) {
|
||||
else if (eol_mode == SC_EOL_CR) {
|
||||
i = IDM_LINEENDINGS_CR;
|
||||
}
|
||||
else {
|
||||
@ -6787,8 +6787,8 @@ static void _HandleAutoIndent(int const charAdded)
|
||||
{
|
||||
// TODO: handle indent after '{' and un-indent on '}' in C/C++ ?
|
||||
// in CRLF mode handle LF only...
|
||||
int const _eol_mode = SciCall_GetEOLMode();
|
||||
if (((SC_EOL_CRLF == _eol_mode) && (charAdded != '\r')) || (SC_EOL_CRLF != _eol_mode))
|
||||
int const eol_mode = SciCall_GetEOLMode();
|
||||
if (((SC_EOL_CRLF == eol_mode) && (charAdded != '\r')) || (SC_EOL_CRLF != eol_mode))
|
||||
{
|
||||
DocPos const iCurPos = SciCall_GetCurrentPos();
|
||||
DocLn const iCurLine = SciCall_LineFromPosition(iCurPos);
|
||||
@ -7015,6 +7015,33 @@ static LRESULT _MsgNotifyFromEdit(HWND hwnd, const LPNMHDR pnmh, const SCNotific
|
||||
case SCN_CALLTIPCLICK:
|
||||
return 0;
|
||||
|
||||
case SCN_AUTOCSELECTION:
|
||||
{
|
||||
switch (scn->listCompletionMethod)
|
||||
{
|
||||
case SC_AC_TAB:
|
||||
case SC_AC_COMMAND:
|
||||
case SC_AC_DOUBLECLICK:
|
||||
// accepted
|
||||
break;
|
||||
|
||||
case SC_AC_FILLUP:
|
||||
// see: SciCall_AutoCSetFillups() -> accepted
|
||||
break;
|
||||
|
||||
case SC_AC_NEWLINE:
|
||||
if (!EditCheckNewLineInACFillUps()) {
|
||||
SciCall_AutoCCancel(); // rejected
|
||||
PostMessage(Globals.hwndEdit, SCI_NEWLINE, 0, 0);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
SciCall_AutoCCancel(); // rejected
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case SCN_MODIFIED:
|
||||
{
|
||||
@ -7394,10 +7421,10 @@ LRESULT MsgNotify(HWND hwnd, WPARAM wParam, LPARAM lParam)
|
||||
case STATUS_EOLMODE:
|
||||
{
|
||||
int i;
|
||||
int const _eol_mode = SciCall_GetEOLMode();
|
||||
if (_eol_mode == SC_EOL_CRLF)
|
||||
int const eol_mode = SciCall_GetEOLMode();
|
||||
if (eol_mode == SC_EOL_CRLF)
|
||||
i = IDM_LINEENDINGS_CRLF;
|
||||
else if (_eol_mode == SC_EOL_CR)
|
||||
else if (eol_mode == SC_EOL_CR)
|
||||
i = IDM_LINEENDINGS_CR;
|
||||
else
|
||||
i = IDM_LINEENDINGS_LF;
|
||||
@ -8632,17 +8659,17 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
if (s_iStatusbarVisible[STATUS_EOLMODE])
|
||||
{
|
||||
static int s_iEOLMode = -1;
|
||||
int const _eol_mode = SciCall_GetEOLMode();
|
||||
int const eol_mode = SciCall_GetEOLMode();
|
||||
|
||||
if (bForceRedraw || (s_iEOLMode != _eol_mode))
|
||||
if (bForceRedraw || (s_iEOLMode != eol_mode))
|
||||
{
|
||||
static WCHAR tchEOL[16] = { L'\0' };
|
||||
if (_eol_mode == SC_EOL_LF)
|
||||
if (eol_mode == SC_EOL_LF)
|
||||
{
|
||||
StringCchPrintf(tchStatusBar[STATUS_EOLMODE], txtWidth, (Globals.bDocHasInconsistentEOLs ? _LFi_f : _LF_f),
|
||||
s_mxSBPrefix[STATUS_EOLMODE], s_mxSBPostfix[STATUS_EOLMODE]);
|
||||
}
|
||||
else if (_eol_mode == SC_EOL_CR)
|
||||
else if (eol_mode == SC_EOL_CR)
|
||||
{
|
||||
StringCchPrintf(tchStatusBar[STATUS_EOLMODE], txtWidth, (Globals.bDocHasInconsistentEOLs ? _CRi_f : _CR_f),
|
||||
s_mxSBPrefix[STATUS_EOLMODE], s_mxSBPostfix[STATUS_EOLMODE]);
|
||||
@ -8651,7 +8678,7 @@ static void _UpdateStatusbarDelayed(bool bForceRedraw)
|
||||
StringCchPrintf(tchStatusBar[STATUS_EOLMODE], txtWidth, (Globals.bDocHasInconsistentEOLs ? _CRLFi_f : _CRLF_f),
|
||||
s_mxSBPrefix[STATUS_EOLMODE], s_mxSBPostfix[STATUS_EOLMODE]);
|
||||
}
|
||||
s_iEOLMode = _eol_mode;
|
||||
s_iEOLMode = eol_mode;
|
||||
bIsUpdateNeeded = true;
|
||||
}
|
||||
}
|
||||
|
||||
@ -539,8 +539,6 @@ DeclareSciCallR0(IsSelectionRectangle, SELECTIONISRECTANGLE, bool)
|
||||
|
||||
#define Sci_HaveUndoRedoHistory() (SciCall_CanUndo() || SciCall_CanRedo())
|
||||
|
||||
#define Sci_GetEOLLen() ((SciCall_GetEOLMode() == SC_EOL_CRLF) ? 2 : 1)
|
||||
|
||||
#define Sci_GetCurrentLineNumber() SciCall_LineFromPosition(SciCall_GetCurrentPos())
|
||||
#define Sci_GetLastDocLineNumber() (SciCall_GetLineCount() - 1)
|
||||
|
||||
@ -569,6 +567,46 @@ inline DocPos Sci_GetRangeMaxLineLength(DocLn iBeginLine, DocLn iEndLine) {
|
||||
|
||||
#define Sci_DisableMouseDWellNotification() SciCall_SetMouseDWellTime(SC_TIME_FOREVER)
|
||||
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
#define Sci_GetEOLLen() ((SciCall_GetEOLMode() == SC_EOL_CRLF) ? 2 : 1)
|
||||
|
||||
|
||||
inline int Sci_GetCurrentEOL_A(LPCH eol) {
|
||||
switch (SciCall_GetEOLMode()) {
|
||||
case SC_EOL_CRLF:
|
||||
eol[0] = '\r'; eol[1] = '\n'; eol[2] = '\0';
|
||||
return 2;
|
||||
case SC_EOL_CR:
|
||||
eol[0] = '\r'; eol[1] = '\0';
|
||||
return 1;
|
||||
case SC_EOL_LF:
|
||||
eol[0] = '\n'; eol[1] = '\0';
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
inline int Sci_GetCurrentEOL_W(LPWCH eol) {
|
||||
switch (SciCall_GetEOLMode()) {
|
||||
case SC_EOL_CRLF:
|
||||
eol[0] = L'\r'; eol[1] = L'\n'; eol[2] = L'\0';
|
||||
return 2;
|
||||
case SC_EOL_CR:
|
||||
eol[0] = L'\r'; eol[1] = L'\0';
|
||||
return 1;
|
||||
case SC_EOL_LF:
|
||||
eol[0] = L'\n'; eol[1] = L'\0';
|
||||
return 1;
|
||||
default:
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
// ----------------------------------------------------------------------------
|
||||
|
||||
|
||||
//=============================================================================
|
||||
|
||||
#endif //_NP3_SCICALL_H_
|
||||
|
||||
@ -502,6 +502,7 @@ typedef struct _settings2_t
|
||||
|
||||
WCHAR FileBrowserPath[MAX_PATH];
|
||||
WCHAR AppUserModelID[32];
|
||||
WCHAR AutoCompleteFillUpChars[64];
|
||||
WCHAR ExtendedWhiteSpaceChars[ANSI_CHAR_BUFFER + 1];
|
||||
WCHAR AutoCompleteWordCharSet[ANSI_CHAR_BUFFER + 1];
|
||||
WCHAR TimeStamp[128];
|
||||
|
||||
@ -66,10 +66,16 @@
|
||||
// Compiler specific
|
||||
|
||||
#if defined(_MSC_VER)
|
||||
#if (_MSC_VER >= 1920)
|
||||
#if(_MSC_FULL_VER >= 192127702)
|
||||
#if (_MSC_VER >= 1922)
|
||||
#if(_MSC_FULL_VER >= 192227905)
|
||||
#define VER_CPL MS Visual C++ 2019 v16.2.0
|
||||
#endif
|
||||
#elif (_MSC_VER >= 1921)
|
||||
#if(_MSC_FULL_VER >= 192127702)
|
||||
#define VER_CPL MS Visual C++ 2019 v16.1.(0-6)
|
||||
#elif(_MSC_FULL_VER >= 192027508)
|
||||
#endif
|
||||
#elif (_MSC_VER >= 1920)
|
||||
#if(_MSC_FULL_VER >= 192027508)
|
||||
#define VER_CPL MS Visual C++ 2019 v16.0.(0-4)
|
||||
#elif(_MSC_FULL_VER >= 192027027)
|
||||
#define VER_CPL MS Visual C++ 2019 v16.0.Prev(1-4)
|
||||
|
||||
@ -8,7 +8,7 @@
|
||||
#define VERSION_MAJOR 5
|
||||
#define VERSION_MINOR 19
|
||||
#define VERSION_REV 725
|
||||
#define VERSION_BUILD 2405
|
||||
#define VERSION_BUILD 2406
|
||||
#define SCINTILLA_VER 420
|
||||
#define ONIGURUMA_REGEX_VER 6.9.3
|
||||
#define VERSION_PATCH BETA
|
||||
|
||||
Loading…
Reference in New Issue
Block a user