codetools: code completion: started option to not update signatures if only case changed

git-svn-id: trunk@41909 -
This commit is contained in:
mattias 2013-06-26 15:03:37 +00:00
parent e935766ee6
commit 3796042759
6 changed files with 48 additions and 12 deletions

View File

@ -139,7 +139,8 @@ type
const TheClassName: string);
function UpdateProcBodySignature(ProcBodyNodes: TAVLTree;
const BodyNodeExt: TCodeTreeNodeExtension;
ProcAttrCopyDefToBody: TProcHeadAttributes; var ProcsCopied: boolean): boolean;
ProcAttrCopyDefToBody: TProcHeadAttributes; var ProcsCopied: boolean;
CaseSensitive: boolean): boolean;
function UpdateProcBodySignatures(ProcDefNodes, ProcBodyNodes: TAVLTree;
ProcAttrCopyDefToBody: TProcHeadAttributes; out ProcsCopied: boolean;
OnlyNode: TCodeTreeNode = nil): boolean;
@ -7673,8 +7674,8 @@ end;
function TCodeCompletionCodeTool.UpdateProcBodySignature(
ProcBodyNodes: TAVLTree; const BodyNodeExt: TCodeTreeNodeExtension;
ProcAttrCopyDefToBody: TProcHeadAttributes; var ProcsCopied: boolean
): boolean;
ProcAttrCopyDefToBody: TProcHeadAttributes; var ProcsCopied: boolean;
CaseSensitive: boolean): boolean;
var
OldProcCode: String;
NewProcCode: String;
@ -7698,7 +7699,7 @@ begin
Indent:=Beauty.GetLineIndent(Src, InsertPos);
NewProcCode:=Beauty.BeautifyProc(NewProcCode, Indent, false);
OldProcCode:=ExtractProcHead(BodyNodeExt.Node, ProcAttrCopyDefToBody);
if CompareTextIgnoringSpace(NewProcCode, OldProcCode, true)<>0 then begin
if CompareTextIgnoringSpace(NewProcCode, OldProcCode, CaseSensitive)<>0 then begin
// update body
//debugln(['TCodeCompletionCodeTool.UpdateProcBodySignatures Old="',dbgstr(OldProcCode),'" New="',dbgstr(NewProcCode),'"']);
ProcsCopied:=true;
@ -7814,7 +7815,8 @@ begin
for i:=0 to Bodies.Count-1 do begin
BodyNodeExt:=TCodeTreeNodeExtension(Bodies[i]);
if not UpdateProcBodySignature(ProcBodyNodes, BodyNodeExt,
ProcAttrCopyDefToBody, ProcsCopied)
ProcAttrCopyDefToBody, ProcsCopied,
FSourceChangeCache.BeautifyCodeOptions.UpdateOtherProcSignaturesCase)
then
exit(false);
end;

View File

@ -149,6 +149,7 @@ type
ForwardProcBodyInsertPolicy: TForwardProcBodyInsertPolicy;
KeepForwardProcOrder: boolean;
UpdateMultiProcSignatures: boolean;
UpdateOtherProcSignaturesCase: boolean; // when updating proc signatures not under cursor, fix case
// classes, methods, properties
ClassHeaderComments: boolean;
ClassImplementationComments: boolean;
@ -1252,6 +1253,7 @@ begin
MixMethodsAndProperties:=false;
UpdateAllMethodSignatures:=true;
UpdateMultiProcSignatures:=true;
UpdateOtherProcSignaturesCase:=true;
MethodInsertPolicy:=mipClassOrder;
ForwardProcBodyInsertPolicy:=fpipBehindMethods;
KeepForwardProcOrder:=true;

View File

