mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-08 09:36:42 +02:00
MG: fixed block unindenting
git-svn-id: trunk@342 -
This commit is contained in:
parent
596a86978a
commit
1116a10725
@ -6321,11 +6321,7 @@ procedure TCustomSynEdit.DoBlockUnindent;
|
|||||||
var
|
var
|
||||||
OrgCaretPos,
|
OrgCaretPos,
|
||||||
BB, BE: TPoint;
|
BB, BE: TPoint;
|
||||||
{$IFDEF FPC}
|
|
||||||
FullStrToDelete: AnsiString;
|
|
||||||
{$ELSE}
|
|
||||||
FullStrToDelete: PChar;
|
FullStrToDelete: PChar;
|
||||||
{$ENDIF}
|
|
||||||
Line, Run,
|
Line, Run,
|
||||||
StrToDelete: PChar;
|
StrToDelete: PChar;
|
||||||
Len,
|
Len,
|
||||||
@ -6370,26 +6366,26 @@ begin
|
|||||||
// build string to delete
|
// build string to delete
|
||||||
StrToDeleteLen := (FTabWidth + 2) * (e - BB.y) + FTabWidth + 1;
|
StrToDeleteLen := (FTabWidth + 2) * (e - BB.y) + FTabWidth + 1;
|
||||||
// chars per line * lines-1 + last line + null char
|
// chars per line * lines-1 + last line + null char
|
||||||
StrToDelete := StrAlloc(StrToDeleteLen);
|
FullStrToDelete := StrAlloc(StrToDeleteLen);
|
||||||
try
|
try
|
||||||
StrToDelete[0] := #0;
|
FullStrToDelete[0] := #0;
|
||||||
SomethingToDelete := False;
|
SomethingToDelete := False;
|
||||||
for x := BB.Y to e-1 do
|
for x := BB.Y to e-1 do
|
||||||
begin
|
begin
|
||||||
Line := PChar(Lines[x-1]);
|
Line := PChar(Lines[x-1]);
|
||||||
TempString:=StringOfChar(' ', GetDelLen);
|
TempString:=StringOfChar(' ', GetDelLen);
|
||||||
StrCat(StrToDelete,PChar(TempString));
|
StrCat(FullStrToDelete,PChar(TempString));
|
||||||
StrCat(StrToDelete,PChar(#13#10));
|
StrCat(FullStrToDelete,PChar(#13#10));
|
||||||
end;
|
end;
|
||||||
Line := PChar(Lines[e-1]);
|
Line := PChar(Lines[e-1]);
|
||||||
TempString:=StringOfChar(' ', GetDelLen);
|
TempString:=StringOfChar(' ', GetDelLen);
|
||||||
StrCat(StrToDelete,PChar(TempString));
|
StrCat(FullStrToDelete,PChar(TempString));
|
||||||
|
|
||||||
FirstIndent := -1;
|
FirstIndent := -1;
|
||||||
// Delete string
|
// Delete string
|
||||||
if SomethingToDelete then
|
if SomethingToDelete then
|
||||||
begin
|
begin
|
||||||
FullStrToDelete := StrToDelete;
|
StrToDelete := FullStrToDelete;
|
||||||
CaretY := BB.Y;
|
CaretY := BB.Y;
|
||||||
repeat
|
repeat
|
||||||
Run := GetEOL(StrToDelete);
|
Run := GetEOL(StrToDelete);
|
||||||
@ -6413,7 +6409,7 @@ begin
|
|||||||
StrToDelete := Run;
|
StrToDelete := Run;
|
||||||
until Run^ = #0;
|
until Run^ = #0;
|
||||||
LastIndent := Len;
|
LastIndent := Len;
|
||||||
fUndoList.AddChange(crUnindent, BB, BE, FullStrToDelete, smColumn);
|
fUndoList.AddChange(crUnindent, BB, BE, StrToDelete, smColumn);
|
||||||
end;
|
end;
|
||||||
// restore selection
|
// restore selection
|
||||||
fSelectionMode := OrgSelectionMode;
|
fSelectionMode := OrgSelectionMode;
|
||||||
@ -6422,7 +6418,7 @@ begin
|
|||||||
SetCaretAndSelection(OrgCaretPos, Point(BB.x - FirstIndent, BB.Y),
|
SetCaretAndSelection(OrgCaretPos, Point(BB.x - FirstIndent, BB.Y),
|
||||||
Point(BE.x - LastIndent, BE.y));
|
Point(BE.x - LastIndent, BE.y));
|
||||||
finally
|
finally
|
||||||
StrDispose(StrToDelete);
|
StrDispose(FullStrToDelete);
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
Loading…
Reference in New Issue
Block a user