mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2026-01-05 23:41:23 +01:00
fixed checking dangling events on empty units
git-svn-id: trunk@7562 -
This commit is contained in:
parent
a6441b5840
commit
18a6999481
@ -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
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -241,6 +241,7 @@ var
|
||||
s: String;
|
||||
MsgResult: TModalResult;
|
||||
begin
|
||||
ListOfPInstancePropInfo:=nil;
|
||||
try
|
||||
// find all dangling events
|
||||
//debugln('RemoveDanglingEvents A ',PascalBuffer.Filename,' ',DbgSName(RootComponent));
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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';
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user