@ -82,6 +82,7 @@ type
FIdentifierPolicy: TWordPolicy;
FUpdateAllMethodSignatures: boolean;
FUpdateMultiProcSignatures: boolean;
FUpdateOtherProcSignaturesCase: boolean;
FWordPolicyExceptions: TStringList;
FDoNotSplitLineInFront: TAtomTypes;
FDoNotSplitLineAfter: TAtomTypes;
@ -162,6 +163,8 @@ type
read FKeepForwardProcOrder write FKeepForwardProcOrder;
property UpdateMultiProcSignatures: boolean
read FUpdateMultiProcSignatures write FUpdateMultiProcSignatures;
property UpdateOtherProcSignaturesCase: boolean
read FUpdateOtherProcSignaturesCase write FUpdateOtherProcSignaturesCase;
property ClassHeaderComments: boolean
read FClassHeaderComments write FClassHeaderComments;
property ClassImplementationComments: boolean
@ -412,6 +415,8 @@ begin
'CodeToolsOptions/KeepForwardProcOrder/Value',true);
FUpdateMultiProcSignatures:=XMLConfig.GetValue(
'CodeToolsOptions/UpdateMultiProcSignatures/Value',true);
FUpdateOtherProcSignaturesCase:=XMLConfig.GetValue(
'CodeToolsOptions/UpdateOtherProcSignaturesCase/Value',true);
FClassHeaderComments:=XMLConfig.GetValue(
'CodeToolsOptions/ClassHeaderComments/Value',true);
FClassImplementationComments:=XMLConfig.GetValue(
@ -549,6 +554,9 @@ begin
XMLConfig.SetDeleteValue(
'CodeToolsOptions/UpdateMultiProcSignatures/Value',FUpdateMultiProcSignatures,
true);
XMLConfig.SetDeleteValue(
'CodeToolsOptions/UpdateOtherProcSignaturesCase/Value',FUpdateOtherProcSignaturesCase,
true);
XMLConfig.SetDeleteValue(
'CodeToolsOptions/ClassImplementationComments/Value',
FClassImplementationComments,true);
@ -676,6 +684,7 @@ begin
FForwardProcBodyInsertPolicy:=CodeToolsOpts.ForwardProcBodyInsertPolicy;
FKeepForwardProcOrder:=CodeToolsOpts.KeepForwardProcOrder;
FUpdateMultiProcSignatures:=CodeToolsOpts.UpdateMultiProcSignatures;
FUpdateOtherProcSignaturesCase:=CodeToolsOpts.UpdateOtherProcSignaturesCase;
FClassHeaderComments:=CodeToolsOpts.ClassHeaderComments;
FClassImplementationComments:=CodeToolsOpts.ClassImplementationComments;
FMethodInsertPolicy:=CodeToolsOpts.FMethodInsertPolicy;
@ -729,6 +738,7 @@ begin
FForwardProcBodyInsertPolicy:=fpipInFrontOfMethods;
FKeepForwardProcOrder:=true;
FUpdateMultiProcSignatures:=true;
FUpdateOtherProcSignaturesCase:=true;
FClassHeaderComments:=true;
FClassImplementationComments:=true;
FMethodInsertPolicy:=mipClassOrder;
@ -797,6 +807,7 @@ begin
and (FForwardProcBodyInsertPolicy=CodeToolsOpts.ForwardProcBodyInsertPolicy)
and (FKeepForwardProcOrder=CodeToolsOpts.KeepForwardProcOrder)
and (FUpdateMultiProcSignatures=CodeToolsOpts.UpdateMultiProcSignatures)
and (FUpdateOtherProcSignaturesCase=CodeToolsOpts.UpdateOtherProcSignaturesCase)
and (FClassHeaderComments=CodeToolsOpts.ClassHeaderComments)
and (FClassImplementationComments=CodeToolsOpts.ClassImplementationComments)
and (FMethodInsertPolicy=CodeToolsOpts.FMethodInsertPolicy)
@ -895,6 +906,7 @@ begin
Beauty.ForwardProcBodyInsertPolicy:=ForwardProcBodyInsertPolicy;
Beauty.KeepForwardProcOrder:=KeepForwardProcOrder;
Beauty.UpdateMultiProcSignatures:=UpdateMultiProcSignatures;
Beauty.UpdateOtherProcSignaturesCase:=UpdateOtherProcSignaturesCase;
Beauty.ClassHeaderComments:=ClassHeaderComments;
Beauty.ClassImplementationComments:=ClassImplementationComments;
Beauty.MethodInsertPolicy:=MethodInsertPolicy;

View File

@ -37,9 +37,9 @@ object CodetoolsCodeCreationOptionsFrame: TCodetoolsCodeCreationOptionsFrame
AnchorSideTop.Control = ForwardProcsInsertPolicyRadioGroup
AnchorSideTop.Side = asrBottom
Left = 6
Height = 18
Height = 24
Top = 112
Width = 235
Width = 261
BorderSpacing.Around = 6
Caption = 'ForwardProcsKeepOrderCheckBox'
TabOrder = 1
@ -52,7 +52,7 @@ object CodetoolsCodeCreationOptionsFrame: TCodetoolsCodeCreationOptionsFrame
AnchorSideRight.Side = asrBottom
Left = 6
Height = 100
Top = 142
Top = 148
Width = 560
Anchors = [akTop, akLeft, akRight]
AutoFill = True
@ -76,11 +76,24 @@ object CodetoolsCodeCreationOptionsFrame: TCodetoolsCodeCreationOptionsFrame
AnchorSideTop.Control = UsesInsertPolicyRadioGroup
AnchorSideTop.Side = asrBottom
Left = 6
Height = 18
Top = 248
Width = 252
BorderSpacing.Around = 6
Height = 24
Top = 254
Width = 279
BorderSpacing.Left = 6
BorderSpacing.Top = 6
Caption = 'UpdateMultiProcSignaturesCheckBox'
TabOrder = 3
end
object UpdateOtherProcSignaturesCaseCheckBox: TCheckBox
AnchorSideLeft.Control = Owner
AnchorSideTop.Control = UpdateMultiProcSignaturesCheckBox
AnchorSideTop.Side = asrBottom
Left = 6
Height = 24
Top = 278
Width = 315
BorderSpacing.Left = 6
Caption = 'UpdateOtherProcSignaturesCaseCheckBox'
TabOrder = 4
end
end

View File

@ -36,6 +36,7 @@ type
ForwardProcsInsertPolicyRadioGroup: TRadioGroup;
ForwardProcsKeepOrderCheckBox: TCheckBox;
UpdateMultiProcSignaturesCheckBox: TCheckBox;
UpdateOtherProcSignaturesCaseCheckBox: TCheckBox;
UsesInsertPolicyRadioGroup: TRadioGroup;
private
public
@ -74,6 +75,8 @@ begin
ForwardProcsKeepOrderCheckBox.Caption:=dlgForwardProcsKeepOrder;
UpdateMultiProcSignaturesCheckBox.Caption:=
lisCTOUpdateMultipleProcedureSignatures;
UpdateOtherProcSignaturesCaseCheckBox.Caption:=
lisUpdateOtherProcedureSignaturesWhenOnlyLetterCaseHa;
with UsesInsertPolicyRadioGroup do begin
Caption:=lisNewUnitsAreAddedToUsesSections;
@ -104,6 +107,7 @@ begin
ForwardProcsKeepOrderCheckBox.Checked := KeepForwardProcOrder;
UpdateMultiProcSignaturesCheckBox.Checked:=UpdateMultiProcSignatures;
UpdateOtherProcSignaturesCaseCheckBox.Checked:=UpdateOtherProcSignaturesCase;
case UsesInsertPolicy of
uipFirst: UsesInsertPolicyRadioGroup.ItemIndex:=0;
@ -130,6 +134,7 @@ begin
KeepForwardProcOrder := ForwardProcsKeepOrderCheckBox.Checked;
UpdateMultiProcSignatures:=UpdateMultiProcSignaturesCheckBox.Checked;
UpdateOtherProcSignaturesCase:=UpdateOtherProcSignaturesCaseCheckBox.Checked;
case UsesInsertPolicyRadioGroup.ItemIndex of
0: UsesInsertPolicy:=uipFirst;

View File

@ -5784,6 +5784,8 @@ resourcestring
lisCTOUpdateAllMethodSignatures = 'Update all method signatures';
lisCTOUpdateMultipleProcedureSignatures = 'Update multiple procedure '
+'signatures';
lisUpdateOtherProcedureSignaturesWhenOnlyLetterCaseHa = 'Update other '
+'procedure signatures when only letter case has changed';
implementation