mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-26 23:00:15 +02:00
Jedi code format: fix wrong error line number when formating selection.
This commit is contained in:
parent
52c27a7cd9
commit
f41f2bded2
@ -294,7 +294,6 @@ var
|
||||
sourceCode: string;
|
||||
BlockBegin, BlockEnd: TPoint;
|
||||
fcConverter: TConverter;
|
||||
lineStartOffset,lineEndOffset: integer;
|
||||
wi,EndY: integer;
|
||||
outputstr: string;
|
||||
begin
|
||||
@ -316,8 +315,7 @@ begin
|
||||
fcConverter.GuiMessages := false; //true;
|
||||
fcConverter.FileName := SourceEditorManagerIntf.ActiveEditor.FileName;
|
||||
fcConverter.OnIncludeFile := OnIncludeFile;
|
||||
FindLineOffsets(sourceCode,BlockBegin.Y,BlockEnd.Y,lineStartOffset,lineEndOffset);
|
||||
fcConverter.ConvertPart(lineStartOffset, lineEndOffset, True);
|
||||
fcConverter.ConvertRange(BlockBegin.Y, BlockEnd.Y, true);
|
||||
if not fcConverter.ConvertError then
|
||||
begin
|
||||
wI := length(fcConverter.OutputCode);
|
||||
|
@ -51,7 +51,7 @@ type
|
||||
fsInputCode, fsOutputCode: String;
|
||||
fsFileName: String;
|
||||
fiFirstLineNumber: integer; //used by ConvertUsingFakeUnit
|
||||
|
||||
fiFirstSelectionLineNumber: integer;
|
||||
{ classes to lex and parse the source }
|
||||
fcTokeniser: TBuildTokenList;
|
||||
fcBuildParseTree: TBuildParseTree;
|
||||
@ -89,6 +89,8 @@ type
|
||||
procedure Convert;
|
||||
procedure ConvertPart(const piStartIndex, piEndIndex: Integer;
|
||||
aOnlyOutputSelection: boolean=false);
|
||||
procedure ConvertRange(piStartLineNumber, piEndLineNumber: Integer;
|
||||
aOnlyOutputSelection: Boolean = false);
|
||||
procedure ConvertUsingFakeUnit(AFirstLineNumber:integer = 1);
|
||||
|
||||
procedure CollectOutput(const pcRoot: TParseTreeNode);
|
||||
@ -139,6 +141,7 @@ begin
|
||||
fcSingleProcess := nil;
|
||||
fbGuiMessages := True; // use Ui to show parse errors by default
|
||||
fiFirstLineNumber := 1;
|
||||
fiFirstSelectionLineNumber:= MaxInt;
|
||||
end;
|
||||
|
||||
destructor TConverter.Destroy;
|
||||
@ -255,6 +258,8 @@ begin
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
fiFirstLineNumber := 1;
|
||||
fiFirstSelectionLineNumber:= MaxInt;
|
||||
if lcTokenList<>nil then
|
||||
begin
|
||||
lcTokenList.OwnsObjects := True;
|
||||
@ -377,13 +382,19 @@ end;
|
||||
procedure TConverter.SendStatusMessage(const psUnit, psMessage: String; const peMessageType: TStatusMessageType; const piY, piX: Integer);
|
||||
var
|
||||
lsUnit: string;
|
||||
liY:integer;
|
||||
begin
|
||||
if Assigned(fOnStatusMessage) then
|
||||
begin
|
||||
lsUnit := psUnit;
|
||||
if lsUnit = '' then
|
||||
lsUnit := fsFileName;
|
||||
fOnStatusMessage(lsUnit, psMessage, peMessageType, piY + fiFirstLineNumber - 1, piX);
|
||||
// adjust error line number in selection formating.
|
||||
// error due jcf special added comments
|
||||
liY := piY + fiFirstLineNumber - 1;
|
||||
if piY > fiFirstSelectionLineNumber then
|
||||
Dec(liY);
|
||||
fOnStatusMessage(lsUnit, psMessage, peMessageType, liY, piX);
|
||||
end;
|
||||
end;
|
||||
|
||||
@ -444,6 +455,23 @@ begin
|
||||
fsOutputCode := lsNewOutput;
|
||||
end;
|
||||
|
||||
procedure TConverter.ConvertRange(piStartLineNumber, piEndLineNumber: Integer;
|
||||
aOnlyOutputSelection: Boolean);
|
||||
var
|
||||
lineStartOffset,lineEndOffset: Integer;
|
||||
liAux: Integer;
|
||||
begin
|
||||
if piStartLineNumber > piEndLineNumber then
|
||||
begin
|
||||
liAux := piEndLineNumber;
|
||||
piEndLineNumber := piStartLineNumber;
|
||||
piStartLineNumber := liAux;
|
||||
end;
|
||||
FindLineOffsets(fsInputCode,piStartLineNumber, piEndLineNumber,lineStartOffset,lineEndOffset);
|
||||
fiFirstSelectionLineNumber:= piStartLineNumber;
|
||||
ConvertPart(lineStartOffset, lineEndOffset, aOnlyOutputSelection);
|
||||
end;
|
||||
|
||||
{ position on we insert selected CODE depending if the CODE contains interface
|
||||
and/or implementation
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user