mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-08 14:35:58 +02:00
SynEdit: Trimming Spaces, fixed trim on edit
git-svn-id: trunk@19118 -
This commit is contained in:
parent
56ae429345
commit
a65594caeb
@ -51,6 +51,7 @@ type
|
|||||||
fLockList : TStringList;
|
fLockList : TStringList;
|
||||||
FLineEdited: Boolean;
|
FLineEdited: Boolean;
|
||||||
procedure DoCaretChanged(Sender : TObject);
|
procedure DoCaretChanged(Sender : TObject);
|
||||||
|
Procedure LinesChanged(Sender: TSynEditStrings; AIndex, ACount : Integer);
|
||||||
procedure SetEnabled(const AValue : Boolean);
|
procedure SetEnabled(const AValue : Boolean);
|
||||||
procedure SetTrimType(const AValue: TSynEditStringTrimmingType);
|
procedure SetTrimType(const AValue: TSynEditStringTrimmingType);
|
||||||
function TrimLine(const S : String; Index: Integer; RealUndo: Boolean = False) : String;
|
function TrimLine(const S : String; Index: Integer; RealUndo: Boolean = False) : String;
|
||||||
@ -282,10 +283,14 @@ begin
|
|||||||
FLineEdited := False;
|
FLineEdited := False;
|
||||||
FTrimType := settLeaveLine;
|
FTrimType := settLeaveLine;
|
||||||
Inherited Create(ASynStringSource);
|
Inherited Create(ASynStringSource);
|
||||||
|
fSynStrings.AddChangeHandler(senrLineCount, {$IFDEF FPC}@{$ENDIF}LinesChanged);
|
||||||
|
fSynStrings.AddChangeHandler(senrLineChange, {$IFDEF FPC}@{$ENDIF}LinesChanged);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
destructor TSynEditStringTrimmingList.Destroy;
|
destructor TSynEditStringTrimmingList.Destroy;
|
||||||
begin
|
begin
|
||||||
|
fSynStrings.RemoveChangeHandler(senrLineCount, {$IFDEF FPC}@{$ENDIF}LinesChanged);
|
||||||
|
fSynStrings.RemoveChangeHandler(senrLineChange, {$IFDEF FPC}@{$ENDIF}LinesChanged);
|
||||||
fCaret.RemoveChangeHandler(@DoCaretChanged);
|
fCaret.RemoveChangeHandler(@DoCaretChanged);
|
||||||
FreeAndNil(fLockList);
|
FreeAndNil(fLockList);
|
||||||
inherited Destroy;
|
inherited Destroy;
|
||||||
@ -308,13 +313,13 @@ begin
|
|||||||
exit;
|
exit;
|
||||||
end;
|
end;
|
||||||
FIsTrimming := True;
|
FIsTrimming := True;
|
||||||
s := fSynStrings[fLineIndex];
|
SendNotification(senrLineChange, self, fLineIndex, 1);
|
||||||
fSynStrings[fLineIndex] := s; // trigger OnPutted, so the line gets repainted
|
|
||||||
if (fLineIndex <> TSynEditCaret(Sender).LinePos - 1) then begin
|
if (fLineIndex <> TSynEditCaret(Sender).LinePos - 1) then begin
|
||||||
UndoList.AppendToLastChange(TSynEditUndoTrimForget.Create(FLineIndex+1, FSpaces));
|
UndoList.AppendToLastChange(TSynEditUndoTrimForget.Create(FLineIndex+1, FSpaces));
|
||||||
fSpaces := '';
|
fSpaces := '';
|
||||||
end else begin
|
end else begin
|
||||||
// same line, only right of caret
|
// same line, only right of caret
|
||||||
|
s := fSynStrings[fLineIndex];
|
||||||
i := TSynEditCaret(Sender).BytePos;
|
i := TSynEditCaret(Sender).BytePos;
|
||||||
if i <= length(s) + 1 then
|
if i <= length(s) + 1 then
|
||||||
j := 0
|
j := 0
|
||||||
@ -329,6 +334,15 @@ begin
|
|||||||
fLineIndex := TSynEditCaret(Sender).LinePos - 1;
|
fLineIndex := TSynEditCaret(Sender).LinePos - 1;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TSynEditStringTrimmingList.LinesChanged(Sender: TSynEditStrings; AIndex, ACount: Integer);
|
||||||
|
begin
|
||||||
|
if FIsTrimming then
|
||||||
|
exit;
|
||||||
|
FLineEdited := true;
|
||||||
|
if fLockCount = 0 then
|
||||||
|
DoCaretChanged(fCaret);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TSynEditStringTrimmingList.SetEnabled(const AValue : Boolean);
|
procedure TSynEditStringTrimmingList.SetEnabled(const AValue : Boolean);
|
||||||
begin
|
begin
|
||||||
if fEnabled = AValue then exit;
|
if fEnabled = AValue then exit;
|
||||||
|
Loading…
Reference in New Issue
Block a user