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 { this is
IFNDEF then UNDEF IFNDEF then UNDEF
or IFDEF then DEFINE or IFDEF then DEFINE
remove define -> remove define
} }
end else begin end else begin

View File

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

View File

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

View File

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

View File

@ -2255,12 +2255,12 @@ begin
AddDefault(C, 'Word completion', srkmecWordCompletion, ecWordCompletion); AddDefault(C, 'Word completion', srkmecWordCompletion, ecWordCompletion);
AddDefault(C, 'Complete code', srkmecCompletecode, ecCompleteCode); AddDefault(C, 'Complete code', srkmecCompletecode, ecCompleteCode);
AddDefault(C, 'Identifier completion', dlgEdIdComlet, ecIdentCompletion); 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, '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, 'Invert assignment', srkmecInvertAssignment, ecInvertAssignment
); );
AddDefault(C, 'Syntax check', srkmecSyntaxCheck, ecSyntaxCheck); AddDefault(C, 'Syntax check', srkmecSyntaxCheck, ecSyntaxCheck);

View File

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