mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-25 13:49:16 +02:00
codetools: remove empty methods: implemented returning list of removed definitions
git-svn-id: trunk@14986 -
This commit is contained in:
parent
816226e560
commit
5e41e48a30
@ -253,7 +253,9 @@ type
|
||||
function RemoveEmptyMethods(CursorPos: TCodeXYPosition;
|
||||
const Sections: TPascalClassSections;
|
||||
SourceChangeCache: TSourceChangeCache;
|
||||
out AllRemoved: boolean): boolean;
|
||||
out AllRemoved: boolean;
|
||||
const Attr: TProcHeadAttributes;
|
||||
out RemovedProcHeads: TStrings): boolean;
|
||||
|
||||
// custom class completion
|
||||
function InitClassCompletion(const UpperClassName: string;
|
||||
@ -4141,7 +4143,8 @@ end;
|
||||
|
||||
function TCodeCompletionCodeTool.RemoveEmptyMethods(CursorPos: TCodeXYPosition;
|
||||
const Sections: TPascalClassSections; SourceChangeCache: TSourceChangeCache;
|
||||
out AllRemoved: boolean): boolean;
|
||||
out AllRemoved: boolean;
|
||||
const Attr: TProcHeadAttributes; out RemovedProcHeads: TStrings): boolean;
|
||||
var
|
||||
ProcBodyNodes: TAVLTree;
|
||||
AVLNode: TAVLTreeNode;
|
||||
@ -4157,9 +4160,11 @@ var
|
||||
CommentStartPos: integer;
|
||||
ProcDefNodes: TAVLTree;
|
||||
NextAVLNode: TAVLTreeNode;
|
||||
ProcHead: String;
|
||||
begin
|
||||
Result:=false;
|
||||
AllRemoved:=false;
|
||||
RemovedProcHeads:=nil;
|
||||
if (SourceChangeCache=nil) or (Scanner=nil) then exit;
|
||||
SourceChangeCache.MainScanner:=Scanner;
|
||||
ProcBodyNodes:=TAVLTree.Create(@CompareCodeTreeNodeExt);
|
||||
@ -4219,6 +4224,10 @@ begin
|
||||
NodeExt.Position:=NodeExt.Node.StartPos;
|
||||
if (NodeExt.Node<>nil) and (ProcDefNodes.Find(NodeExt)=nil) then begin
|
||||
ProcDefNodes.Add(NodeExt);
|
||||
if RemovedProcHeads=nil then
|
||||
RemovedProcHeads:=TStringList.Create;
|
||||
ProcHead:=ExtractProcHead(NodeExt.Node,Attr);
|
||||
RemovedProcHeads.Add(ProcHead);
|
||||
end else begin
|
||||
NodeExt.Free;
|
||||
end;
|
||||
|
@ -478,7 +478,9 @@ type
|
||||
out AllEmpty: boolean): boolean;
|
||||
function RemoveEmptyMethods(Code: TCodeBuffer; X,Y: integer;
|
||||
const Sections: TPascalClassSections;
|
||||
out AllRemoved: boolean): boolean;
|
||||
out AllRemoved: boolean;
|
||||
const Attr: TProcHeadAttributes;
|
||||
out RemovedProcHeads: TStrings): boolean;
|
||||
|
||||
// custom class completion
|
||||
function InitClassCompletion(Code: TCodeBuffer;
|
||||
@ -3342,7 +3344,8 @@ begin
|
||||
end;
|
||||
|
||||
function TCodeToolManager.RemoveEmptyMethods(Code: TCodeBuffer; X,Y: integer;
|
||||
const Sections: TPascalClassSections; out AllRemoved: boolean): boolean;
|
||||
const Sections: TPascalClassSections; out AllRemoved: boolean;
|
||||
const Attr: TProcHeadAttributes; out RemovedProcHeads: TStrings): boolean;
|
||||
var
|
||||
CursorPos: TCodeXYPosition;
|
||||
begin
|
||||
@ -3356,7 +3359,7 @@ begin
|
||||
CursorPos.Code:=Code;
|
||||
try
|
||||
Result:=FCurCodeTool.RemoveEmptyMethods(CursorPos,Sections,
|
||||
SourceChangeCache,AllRemoved);
|
||||
SourceChangeCache,AllRemoved,Attr,RemovedProcHeads);
|
||||
except
|
||||
on e: Exception do Result:=HandleException(e);
|
||||
end;
|
||||
|
@ -30,7 +30,8 @@ program RemoveEmptyMethods;
|
||||
|
||||
uses
|
||||
Classes, SysUtils, CodeCache, CodeToolManager, DefineTemplates,
|
||||
CodeAtom, CodeToolsConfig, CodeToolsStructs, EmptyMethods1;
|
||||
CodeAtom, CodeToolsConfig, CodeToolsStructs, PascalParserTool,
|
||||
EmptyMethods1;
|
||||
|
||||
const
|
||||
ConfigFilename = 'codetools.config';
|
||||
@ -44,6 +45,7 @@ var
|
||||
P: PCodeXYPosition;
|
||||
All: boolean;
|
||||
Sections: TPascalClassSections;
|
||||
RemovedProcHeads: TStrings;
|
||||
begin
|
||||
if (ParamCount>=1) and (Paramcount<>3) then begin
|
||||
writeln('Usage:');
|
||||
@ -79,15 +81,18 @@ begin
|
||||
P:=PCodeXYPosition(ListOfPCodeXYPosition[i]);
|
||||
writeln(i,' ',DbgsCXY(P^));
|
||||
end;
|
||||
if CodeToolBoss.RemoveEmptyMethods(Code,X,Y,Sections,All)
|
||||
if CodeToolBoss.RemoveEmptyMethods(Code,X,Y,Sections,All,[],RemovedProcHeads)
|
||||
then begin
|
||||
writeln('Empty methods removed:');
|
||||
if RemovedProcHeads<>nil then
|
||||
writeln(RemovedProcHeads.Text);
|
||||
writeln('=========================');
|
||||
writeln(Code.Source);
|
||||
writeln('=========================');
|
||||
end else begin
|
||||
writeln('RemoveEmptyMethods failed: ',CodeToolBoss.ErrorMessage);
|
||||
end;
|
||||
RemovedProcHeads.Free;
|
||||
end else begin
|
||||
writeln('FindEmptyMethods failed: ',CodeToolBoss.ErrorMessage);
|
||||
end;
|
||||
|
@ -159,12 +159,19 @@ end;
|
||||
procedure TEmptyMethodsDialog.OKButtonClick(Sender: TObject);
|
||||
var
|
||||
AllEmpty: boolean;
|
||||
RemovedProcHeads: TStrings;
|
||||
begin
|
||||
DebugLn(['TEmptyMethodsDialog.OKButtonClick ']);
|
||||
if (not CodeToolBoss.RemoveEmptyMethods(Code,Caret.X,Caret.Y,Sections,AllEmpty))
|
||||
then begin
|
||||
DebugLn(['TEmptyMethodsDialog.OKButtonClick failed']);
|
||||
exit;
|
||||
RemovedProcHeads:=nil;
|
||||
try
|
||||
if (not CodeToolBoss.RemoveEmptyMethods(Code,Caret.X,Caret.Y,Sections,
|
||||
AllEmpty,[],RemovedProcHeads))
|
||||
then begin
|
||||
DebugLn(['TEmptyMethodsDialog.OKButtonClick failed']);
|
||||
exit;
|
||||
end;
|
||||
finally
|
||||
RemovedProcHeads.Free;
|
||||
end;
|
||||
ModalResult:=mrOk;
|
||||
end;
|
||||
|
Loading…
Reference in New Issue
Block a user