fixed checking dangling events on empty units

git-svn-id: trunk@7562 -
This commit is contained in:
mattias 2005-08-24 18:54:09 +00:00
parent a6441b5840
commit 18a6999481
7 changed files with 43 additions and 23 deletions

View File

@ -152,7 +152,7 @@ type
function LoadIncludeLinksFromXML(XMLConfig: TXMLConfig;
const XMLPath: string): boolean;
function SaveBufferAs(OldBuffer: TCodeBuffer; const AFilename: string;
var NewBuffer: TCodeBuffer): boolean;
out NewBuffer: TCodeBuffer): boolean;
function SaveIncludeLinksToFile(const AFilename: string;
OnlyIfChanged: boolean): boolean;
function SaveIncludeLinksToXML(XMLConfig: TXMLConfig;
@ -317,7 +317,7 @@ begin
end;
function TCodeCache.SaveBufferAs(OldBuffer: TCodeBuffer;
const AFilename: string; var NewBuffer: TCodeBuffer): boolean;
const AFilename: string; out NewBuffer: TCodeBuffer): boolean;
begin
//DebugLn('[TCodeCache.SaveBufferAs] ',OldBuffer.Filename,' ',AFilename);
if (OldBuffer=nil) then begin

View File

@ -101,7 +101,7 @@ type
FWriteLockCount: integer;// Set/Unset counter
FWriteLockStep: integer; // current write lock ID
function OnScannerGetInitValues(Code: Pointer;
var AChangeStep: integer): TExpressionEvaluator;
out AChangeStep: integer): TExpressionEvaluator;
procedure OnDefineTreeReadValue(Sender: TObject; const VariableName: string;
var Value: string; var Handled: boolean);
procedure OnGlobalValuesChanged;
@ -135,8 +135,8 @@ type
function OnGetCodeToolForBuffer(Sender: TObject;
Code: TCodeBuffer; GoToMainCode: boolean): TFindDeclarationTool;
procedure OnToolSetWriteLock(Lock: boolean);
procedure OnToolGetWriteLockInfo(var WriteLockIsSet: boolean;
var WriteLockStep: integer);
procedure OnToolGetWriteLockInfo(out WriteLockIsSet: boolean;
out WriteLockStep: integer);
function OnParserProgress(Tool: TCustomCodeTool): boolean;
function OnScannerProgress(Sender: TLinkScanner): boolean;
function GetResourceTool: TResourceCodeTool;
@ -167,12 +167,12 @@ type
function CreateTempFile(const AFilename: string): TCodeBuffer;
procedure ReleaseTempFile(Buffer: TCodeBuffer);
function SaveBufferAs(OldBuffer: TCodeBuffer;const ExpandedFilename: string;
var NewBuffer: TCodeBuffer): boolean;
out NewBuffer: TCodeBuffer): boolean;
function FilenameHasSourceExt(const AFilename: string): boolean;
function GetMainCode(Code: TCodeBuffer): TCodeBuffer;
function GetIncludeCodeChain(Code: TCodeBuffer;
RemoveFirstCodesWithoutTool: boolean;
var ListOfCodeBuffer: TFPList): boolean;
out ListOfCodeBuffer: TFPList): boolean;
function FindCodeToolForSource(Code: TCodeBuffer): TCustomCodeTool;
property OnSearchUsedUnit: TOnSearchUsedUnit
read FOnSearchUsedUnit write FOnSearchUsedUnit;
@ -241,7 +241,7 @@ type
function FindUnitInUnitLinks(const Directory, UnitName: string): string;
function GetUnitLinksForDirectory(const Directory: string): string;
procedure GetFPCVersionForDirectory(const Directory: string;
var FPCVersion, FPCRelease, FPCPatch: integer);
out FPCVersion, FPCRelease, FPCPatch: integer);
// data function
procedure FreeListOfPCodeXYPosition(var List: TFPList);
@ -253,10 +253,10 @@ type
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// code exploring
function Explore(Code: TCodeBuffer; var ACodeTool: TCodeTool;
function Explore(Code: TCodeBuffer; out ACodeTool: TCodeTool;
WithStatements: boolean): boolean;
function CheckSyntax(Code: TCodeBuffer; var NewCode: TCodeBuffer;
var NewX, NewY, NewTopLine: integer; var ErrorMsg: string): boolean;
function CheckSyntax(Code: TCodeBuffer; out NewCode: TCodeBuffer;
out NewX, NewY, NewTopLine: integer; out ErrorMsg: string): boolean;
// compiler directives
function GuessMisplacedIfdefEndif(Code: TCodeBuffer; X,Y: integer;
@ -688,7 +688,7 @@ begin
end;
function TCodeToolManager.SaveBufferAs(OldBuffer: TCodeBuffer;
const ExpandedFilename: string; var NewBuffer: TCodeBuffer): boolean;
const ExpandedFilename: string; out NewBuffer: TCodeBuffer): boolean;
begin
Result:=SourceCache.SaveBufferAs(OldBuffer,ExpandedFilename,NewBuffer);
end;
@ -749,7 +749,7 @@ begin
end;
function TCodeToolManager.GetIncludeCodeChain(Code: TCodeBuffer;
RemoveFirstCodesWithoutTool: boolean; var ListOfCodeBuffer: TFPList): boolean;
RemoveFirstCodesWithoutTool: boolean; out ListOfCodeBuffer: TFPList): boolean;
var
OldCode: TCodeBuffer;
begin
@ -979,7 +979,7 @@ begin
end;
procedure TCodeToolManager.GetFPCVersionForDirectory(const Directory: string;
var FPCVersion, FPCRelease, FPCPatch: integer);
out FPCVersion, FPCRelease, FPCPatch: integer);
var
Evaluator: TExpressionEvaluator;
i: Integer;
@ -1093,7 +1093,7 @@ begin
end;
function TCodeToolManager.Explore(Code: TCodeBuffer;
var ACodeTool: TCodeTool; WithStatements: boolean): boolean;
out ACodeTool: TCodeTool; WithStatements: boolean): boolean;
begin
Result:=false;
ACodeTool:=nil;
@ -1224,8 +1224,8 @@ begin
end;
function TCodeToolManager.CheckSyntax(Code: TCodeBuffer;
var NewCode: TCodeBuffer; var NewX, NewY, NewTopLine: integer;
var ErrorMsg: string): boolean;
out NewCode: TCodeBuffer; out NewX, NewY, NewTopLine: integer;
out ErrorMsg: string): boolean;
// returns true on syntax correct
var
ACodeTool: TCodeTool;
@ -2953,6 +2953,7 @@ begin
{$IFDEF CTDEBUG}
DebugLn('TCodeToolManager.FindDanglingComponentEvents A ',Code.Filename,' ',AClassName);
{$ENDIF}
ListOfPInstancePropInfo:=nil;
if not InitCurCodeTool(Code) then exit;
try
Result:=FCurCodeTool.FindDanglingComponentEvents(AClassName,RootComponent,
@ -3033,7 +3034,7 @@ begin
end;
function TCodeToolManager.OnScannerGetInitValues(Code: Pointer;
var AChangeStep: integer): TExpressionEvaluator;
out AChangeStep: integer): TExpressionEvaluator;
begin
Result:=nil;
AChangeStep:=DefineTree.ChangeStep;
@ -3266,8 +3267,8 @@ begin
{$ENDIF}
end;
procedure TCodeToolManager.OnToolGetWriteLockInfo(var WriteLockIsSet: boolean;
var WriteLockStep: integer);
procedure TCodeToolManager.OnToolGetWriteLockInfo(out WriteLockIsSet: boolean;
out WriteLockStep: integer);
begin
WriteLockIsSet:=FWriteLockCount>0;
WriteLockStep:=FWriteLockStep;

