MG: fixed block unindenting

git-svn-id: trunk@342 -
This commit is contained in:
lazarus 2001-10-08 17:33:36 +00:00
parent 596a86978a
commit 1116a10725

View File

@ -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;