mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-23 04:39:40 +02:00
codetools: moved CommentCode to TStdCodeTool
git-svn-id: trunk@40815 -
This commit is contained in:
parent
5ee76dbc83
commit
a0f58c4b7d
@ -235,8 +235,6 @@ type
|
||||
WithCommentBounds, CaseSensitive, IgnoreSpaces,
|
||||
CompareOnlyStart: boolean;
|
||||
out CommentStart, CommentEnd: integer): boolean;
|
||||
function CommentCode(const StartPos, EndPos: integer;
|
||||
SourceChangeCache: TSourceChangeCache; Apply: boolean): boolean;
|
||||
function GetPasDocComments(const StartPos: TCodeXYPosition;
|
||||
InvokeBuildTree: boolean;
|
||||
out ListOfPCodeXYPosition: TFPList): boolean;
|
||||
@ -3045,53 +3043,6 @@ begin
|
||||
CommentEnd:=FoundEndPos;
|
||||
end;
|
||||
|
||||
function TPascalReaderTool.CommentCode(const StartPos, EndPos: integer;
|
||||
SourceChangeCache: TSourceChangeCache; Apply: boolean): boolean;
|
||||
var
|
||||
i: LongInt;
|
||||
CurStartPos: LongInt;
|
||||
CommentNeeded: Boolean;
|
||||
CurEndPos: LongInt;
|
||||
begin
|
||||
if StartPos>=EndPos then
|
||||
RaiseException('TStandardCodeTool CommentCode');
|
||||
|
||||
Result:=false;
|
||||
// comment with curly brackets {}
|
||||
i:=StartPos;
|
||||
CurStartPos:=i;
|
||||
CurEndPos:=CurStartPos;
|
||||
CommentNeeded:=false;
|
||||
repeat
|
||||
//debugln(['TPascalReaderTool.CommentCode ',dbgstr(Src[i]),' Needed=',CommentNeeded,' ',dbgstr(copy(Src,CurStartPos,CurEndPos-CurStartPos))]);
|
||||
if (Src[i]='{') or (i>=EndPos) then begin
|
||||
// the area contains a comment -> comment in front
|
||||
if CommentNeeded then begin
|
||||
if not SourceChangeCache.Replace(gtNone,gtNone,
|
||||
CurStartPos,CurStartPos,'{') then exit;
|
||||
if not SourceChangeCache.Replace(gtNone,gtNone,
|
||||
CurEndPos,CurEndPos,'}') then exit;
|
||||
//DebugLn('Comment "',copy(Src,CurStartPos,i-CurStartPos),'"');
|
||||
CommentNeeded:=false;
|
||||
end;
|
||||
if i>=EndPos then break;
|
||||
// skip comment
|
||||
i:=FindCommentEnd(Src,i,Scanner.NestedComments)-1;
|
||||
end else if not IsSpaceChar[Src[i]] then begin
|
||||
if not CommentNeeded then begin
|
||||
CurStartPos:=i;
|
||||
CommentNeeded:=true;
|
||||
end;
|
||||
CurEndPos:=i+1;
|
||||
end;
|
||||
inc(i);
|
||||
until false;
|
||||
if Apply then
|
||||
Result:=SourceChangeCache.Apply
|
||||
else
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
function TPascalReaderTool.GetPasDocComments(const StartPos: TCodeXYPosition;
|
||||
InvokeBuildTree: boolean; out ListOfPCodeXYPosition: TFPList): boolean;
|
||||
var
|
||||
|
@ -233,7 +233,7 @@ type
|
||||
SourceChangeCache: TSourceChangeCache;
|
||||
OnlyIfCursorBlockIndented: boolean;
|
||||
out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean;
|
||||
|
||||
|
||||
// compiler directives
|
||||
function GuessMisplacedIfdefEndif(const CursorPos: TCodeXYPosition;
|
||||
out NewPos: TCodeXYPosition; out NewTopLine: integer): boolean;
|
||||
@ -275,6 +275,10 @@ type
|
||||
SourceChangeCache: TSourceChangeCache;
|
||||
SkipPointWords: boolean = false): boolean;
|
||||
|
||||
// comments
|
||||
function CommentCode(const StartPos, EndPos: integer;
|
||||
SourceChangeCache: TSourceChangeCache; Apply: boolean): boolean;
|
||||
|
||||
// expressions
|
||||
function GetStringConstBounds(const CursorPos: TCodeXYPosition;
|
||||
out StartPos, EndPos: TCodeXYPosition;
|
||||
@ -3258,6 +3262,53 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TStandardCodeTool.CommentCode(const StartPos, EndPos: integer;
|
||||
SourceChangeCache: TSourceChangeCache; Apply: boolean): boolean;
|
||||
var
|
||||
i: LongInt;
|
||||
CurStartPos: LongInt;
|
||||
CommentNeeded: Boolean;
|
||||
CurEndPos: LongInt;
|
||||
begin
|
||||
if StartPos>=EndPos then
|
||||
RaiseException('TStandardCodeTool CommentCode');
|
||||
|
||||
Result:=false;
|
||||
// comment with curly brackets {}
|
||||
i:=StartPos;
|
||||
CurStartPos:=i;
|
||||
CurEndPos:=CurStartPos;
|
||||
CommentNeeded:=false;
|
||||
repeat
|
||||
//debugln(['TPascalReaderTool.CommentCode ',dbgstr(Src[i]),' Needed=',CommentNeeded,' ',dbgstr(copy(Src,CurStartPos,CurEndPos-CurStartPos))]);
|
||||
if (Src[i]='{') or (i>=EndPos) then begin
|
||||
// the area contains a comment -> comment in front
|
||||
if CommentNeeded then begin
|
||||
if not SourceChangeCache.Replace(gtNone,gtNone,
|
||||
CurStartPos,CurStartPos,'{') then exit;
|
||||
if not SourceChangeCache.Replace(gtNone,gtNone,
|
||||
CurEndPos,CurEndPos,'}') then exit;
|
||||
//DebugLn('Comment "',copy(Src,CurStartPos,i-CurStartPos),'"');
|
||||
CommentNeeded:=false;
|
||||
end;
|
||||
if i>=EndPos then break;
|
||||
// skip comment
|
||||
i:=FindCommentEnd(Src,i,Scanner.NestedComments)-1;
|
||||
end else if not IsSpaceChar[Src[i]] then begin
|
||||
if not CommentNeeded then begin
|
||||
CurStartPos:=i;
|
||||
CommentNeeded:=true;
|
||||
end;
|
||||
CurEndPos:=i+1;
|
||||
end;
|
||||
inc(i);
|
||||
until false;
|
||||
if Apply then
|
||||
Result:=SourceChangeCache.Apply
|
||||
else
|
||||
Result:=true;
|
||||
end;
|
||||
|
||||
function TStandardCodeTool.GetStringConstBounds(
|
||||
const CursorPos: TCodeXYPosition;
|
||||
out StartPos, EndPos: TCodeXYPosition; ResolveComments: boolean): boolean;
|
||||
|
Loading…
Reference in New Issue
Block a user