View File

@ -72,11 +72,11 @@ type
TOnGetFileName = function(Sender: TObject; Code: Pointer): string of object;
TOnCheckFileOnDisk = function(Code: Pointer): boolean of object;
TOnGetInitValues = function(Code: Pointer;
var ChangeStep: integer): TExpressionEvaluator of object;
out ChangeStep: integer): TExpressionEvaluator of object;
TOnIncludeCode = procedure(ParentCode, IncludeCode: Pointer) of object;
TOnSetWriteLock = procedure(Lock: boolean) of object;
TOnGetWriteLockInfo = procedure(var WriteLockIsSet: boolean;
var WriteLockStep: integer) of object;
TOnGetWriteLockInfo = procedure(out WriteLockIsSet: boolean;
out WriteLockStep: integer) of object;
{ TSourceLink is used to map between the codefiles and the cleaned source }
PSourceLink = ^TSourceLink;

View File

@ -241,6 +241,7 @@ var
s: String;
MsgResult: TModalResult;
begin
ListOfPInstancePropInfo:=nil;
try
// find all dangling events
//debugln('RemoveDanglingEvents A ',PascalBuffer.Filename,' ',DbgSName(RootComponent));

View File

@ -128,6 +128,7 @@ const
ecFindIdentifierRefs = ecUserFirst + 113;
ecRenameIdentifier = ecUserFirst + 114;
ecInvertAssignment = ecUserFirst + 115;
ecShowCodeContext = ecUserFirst + 116;
// file menu
ecNew = ecUserFirst + 201;
@ -575,6 +576,7 @@ begin
ecWordCompletion: SetResult(VK_W,[ssCtrl],VK_UNKNOWN,[]);
ecCompleteCode: SetResult(VK_C,[ssCtrl,ssShift],VK_UNKNOWN,[]);
ecIdentCompletion: SetResult(VK_SPACE,[ssCtrl],VK_UNKNOWN,[]);
ecShowCodeContext: SetResult(VK_SPACE,[ssCtrl,ssShift],VK_UNKNOWN,[]);
ecExtractProc: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecFindIdentifierRefs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecRenameIdentifier: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -877,6 +879,7 @@ begin
ecWordCompletion: SetResult(VK_W,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecCompleteCode: SetResult(VK_C,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecIdentCompletion: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecShowCodeContext: SetResult(VK_SPACE,[ssShift,ssCtrl],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecExtractProc: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecFindIdentifierRefs: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
ecRenameIdentifier: SetResult(VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[],VK_UNKNOWN,[]);
@ -1490,6 +1493,7 @@ begin
ecWordCompletion : Result:= srkmecWordCompletion;
ecCompleteCode : Result:= srkmecCompleteCode;
ecIdentCompletion : Result:= dlgedidcomlet;
ecShowCodeContext : Result:= srkmecShowCodeContext;
ecExtractProc : Result:= srkmecExtractProc;
ecFindIdentifierRefs : Result:= srkmecFindIdentifierRefs;
ecRenameIdentifier : Result:= srkmecRenameIdentifier;
@ -2336,6 +2340,7 @@ begin
AddDefault(C,'Word completion',ecWordCompletion);
AddDefault(C,'Complete code',ecCompleteCode);
AddDefault(C,'Identifier completion',ecIdentCompletion);
AddDefault(C,'Show code context',ecShowCodeContext);
AddDefault(C,'Extract proc',ecExtractProc);
AddDefault(C,'Find identifier references',ecFindIdentifierRefs);
AddDefault(C,'Invert assignment',ecInvertAssignment);

View File

@ -1384,6 +1384,7 @@ resourcestring
// codetools
srkmecWordCompletion = 'Word completion';
srkmecCompletecode = 'Complete code';
srkmecShowCodeContext = 'Show code context';
srkmecExtractProc = 'Extract procedure';
srkmecFindIdentifierRefs = 'Find identifier references';
srkmecRenameIdentifier = 'Rename identifier';

View File

@ -98,6 +98,9 @@ type
{---- TSource Editor ---
TSourceEditor is the class that controls access for the Editor.
---- TSource Editor ---}
{ TSourceEditor }
TSourceEditor = class(TSourceEditorInterface)
private
//FAOwner is normally a TSourceNotebook. This is set in the Create constructor.
@ -189,6 +192,7 @@ type
procedure OnCodeBufferChanged(Sender: TSourceLog;
SrcLogEntry: TSourceLogEntry);
procedure StartIdentCompletion(JumpToError: boolean);
procedure StartShowCodeContext(JumpToError: boolean);
procedure LinesInserted(sender: TObject; FirstLine,Count: Integer);
procedure LinesDeleted(sender: TObject; FirstLine,Count: Integer);
@ -1185,6 +1189,9 @@ Begin
ecIdentCompletion :
StartIdentCompletion(true);
ecShowCodeContext :
StartShowCodeContext(true);
ecWordCompletion :
if not TCustomSynEdit(Sender).ReadOnly then begin
CurrentCompletionType:=ctWordCompletion;
@ -1943,6 +1950,11 @@ begin
aCompletion.Execute(TextS2,P.X,P.Y);
end;
procedure TSourceEditor.StartShowCodeContext(JumpToError: boolean);
begin
end;
procedure TSourceEditor.IncreaseIgnoreCodeBufferLock;
begin
inc(FIgnoreCodeBufferLock);