synedit: fixed codefolding block comparison

git-svn-id: trunk@11789 -
This commit is contained in:
mattias 2007-08-11 13:08:53 +00:00
parent afa5563498
commit 9708b1003e
6 changed files with 70 additions and 23 deletions

View File

@ -727,7 +727,7 @@ begin
{ this is
IFNDEF then UNDEF
or IFDEF then DEFINE
remove define
-> remove define
}
end else begin

View File

@ -184,6 +184,14 @@ type
class function ClassDescription: string; override;
function Execute(aText: TIDETextConverter): TModalResult; override;
end;
{ TFixH2PasMissingIFDEFsInUnit }
TFixH2PasMissingIFDEFsInUnit = class(TCustomTextConverterTool)
public
class function ClassDescription: string; override;
function Execute(aText: TIDETextConverter): TModalResult; override;
end;
{ TReduceCompilerDirectivesInUnit }
@ -1400,6 +1408,7 @@ begin
AddNewTextConverterTool(FPostH2PasTools,TRemoveSystemTypes);
AddNewTextConverterTool(FPostH2PasTools,TRemoveRedefinedPointerTypes);
AddNewTextConverterTool(FPostH2PasTools,TRemoveEmptyTypeVarConstSections);
AddNewTextConverterTool(FPostH2PasTools,TFixH2PasMissingIFDEFsInUnit);
AddNewTextConverterTool(FPostH2PasTools,TReduceCompilerDirectivesInUnit);
AddNewTextConverterTool(FPostH2PasTools,TReplaceImplicitTypes);
AddNewTextConverterTool(FPostH2PasTools,TFixArrayOfParameterType);
@ -3187,6 +3196,38 @@ begin
Result:=mrOk;
end;
{ TFixH2PasMissingIFDEFsInUnit }
class function TFixH2PasMissingIFDEFsInUnit.ClassDescription: string;
begin
Result:='Adds missing h2pas IFDEFs for function bodies';
end;
function TFixH2PasMissingIFDEFsInUnit.Execute(aText: TIDETextConverter
): TModalResult;
var
Tree: TCompilerDirectivesTree;
Code: TCodeBuffer;
Changed: Boolean;
begin
Result:=mrCancel;
Tree:=nil;
try
Tree:=TCompilerDirectivesTree.Create;
Code:=TCodeBuffer(aText.CodeBuffer);
if not Tree.Parse(Code,CodeToolBoss.GetNestedCommentsFlagForFile(Code.Filename))
then begin
DebugLn(['TFixH2PasMissingIFDEFsInUnit.Execute failed parsing compiler directives']);
exit;
end;
Changed:=false;
Tree.FixMissingH2PasDirectives(Changed);
finally
Tree.Free;
end;
Result:=mrOk;
end;
{ TReduceCompilerDirectivesInUnit }
class function TReduceCompilerDirectivesInUnit.ClassDescription: string;
@ -3204,18 +3245,23 @@ var
Changed: Boolean;
begin
Result:=mrCancel;
Tree:=TCompilerDirectivesTree.Create;
Code:=TCodeBuffer(aText.CodeBuffer);
if not Tree.Parse(Code,CodeToolBoss.GetNestedCommentsFlagForFile(Code.Filename))
then begin
DebugLn(['TReduceCompilerDirectivesInUnit.Execute failed parsing compiler directives']);
exit;
Tree:=nil;
try
Tree:=TCompilerDirectivesTree.Create;
Code:=TCodeBuffer(aText.CodeBuffer);
if not Tree.Parse(Code,CodeToolBoss.GetNestedCommentsFlagForFile(Code.Filename))
then begin
DebugLn(['TReduceCompilerDirectivesInUnit.Execute failed parsing compiler directives']);
exit;
end;
repeat
Changed:=false;
Tree.ReduceCompilerDirectives(nil,nil,Changed);
//Tree.WriteDebugReport;
until not Changed;
finally
Tree.Free;
end;
repeat
Changed:=false;
Tree.ReduceCompilerDirectives(Changed);
//Tree.WriteDebugReport;
until not Changed;
Result:=mrOk;
end;

View File

