SynEdit: Trailing-Space-Trimmer, clean up / better workaround for syncro edit

git-svn-id: trunk@60078 -
This commit is contained in:
martin 2019-01-14 01:45:01 +00:00
parent 26d29fe3be
commit 02479b4a1f

View File

@ -561,12 +561,12 @@ begin
if (not fEnabled) then exit;
if (fLockCount > 0) or (length(fSpaces) = 0) or
(fLineIndex < 0) or (fLineIndex >= fSynStrings.Count) or
( (fLineIndex = TSynEditCaret(Sender).LinePos - 1) and
( (fLineIndex = ToIdx(TSynEditCaret(Sender).LinePos)) and
( (FTrimType in [settLeaveLine]) or
((FTrimType in [settEditLine]) and not FLineEdited) ))
then begin
if (fLineIndex <> TSynEditCaret(Sender).LinePos - 1) then begin
{$IFDEF SynTrimDebug}debugln(['--- Trimmer -- CaretChnaged - Clearing 1 ', ' fLineIndex=', fLineIndex, ' fSpaces=',length(fSpaces), 'newCaretYPos=',TSynEditCaret(Sender).LinePos]);{$ENDIF}
if (fLineIndex <> ToIdx(TSynEditCaret(Sender).LinePos)) then begin
{$IFDEF SynTrimDebug}debugln(['--- Trimmer -- CaretChanged - Clearing 1 ', ' fLineIndex=', fLineIndex, ' fSpaces=',length(fSpaces), 'newCaretYPos=',TSynEditCaret(Sender).LinePos]);{$ENDIF}
if fSpaces <> '' then IncViewChangeStamp;
fLineIndex := TSynEditCaret(Sender).LinePos - 1;
fSpaces := '';
@ -579,7 +579,7 @@ begin
if (fLineIndex <> TSynEditCaret(Sender).LinePos - 1) or
(FTrimType = settIgnoreAll) then
begin
{$IFDEF SynTrimDebug}debugln(['--- Trimmer -- CaretChnaged - Trimming,clear 1 ', ' fLineIndex=', fLineIndex, ' fSpaces=',length(fSpaces), 'newCaretYPos=',TSynEditCaret(Sender).LinePos]);{$ENDIF}
{$IFDEF SynTrimDebug}debugln(['--- Trimmer -- CaretChanged - Trimming,clear 1 ', ' fLineIndex=', fLineIndex, ' fSpaces=',length(fSpaces), 'newCaretYPos=',TSynEditCaret(Sender).LinePos]);{$ENDIF}
MaybeAddUndoForget(FLineIndex+1, FSpaces);
i := length(FSpaces);
fSpaces := '';
@ -596,7 +596,7 @@ begin
else
j := i - length(s) - 1;
s := copy(FSpaces, j + 1, MaxInt);
{$IFDEF SynTrimDebug}debugln(['--- Trimmer -- CarteChnaged - Trimming,part to ',length(s),' ', ' fLineIndex=', fLineIndex, ' fSpaces=',length(fSpaces), 'newCaretYPos=',TSynEditCaret(Sender).LinePos]);{$ENDIF}
{$IFDEF SynTrimDebug}debugln(['--- Trimmer -- CaretChanged - Trimming,part to ',length(s),' ', ' fLineIndex=', fLineIndex, ' fSpaces=',length(fSpaces), 'newCaretYPos=',TSynEditCaret(Sender).LinePos]);{$ENDIF}
FSpaces := copy(FSpaces, 1, j);
i := length(s);
MaybeAddUndoForget(FLineIndex+1, s);
@ -815,6 +815,8 @@ procedure TSynEditStringTrimmingList.ForceTrim;
begin
FlushNotificationCache;
DoCaretChanged(fCaret); // Caret May be locked
if (fLockCount > 1) then
exit; // workaround for syncro edit
TrimAfterLock;
end;