diff --git a/Versions/build.txt b/Versions/build.txt index cba31327f..bdc2aeae6 100644 --- a/Versions/build.txt +++ b/Versions/build.txt @@ -1 +1 @@ -1716 +1717 diff --git a/res/Notepad3.exe.manifest.conf b/res/Notepad3.exe.manifest.conf index 6c9d201af..b9f19dad1 100644 --- a/res/Notepad3.exe.manifest.conf +++ b/res/Notepad3.exe.manifest.conf @@ -3,7 +3,7 @@ Notepad3 RC diff --git a/src/Edit.c b/src/Edit.c index 3b91e8de5..9620a8a37 100644 --- a/src/Edit.c +++ b/src/Edit.c @@ -103,34 +103,6 @@ enum SortOrderMask { }; -//============================================================================= -// -// _EnterTargetTransaction(), _LeaveTargetTransaction() -// -static volatile LONG s_lTargetTransactionGuard = 0L; - -static bool _IsInTargetTransaction() -{ - return (InterlockedOr(&s_lTargetTransactionGuard, 0L) != 0L); -} - -static void _EnterTargetTransaction() -{ - InterlockedIncrement(&s_lTargetTransactionGuard); -} - -static void _LeaveTargetTransaction() -{ - if (_IsInTargetTransaction()) { - InterlockedDecrement(&s_lTargetTransactionGuard); - } -} - -#define _ENTER_TARGET_TRANSACTION_ __try { _EnterTargetTransaction(); -#define _LEAVE_TARGET_TRANSACTION_ } __finally { _LeaveTargetTransaction(); } - - - //============================================================================= // // Delay Message Queue Handling (TODO: MultiThreading) @@ -327,10 +299,11 @@ void EditSetNewText(HWND hwnd, const char* lpstrText, DocPos lenText, bool bClea // set new text if (lenText > 0) { - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); SciCall_TargetWholeDocument(); SciCall_ReplaceTarget(lenText, lpstrText); - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore } else { SciCall_ClearAll(); @@ -1719,15 +1692,18 @@ void EditURLEncode(HWND hwnd) DWORD const cchEscapedEnc = WideCharToMultiByte(Encoding_SciCP, 0, pszEscapedW, cchEscapedW, pszEscaped, (MBWC_DocPos_Cast)cchEscaped, NULL, NULL); - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); + if (iCurPos < iAnchorPos) SciCall_SetTargetRange(iCurPos, iAnchorPos); else SciCall_SetTargetRange(iAnchorPos, iCurPos); SciCall_ReplaceTarget(cchEscapedEnc, pszEscaped); - _LEAVE_TARGET_TRANSACTION_; - + + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore + if (iCurPos < iAnchorPos) EditSetSelectionEx(hwnd, iCurPos + cchEscapedEnc, iCurPos, -1, -1); @@ -1787,14 +1763,17 @@ void EditURLDecode(HWND hwnd) DWORD const cchUnescapedDec = WideCharToMultiByte(Encoding_SciCP, 0, pszUnescapedW, cchUnescapedW, pszUnescaped, (MBWC_DocPos_Cast)cchUnescaped, NULL, NULL); - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); + if (iCurPos < iAnchorPos) SciCall_SetTargetRange(iCurPos, iAnchorPos); else SciCall_SetTargetRange(iAnchorPos, iCurPos); SciCall_ReplaceTarget(cchUnescapedDec, pszUnescaped); - _LEAVE_TARGET_TRANSACTION_; + + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore if (iCurPos < iAnchorPos) EditSetSelectionEx(hwnd, iCurPos + cchUnescapedDec, iCurPos, -1, -1); @@ -2206,10 +2185,11 @@ void EditTabsToSpaces(HWND hwnd,int nTabWidth,bool bOnlyIndentingWS) iCurPos = iSelStart + cchConvM; } - _ENTER_TARGET_TRANSACTION_; - SendMessage(hwnd, SCI_SETTARGETRANGE, iSelStart, iSelEnd); - SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)cchConvM, (LPARAM)pszText2); - _LEAVE_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); + SciCall_SetTargetRange(iSelStart, iSelEnd); + SciCall_ReplaceTarget(cchConvM, pszText2); + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore EditSetSelectionEx(hwnd, iAnchorPos, iCurPos, -1, -1); @@ -2320,10 +2300,11 @@ void EditSpacesToTabs(HWND hwnd,int nTabWidth,bool bOnlyIndentingWS) iCurPos = iSelStart + cchConvM; } - _ENTER_TARGET_TRANSACTION_; - SendMessage(hwnd, SCI_SETTARGETRANGE, iSelStart, iSelEnd); - SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)cchConvM, (LPARAM)pszText2); - _LEAVE_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); + SciCall_SetTargetRange(iSelStart, iSelEnd); + SciCall_ReplaceTarget(cchConvM, pszText2); + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore EditSetSelectionEx(hwnd, iAnchorPos, iCurPos, -1, -1); @@ -2614,7 +2595,9 @@ void EditModifyLines(HWND hwnd,LPCWSTR pwszPrefix,LPCWSTR pwszAppend) } _IGNORE_NOTIFY_CHANGE_; - _ENTER_TARGET_TRANSACTION_; + + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); for (iLine = iLineStart; iLine <= iLineEnd; iLine++) { @@ -2635,8 +2618,8 @@ void EditModifyLines(HWND hwnd,LPCWSTR pwszPrefix,LPCWSTR pwszAppend) iPrefixNum++; } iPos = SciCall_PositionFromLine(iLine); - SendMessage(hwnd, SCI_SETTARGETRANGE, iPos, iPos); - SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)-1, (LPARAM)mszInsert); + SciCall_SetTargetRange(iPos, iPos); + SciCall_ReplaceTarget(-1, mszInsert); } if (StrIsNotEmpty(pwszAppend)) { @@ -2654,12 +2637,12 @@ void EditModifyLines(HWND hwnd,LPCWSTR pwszPrefix,LPCWSTR pwszAppend) iAppendNum++; } iPos = SciCall_GetLineEndPosition(iLine); - SendMessage(hwnd, SCI_SETTARGETRANGE, iPos, iPos); - SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)-1, (LPARAM)mszInsert); + SciCall_SetTargetRange(iPos, iPos); + SciCall_ReplaceTarget(-1, mszInsert); } } - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore _OBSERVE_NOTIFY_CHANGE_; // extend selection to start of first line @@ -2833,7 +2816,8 @@ void EditAlignText(HWND hwnd, int nMode) if (chNewLineBuf && wchLineBuf && wchNewLineBuf) { _IGNORE_NOTIFY_CHANGE_; - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); for (DocLn iLine = iLineStart; iLine <= iLineEnd; iLine++) { DocPos const iStartPos = SciCall_PositionFromLine(iLine); @@ -2981,7 +2965,7 @@ void EditAlignText(HWND hwnd, int nMode) } } } - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore _OBSERVE_NOTIFY_CHANGE_; FreeMem(pWords); @@ -3032,19 +3016,20 @@ void EditEncloseSelection(HWND hwnd, LPCWSTR pwszOpen, LPCWSTR pwszClose) DocPos const iLenOpen = (DocPos)StringCchLenA(mszOpen, COUNTOF(mszOpen)); DocPos const iLenClose = (DocPos)StringCchLenA(mszClose, COUNTOF(mszClose)); - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); if (iLenOpen > 0) { - SendMessage(hwnd, SCI_SETTARGETRANGE, iSelStart, iSelStart); - SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)-1, (LPARAM)mszOpen); + SciCall_SetTargetRange(iSelStart, iSelStart); + SciCall_ReplaceTarget(-1, mszOpen); } if (iLenClose > 0) { - SendMessage(hwnd, SCI_SETTARGETRANGE, iSelEnd + iLenOpen, iSelEnd + iLenOpen); - SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)-1, (LPARAM)mszClose); + SciCall_SetTargetRange(iSelEnd + iLenOpen, iSelEnd + iLenOpen); + SciCall_ReplaceTarget(-1, mszClose); } - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore // Fix selection EditSetSelectionEx(hwnd, iAnchorPos + iLenOpen, iCurPos + iLenOpen, -1, -1); @@ -3106,7 +3091,8 @@ void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart) _IGNORE_NOTIFY_CHANGE_; - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); int iAction = 0; @@ -3159,7 +3145,7 @@ void EditToggleLineComments(HWND hwnd, LPCWSTR pwszComment, bool bInsertAtStart) } } - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore _OBSERVE_NOTIFY_CHANGE_; if (iCurPos < iAnchorPos) @@ -3186,7 +3172,8 @@ static DocPos _AppendSpaces(HWND hwnd, DocLn iLineStart, DocLn iLineEnd, DocPos DocPos spcCount = 0; _IGNORE_NOTIFY_CHANGE_; - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); //const bool bIsSelectionRectangle = SciCall_IsSelectionRectangle(); @@ -3210,7 +3197,7 @@ static DocPos _AppendSpaces(HWND hwnd, DocLn iLineStart, DocLn iLineEnd, DocPos spcCount += iPadLen; } - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore _OBSERVE_NOTIFY_CHANGE_; FreeMem(pmszPadStr); @@ -3340,7 +3327,8 @@ void EditStripFirstCharacter(HWND hwnd) DocLn const iLineEnd = SciCall_LineFromPosition(iSelEnd); _IGNORE_NOTIFY_CHANGE_; - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); if (SciCall_IsSelectionRectangle()) { @@ -3393,7 +3381,7 @@ void EditStripFirstCharacter(HWND hwnd) } } } - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore _OBSERVE_NOTIFY_CHANGE_; } @@ -3412,7 +3400,8 @@ void EditStripLastCharacter(HWND hwnd, bool bIgnoreSelection, bool bTrailingBlan DocLn const iLineEnd = SciCall_LineFromPosition(iSelEnd); _IGNORE_NOTIFY_CHANGE_; - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); if (SciCall_IsSelectionRectangle() && !bIgnoreSelection) { @@ -3511,7 +3500,7 @@ void EditStripLastCharacter(HWND hwnd, bool bIgnoreSelection, bool bTrailingBlan } } } - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore _OBSERVE_NOTIFY_CHANGE_; } @@ -3645,7 +3634,8 @@ void EditCompressBlanks(HWND hwnd) if (bModified) { - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); if (!SciCall_IsSelectionEmpty()) { SciCall_TargetFromSelection(); @@ -3655,7 +3645,7 @@ void EditCompressBlanks(HWND hwnd) } SciCall_ReplaceTarget(-1, pszOut); - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore DocPos const iNewLen = (DocPos)StringCchLenA(pszOut, cch + 1); @@ -3702,7 +3692,8 @@ void EditRemoveBlankLines(HWND hwnd, bool bMerge, bool bRemoveWhiteSpace) if ((iSelEnd <= SciCall_PositionFromLine(iEndLine)) && (iEndLine != SciCall_GetLineCount() - 1)) { --iEndLine; } _IGNORE_NOTIFY_CHANGE_; - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); for (DocLn iLine = iBegLine; iLine <= iEndLine; ) { @@ -3746,7 +3737,7 @@ void EditRemoveBlankLines(HWND hwnd, bool bMerge, bool bRemoveWhiteSpace) iEndLine -= nBlanks; } } - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore _OBSERVE_NOTIFY_CHANGE_; } @@ -3782,7 +3773,8 @@ void EditRemoveDuplicateLines(HWND hwnd, bool bRemoveEmptyLines) if ((iEndLine - iStartLine) <= 1) { return; } _IGNORE_NOTIFY_CHANGE_; - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); for (DocLn iCurLine = iStartLine; iCurLine < iEndLine; ++iCurLine) { @@ -3818,7 +3810,7 @@ void EditRemoveDuplicateLines(HWND hwnd, bool bRemoveEmptyLines) } // empty } - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore _OBSERVE_NOTIFY_CHANGE_; } @@ -3964,10 +3956,11 @@ void EditWrapToColumn(HWND hwnd,DocPos nColumn/*,int nTabWidth*/) iAnchorPos = iCurPos; } - _ENTER_TARGET_TRANSACTION_; - SendMessage(hwnd, SCI_SETTARGETRANGE, iSelStart, iSelEnd); - SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)cchConvM, (LPARAM)pszText); - _LEAVE_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); + SciCall_SetTargetRange(iSelStart, iSelEnd); + SciCall_ReplaceTarget(cchConvM, pszText); + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore FreeMem(pszText); @@ -3985,10 +3978,12 @@ void EditWrapToColumn(HWND hwnd,DocPos nColumn/*,int nTabWidth*/) // void EditSplitLines(HWND hwnd) { - _ENTER_TARGET_TRANSACTION_; + UNUSED(hwnd); + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); SciCall_TargetFromSelection(); - SendMessage(hwnd, SCI_LINESSPLIT, 0, 0); - _LEAVE_TARGET_TRANSACTION_; + SciCall_LinesSplit(); + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore } @@ -3998,11 +3993,6 @@ void EditSplitLines(HWND hwnd) // // Customized version of SCI_LINESJOIN (w/o using TARGET transaction) // -// ~_ENTER_TARGET_TRANSACTION_; -// ~SciCall_TargetFromSelection(); -// ~SendMessage(Globals.hwndEdit, SCI_LINESJOIN, 0, 0); -// ~_LEAVE_TARGET_TRANSACTION_; -// void EditJoinLinesEx(HWND hwnd, bool bPreserveParagraphs, bool bCRLF2Space) { bool bModified = false; @@ -4081,10 +4071,11 @@ void EditJoinLinesEx(HWND hwnd, bool bPreserveParagraphs, bool bCRLF2Space) iCurPos = iSelStart + cchJoin; } - _ENTER_TARGET_TRANSACTION_; - SendMessage(hwnd, SCI_SETTARGETRANGE, iSelStart, iSelEnd); - SendMessage(hwnd, SCI_REPLACETARGET, (WPARAM)cchJoin, (LPARAM)pszJoin); - _LEAVE_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); + SciCall_SetTargetRange(iSelStart, iSelEnd); + SciCall_ReplaceTarget(cchJoin, pszJoin); + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore EditSetSelectionEx(hwnd, iAnchorPos, iCurPos, -1, -1); } @@ -4348,11 +4339,12 @@ void EditSortLines(HWND hwnd, int iSortFlags) } } - _ENTER_TARGET_TRANSACTION_; - //SciCall_SetTargetRange(SciCall_PositionFromLine(iLineStart), SciCall_PositionFromLine(iLineEnd + 1)); + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); +//SciCall_SetTargetRange(SciCall_PositionFromLine(iLineStart), SciCall_PositionFromLine(iLineEnd + 1)); SciCall_SetTargetRange(SciCall_PositionFromLine(iLineStart), SciCall_GetLineEndPosition(iLineEnd)); SciCall_ReplaceTarget(-1, pmszResult); - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore FreeMem(pmszResult); if (bIsRectSel) { @@ -4923,7 +4915,7 @@ static int _EditGetFindStrg(HWND hwnd, LPCEDITFINDREPLACE lpefr, LPSTR szFind, // _FindInTarget() // static DocPos _FindInTarget(HWND hwnd, LPCSTR szFind, DocPos length, int flags, - DocPos* start, DocPos* end, bool bForceNext, FR_UPD_MODES fMode) + DocPos* start, DocPos* end, bool bForceNext, FR_UPD_MODES fMode) { UNUSED(hwnd); @@ -4932,7 +4924,8 @@ static DocPos _FindInTarget(HWND hwnd, LPCSTR szFind, DocPos length, int flags, bool const bFindPrev = (_start > _end); DocPos iPos = 0; - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); SciCall_SetSearchFlags(flags); SciCall_SetTargetRange(_start, _end); @@ -4968,7 +4961,8 @@ static DocPos _FindInTarget(HWND hwnd, LPCSTR szFind, DocPos length, int flags, Globals.FindReplaceMatchFoundState = (fMode != FRMOD_WRAPED) ? (bFindPrev ? PRV_NOT_FND : NXT_NOT_FND) : FND_NOP; } } - _LEAVE_TARGET_TRANSACTION_; + + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore return iPos; } @@ -6153,8 +6147,6 @@ bool EditFindPrev(HWND hwnd, LPCEDITFINDREPLACE lpefr, bool bExtendSelection, bo // void EditMarkAllOccurrences(HWND hwnd, bool bForceClear) { - if (_IsInTargetTransaction()) { return; } // do not block, next event occurs for sure - if (bForceClear) { EditClearAllOccurrenceMarkers(hwnd); } @@ -6167,8 +6159,8 @@ void EditMarkAllOccurrences(HWND hwnd, bool bForceClear) bool const bWaitCursor = (Globals.iMarkOccurrencesCount > 4000) ? true : false; if (bWaitCursor) { BeginWaitCursor(NULL); } + _IGNORE_NOTIFY_CHANGE_; - _ENTER_TARGET_TRANSACTION_; if (Settings.MarkOccurrencesMatchVisible) { @@ -6186,8 +6178,8 @@ void EditMarkAllOccurrences(HWND hwnd, bool bForceClear) EditMarkAll(hwnd, NULL, Settings.MarkOccurrencesCurrentWord, 0, Sci_GetDocEndPosition(), Settings.MarkOccurrencesMatchCase, Settings.MarkOccurrencesMatchWholeWords); } - _LEAVE_TARGET_TRANSACTION_; _OBSERVE_NOTIFY_CHANGE_; + if (bWaitCursor) { EndWaitCursor(); } } @@ -6259,17 +6251,16 @@ bool EditReplace(HWND hwnd, LPCEDITFINDREPLACE lpefr) { return EditFindNext(hwnd, lpefr, false, false); } - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); SciCall_TargetFromSelection(); Sci_ReplaceTarget(iReplaceMsg, -1, pszReplace); - Globals.iReplacedOccurrences = 1; - // move caret behind replacement SciCall_SetCurrentPos(SciCall_GetTargetEnd()); + Globals.iReplacedOccurrences = 1; - _LEAVE_TARGET_TRANSACTION_; - + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore FreeMem(pszReplace); return EditFindNext(hwnd, lpefr, false, false); @@ -6366,14 +6357,15 @@ int EditReplaceAllInRange(HWND hwnd, LPCEDITFINDREPLACE lpefr, DocPos iStartPos, start = pPosPair->beg + totalReplLength; end = pPosPair->end + totalReplLength; } - _ENTER_TARGET_TRANSACTION_; + DocPos const saveTargetBeg = SciCall_GetTargetStart(); + DocPos const saveTargetEnd = SciCall_GetTargetEnd(); SciCall_SetTargetRange(start, end); DocPos const replLen = Sci_ReplaceTarget(iReplaceMsg, -1, pszReplace); totalReplLength += replLen + pPosPair->beg - pPosPair->end; searchStart = (start != end) ? SciCall_GetTargetEnd() : SciCall_GetTargetEnd() + 1; // zero-find-length - _LEAVE_TARGET_TRANSACTION_; + SciCall_SetTargetRange(saveTargetBeg, saveTargetEnd); //restore } _OBSERVE_NOTIFY_CHANGE_; diff --git a/src/SciCall.h b/src/SciCall.h index 59016b2b1..a7c7db0bd 100644 --- a/src/SciCall.h +++ b/src/SciCall.h @@ -144,6 +144,8 @@ DeclareSciCallV0(GrabFocus, GRABFOCUS) DeclareSciCallV1(SetFocus, SETFOCUS, bool, flag) DeclareSciCallR0(GetFocus, GETFOCUS, bool) +DeclareSciCallV0(LinesSplit, LINESSPLIT) + DeclareSciCallV1(SetEmptySelection, SETEMPTYSELECTION, DocPos, position) DeclareSciCallR0(GetCurrentPos, GETCURRENTPOS, DocPos) DeclareSciCallR0(GetAnchor, GETANCHOR, DocPos) diff --git a/src/VersionEx.h b/src/VersionEx.h index 786321e6f..685ba5b4b 100644 --- a/src/VersionEx.h +++ b/src/VersionEx.h @@ -7,8 +7,8 @@ #define SAPPNAME "Notepad3" #define VERSION_MAJOR 5 #define VERSION_MINOR 19 -#define VERSION_REV 520 -#define VERSION_BUILD 1716 +#define VERSION_REV 521 +#define VERSION_BUILD 1717 #define SCINTILLA_VER 415+ #define ONIGMO_REGEX_VER 6.2.0 #define VERSION_PATCH RC