@ -217,6 +217,7 @@ begin
TextConverterToolClasses.RegisterClass(TRemoveSystemTypes);
TextConverterToolClasses.RegisterClass(TRemoveRedefinedPointerTypes);
TextConverterToolClasses.RegisterClass(TRemoveEmptyTypeVarConstSections);
TextConverterToolClasses.RegisterClass(TFixH2PasMissingIFDEFsInUnit);
TextConverterToolClasses.RegisterClass(TReduceCompilerDirectivesInUnit);
TextConverterToolClasses.RegisterClass(TReplaceImplicitTypes);
TextConverterToolClasses.RegisterClass(TFixArrayOfParameterType);

View File

@ -1241,7 +1241,7 @@ function TSynCustomCodeFoldBlock.Compare(Block: TSynCustomCodeFoldBlock
begin
if BlockType>Block.BlockType then
Result:=1
else if BlockType>Block.BlockType then
else if BlockType<Block.BlockType then
Result:=-1
else if Level>BLock.Level then
Result:=1

View File

@ -2255,12 +2255,12 @@ begin
AddDefault(C, 'Word completion', srkmecWordCompletion, ecWordCompletion);
AddDefault(C, 'Complete code', srkmecCompletecode, ecCompleteCode);
AddDefault(C, 'Identifier completion', dlgEdIdComlet, ecIdentCompletion);
AddDefault(C, 'Show code context', srkmecShowCodeContext, ecShowCodeContext);
AddDefault(C, 'Extract proc', srkmecExtractProc, ecExtractProc);
AddDefault(C, 'Find identifier references', srkmecFindIdentifierRefs,
ecFindIdentifierRefs);
AddDefault(C, 'Rename identifier', srkmecRenameIdentifier, ecRenameIdentifier
);
AddDefault(C, 'Find identifier references', srkmecFindIdentifierRefs,
ecFindIdentifierRefs);
AddDefault(C, 'Show code context', srkmecShowCodeContext, ecShowCodeContext);
AddDefault(C, 'Extract proc', srkmecExtractProc, ecExtractProc);
AddDefault(C, 'Invert assignment', srkmecInvertAssignment, ecInvertAssignment
);
AddDefault(C, 'Syntax check', srkmecSyntaxCheck, ecSyntaxCheck);

View File

@ -813,10 +813,10 @@ var
// refactoring
SrcEditMenuCompleteCode: TIDEMenuCommand;
SrcEditMenuEncloseSelection: TIDEMenuCommand;
SrcEditMenuRenameIdentifier: TIDEMenuCommand;
SrcEditMenuFindIdentifierReferences: TIDEMenuCommand;
SrcEditMenuExtractProc: TIDEMenuCommand;
SrcEditMenuInvertAssignment: TIDEMenuCommand;
SrcEditMenuFindIdentifierReferences: TIDEMenuCommand;
SrcEditMenuRenameIdentifier: TIDEMenuCommand;
SrcEditMenuMoveEditorLeft: TIDEMenuCommand;
SrcEditMenuMoveEditorRight: TIDEMenuCommand;
SrcEditMenuReadOnly: TIDEMenuCommand;
@ -953,14 +953,14 @@ begin
uemCompleteCode);
SrcEditMenuEncloseSelection:=RegisterIDEMenuCommand(AParent,
'EncloseSelection',uemEncloseSelection);
SrcEditMenuRenameIdentifier:=RegisterIDEMenuCommand(AParent,
'RenameIdentifier',uemRenameIdentifier);
SrcEditMenuFindIdentifierReferences:=RegisterIDEMenuCommand(AParent,
'FindIdentifierReferences',uemFindIdentifierReferences);
SrcEditMenuExtractProc:=RegisterIDEMenuCommand(AParent,
'ExtractProc',uemExtractProc);
SrcEditMenuInvertAssignment:=RegisterIDEMenuCommand(AParent,
'InvertAssignment',uemInvertAssignment);
SrcEditMenuFindIdentifierReferences:=RegisterIDEMenuCommand(AParent,
'FindIdentifierReferences',uemFindIdentifierReferences);
SrcEditMenuRenameIdentifier:=RegisterIDEMenuCommand(AParent,
'RenameIdentifier',uemRenameIdentifier);
// register the Flags section
SrcEditMenuSectionFlags:=RegisterIDEMenuSection(SourceEditorMenuRoot,