diff --git a/components/codetools/codetoolmanager.pas b/components/codetools/codetoolmanager.pas index 0df760bebc..f6fff29e14 100644 --- a/components/codetools/codetoolmanager.pas +++ b/components/codetools/codetoolmanager.pas @@ -76,6 +76,7 @@ type ); TCodeToolManagerHandlers = set of TCodeToolManagerHandler; TOnToolTreeChanging = TCodeTreeChangeEvent; + TOnScannerInit = procedure(Self: TCodeToolManager; Scanner: TLinkScanner) of object; { TCodeToolManager } @@ -110,6 +111,7 @@ type FOnFindDefineProperty: TOnFindDefineProperty; FOnGetIndenterExamples: TOnGetFABExamples; FOnGetMethodName: TOnGetMethodname; + FOnScannerInit: TOnScannerInit; FOnSearchUsedUnit: TOnSearchUsedUnit; FResourceTool: TResourceCodeTool; FSetPropertyVariablename: string; @@ -123,16 +125,16 @@ type FWriteLockStep: integer; // current write lock ID FHandlers: array[TCodeToolManagerHandler] of TMethodList; function GetBeautifier: TBeautifyCodeOptions; inline; - function OnScannerGetInitValues(Code: Pointer; + function DoOnScannerGetInitValues(Scanner: TLinkScanner; Code: Pointer; out AChangeStep: integer): TExpressionEvaluator; - procedure OnDefineTreeReadValue(Sender: TObject; const VariableName: string; + procedure DoOnDefineTreeReadValue(Sender: TObject; const VariableName: string; var Value: string; var Handled: boolean); - procedure OnGlobalValuesChanged; + procedure DoOnGlobalValuesChanged; function DoOnFindUsedUnit(SrcTool: TFindDeclarationTool; const TheUnitName, TheUnitInFilename: string): TCodeBuffer; function DoOnGetSrcPathForCompiledUnit(Sender: TObject; const AFilename: string): string; - function OnInternalGetMethodName(const AMethod: TMethod; + function DoOnInternalGetMethodName(const AMethod: TMethod; CheckOwner: TObject): string; function FindCodeOfMainUnitHint(Code: TCodeBuffer): TCodeBuffer; procedure CreateScanner(Code: TCodeBuffer); @@ -150,21 +152,21 @@ type procedure AfterApplyingChanges; procedure AdjustErrorTopLine; procedure WriteError; - procedure OnFABGetNestedComments(Sender: TObject; Code: TCodeBuffer; out + procedure DoOnFABGetNestedComments(Sender: TObject; Code: TCodeBuffer; out NestedComments: boolean); - procedure OnFABGetExamples(Sender: TObject; Code: TCodeBuffer; + procedure DoOnFABGetExamples(Sender: TObject; Code: TCodeBuffer; Step: integer; var CodeBuffers: TFPList; var ExpandedFilenames: TStrings); - procedure OnLoadFileForTool(Sender: TObject; const ExpandedFilename: string; + procedure DoOnLoadFileForTool(Sender: TObject; const ExpandedFilename: string; out Code: TCodeBuffer; var Abort: boolean); - function OnGetCodeToolForBuffer(Sender: TObject; + function DoOnGetCodeToolForBuffer(Sender: TObject; Code: TCodeBuffer; GoToMainCode: boolean): TFindDeclarationTool; - function OnGetDirectoryCache(const ADirectory: string): TCTDirectoryCache; - procedure OnToolSetWriteLock(Lock: boolean); - procedure OnToolGetChangeSteps(out SourcesChangeStep, FilesChangeStep: int64; + function DoOnGetDirectoryCache(const ADirectory: string): TCTDirectoryCache; + procedure DoOnToolSetWriteLock(Lock: boolean); + procedure DoOnToolGetChangeSteps(out SourcesChangeStep, FilesChangeStep: int64; out InitValuesChangeStep: integer); - function OnParserProgress(Tool: TCustomCodeTool): boolean; - procedure OnToolTreeChange(Tool: TCustomCodeTool; NodesDeleting: boolean); - function OnScannerProgress(Sender: TLinkScanner): boolean; + function DoOnParserProgress(Tool: TCustomCodeTool): boolean; + procedure DoOnToolTreeChange(Tool: TCustomCodeTool; NodesDeleting: boolean); + function DoOnScannerProgress(Sender: TLinkScanner): boolean; function GetResourceTool: TResourceCodeTool; function GetOwnerForCodeTreeNode(ANode: TCodeTreeNode): TObject; function DirectoryCachePoolGetString(const ADirectory: string; @@ -228,6 +230,9 @@ type property OnSearchUsedUnit: TOnSearchUsedUnit read FOnSearchUsedUnit write FOnSearchUsedUnit; + // initializing single scanner + property OnScannerInit: TOnScannerInit read FOnScannerInit write FOnScannerInit; + // initializing single codetool function GetCodeToolForSource(Code: TCodeBuffer; GoToMainCode, ExceptionOnError: boolean): TCustomCodeTool; @@ -920,7 +925,7 @@ begin DirectoryCachePool.OnGetCompiledUnitFromSet:=@DirectoryCachePoolGetCompiledUnitFromSet; DirectoryCachePool.OnIterateFPCUnitsFromSet:=@DirectoryCachePoolIterateFPCUnitsFromSet; DefineTree:=TDefineTree.Create; - DefineTree.OnReadValue:=@OnDefineTreeReadValue; + DefineTree.OnReadValue:=@DoOnDefineTreeReadValue; DefinePool:=TDefinePool.Create; SourceCache:=TCodeCache.Create; SourceCache.DirectoryCachePool:=DirectoryCachePool; @@ -930,9 +935,9 @@ begin SourceChangeCache.OnBeforeApplyChanges:=@BeforeApplyingChanges; SourceChangeCache.OnAfterApplyChanges:=@AfterApplyingChanges; Indenter:=TFullyAutomaticBeautifier.Create; - Indenter.OnGetNestedComments:=@OnFABGetNestedComments; - Indenter.OnGetExamples:=@OnFABGetExamples; - Indenter.OnLoadFile:=@OnLoadFileForTool; + Indenter.OnGetNestedComments:=@DoOnFABGetNestedComments; + Indenter.OnGetExamples:=@DoOnFABGetExamples; + Indenter.OnLoadFile:=@DoOnLoadFileForTool; GlobalValues:=TExpressionEvaluator.Create; OnFileExistsCached:=@DirectoryCachePool.FileExists; OnFileAgeCached:=@DirectoryCachePool.FileAge; @@ -1339,10 +1344,10 @@ begin if FilenameHasSourceExt(Code.Filename) and (Code.Scanner=nil) then begin // create a scanner for the unit/program Code.Scanner:=TLinkScanner.Create; - Code.Scanner.OnGetInitValues:=@OnScannerGetInitValues; - Code.Scanner.OnSetGlobalWriteLock:=@OnToolSetWriteLock; - Code.Scanner.OnGetGlobalChangeSteps:=@OnToolGetChangeSteps; - Code.Scanner.OnProgress:=@OnScannerProgress; + Code.Scanner.OnGetInitValues:=@DoOnScannerGetInitValues; + Code.Scanner.OnSetGlobalWriteLock:=@DoOnToolSetWriteLock; + Code.Scanner.OnGetGlobalChangeSteps:=@DoOnToolGetChangeSteps; + Code.Scanner.OnProgress:=@DoOnScannerProgress; end; end; @@ -2406,7 +2411,7 @@ begin if not InitCurCodeTool(Code) then exit; try Graph:=TDeclarationOverloadsGraph.Create; - Graph.OnGetCodeToolForBuffer:=@OnGetCodeToolForBuffer; + Graph.OnGetCodeToolForBuffer:=@DoOnGetCodeToolForBuffer; Result:=Graph.Init(NewCode,NewX,NewY); except on e: Exception do Result:=HandleException(e); @@ -4761,8 +4766,8 @@ function TCodeToolManager.CreateUsesGraph: TUsesGraph; begin Result:=TUsesGraph.Create; Result.DirectoryCachePool:=DirectoryCachePool; - Result.OnGetCodeToolForBuffer:=@OnGetCodeToolForBuffer; - Result.OnLoadFile:=@OnLoadFileForTool; + Result.OnGetCodeToolForBuffer:=@DoOnGetCodeToolForBuffer; + Result.OnLoadFile:=@DoOnLoadFileForTool; end; function TCodeToolManager.FindLFMFileName(Code: TCodeBuffer): string; @@ -5318,7 +5323,7 @@ begin Result:=GetCompiledSrcPathForDirectory(ExtractFilePath(AFilename)); end; -function TCodeToolManager.OnInternalGetMethodName(const AMethod: TMethod; +function TCodeToolManager.DoOnInternalGetMethodName(const AMethod: TMethod; CheckOwner: TObject): string; begin if Assigned(OnGetMethodName) then @@ -5331,7 +5336,7 @@ begin Result:=TObject(AMethod.Data).MethodName(AMethod.Code); end; -function TCodeToolManager.OnParserProgress(Tool: TCustomCodeTool): boolean; +function TCodeToolManager.DoOnParserProgress(Tool: TCustomCodeTool): boolean; begin Result:=true; if not FAbortable then exit; @@ -5339,7 +5344,7 @@ begin Result:=not OnCheckAbort(); end; -procedure TCodeToolManager.OnToolTreeChange(Tool: TCustomCodeTool; +procedure TCodeToolManager.DoOnToolTreeChange(Tool: TCustomCodeTool; NodesDeleting: boolean); var i: Integer; @@ -5356,7 +5361,7 @@ begin TOnToolTreeChanging(FHandlers[ctmOnToolTreeChanging][i])(Tool,NodesDeleting); end; -function TCodeToolManager.OnScannerProgress(Sender: TLinkScanner): boolean; +function TCodeToolManager.DoOnScannerProgress(Sender: TLinkScanner): boolean; begin Result:=true; if not FAbortable then exit; @@ -5364,27 +5369,27 @@ begin Result:=not OnCheckAbort(); end; -procedure TCodeToolManager.OnFABGetNestedComments(Sender: TObject; +procedure TCodeToolManager.DoOnFABGetNestedComments(Sender: TObject; Code: TCodeBuffer; out NestedComments: boolean); begin NestedComments:=GetNestedCommentsFlagForFile(Code.Filename); end; -procedure TCodeToolManager.OnFABGetExamples(Sender: TObject; Code: TCodeBuffer; +procedure TCodeToolManager.DoOnFABGetExamples(Sender: TObject; Code: TCodeBuffer; Step: integer; var CodeBuffers: TFPList; var ExpandedFilenames: TStrings); begin if Assigned(OnGetIndenterExamples) then OnGetIndenterExamples(Sender,Code,Step,CodeBuffers,ExpandedFilenames); end; -procedure TCodeToolManager.OnLoadFileForTool(Sender: TObject; +procedure TCodeToolManager.DoOnLoadFileForTool(Sender: TObject; const ExpandedFilename: string; out Code: TCodeBuffer; var Abort: boolean); begin Code:=LoadFile(ExpandedFilename,true,false); end; -function TCodeToolManager.OnScannerGetInitValues(Code: Pointer; - out AChangeStep: integer): TExpressionEvaluator; +function TCodeToolManager.DoOnScannerGetInitValues(Scanner: TLinkScanner; + Code: Pointer; out AChangeStep: integer): TExpressionEvaluator; begin Result:=nil; AChangeStep:=DefineTree.ChangeStep; @@ -5395,9 +5400,11 @@ begin ExtractFilePath(TCodeBuffer(Code).Filename),false) else Result:=DefineTree.GetDefinesForVirtualDirectory; + if Assigned(OnScannerInit) then + OnScannerInit(Self,Scanner); end; -procedure TCodeToolManager.OnDefineTreeReadValue(Sender: TObject; +procedure TCodeToolManager.DoOnDefineTreeReadValue(Sender: TObject; const VariableName: string; var Value: string; var Handled: boolean); begin Handled:=GlobalValues.IsDefined(VariableName); @@ -5406,7 +5413,7 @@ begin //DebugLn('[TCodeToolManager.OnDefineTreeReadValue] Name="',VariableName,'" = "',Value,'"'); end; -procedure TCodeToolManager.OnGlobalValuesChanged; +procedure TCodeToolManager.DoOnGlobalValuesChanged; begin DefineTree.ClearCache; end; @@ -5552,14 +5559,14 @@ begin Result.Scanner:=Code.Scanner; FPascalTools.Add(Result); TCodeTool(Result).Beautifier:=SourceChangeCache.BeautifyCodeOptions; - TCodeTool(Result).OnGetCodeToolForBuffer:=@OnGetCodeToolForBuffer; - TCodeTool(Result).OnGetDirectoryCache:=@OnGetDirectoryCache; + TCodeTool(Result).OnGetCodeToolForBuffer:=@DoOnGetCodeToolForBuffer; + TCodeTool(Result).OnGetDirectoryCache:=@DoOnGetDirectoryCache; TCodeTool(Result).OnFindUsedUnit:=@DoOnFindUsedUnit; TCodeTool(Result).OnGetSrcPathForCompiledUnit:=@DoOnGetSrcPathForCompiledUnit; - TCodeTool(Result).OnGetMethodName:=@OnInternalGetMethodName; - Result.OnSetGlobalWriteLock:=@OnToolSetWriteLock; - Result.OnTreeChange:=@OnToolTreeChange; - TCodeTool(Result).OnParserProgress:=@OnParserProgress; + TCodeTool(Result).OnGetMethodName:=@DoOnInternalGetMethodName; + Result.OnSetGlobalWriteLock:=@DoOnToolSetWriteLock; + Result.OnTreeChange:=@DoOnToolTreeChange; + TCodeTool(Result).OnParserProgress:=@DoOnParserProgress; end; with TCodeTool(Result) do begin AdjustTopLineDueToComment:=Self.AdjustTopLineDueToComment; @@ -5640,7 +5647,7 @@ begin FCurCodeTool.AddInheritedCodeToOverrideMethod:=AValue; end; -function TCodeToolManager.OnGetCodeToolForBuffer(Sender: TObject; +function TCodeToolManager.DoOnGetCodeToolForBuffer(Sender: TObject; Code: TCodeBuffer; GoToMainCode: boolean): TFindDeclarationTool; begin {$IFDEF CTDEBUG} @@ -5652,7 +5659,7 @@ begin Result:=TFindDeclarationTool(GetCodeToolForSource(Code,GoToMainCode,true)); end; -function TCodeToolManager.OnGetDirectoryCache(const ADirectory: string +function TCodeToolManager.DoOnGetDirectoryCache(const ADirectory: string ): TCTDirectoryCache; begin Result:=DirectoryCachePool.GetCache(ADirectory,true,true); @@ -5871,12 +5878,12 @@ begin FHandlers[HandlerType].Remove(Handler); end; -procedure TCodeToolManager.OnToolSetWriteLock(Lock: boolean); +procedure TCodeToolManager.DoOnToolSetWriteLock(Lock: boolean); begin if Lock then ActivateWriteLock else DeactivateWriteLock; end; -procedure TCodeToolManager.OnToolGetChangeSteps(out SourcesChangeStep, +procedure TCodeToolManager.DoOnToolGetChangeSteps(out SourcesChangeStep, FilesChangeStep: int64; out InitValuesChangeStep: integer); begin SourcesChangeStep:=SourceCache.ChangeStamp; diff --git a/components/codetools/linkscanner.pas b/components/codetools/linkscanner.pas index b248b3a973..0ca0429201 100644 --- a/components/codetools/linkscanner.pas +++ b/components/codetools/linkscanner.pas @@ -74,7 +74,7 @@ type of object; TOnGetFileName = function(Sender: TObject; Code: Pointer): string of object; TOnCheckFileOnDisk = function(Code: Pointer): boolean of object; - TOnGetInitValues = function(Code: Pointer; + TOnGetInitValues = function(Scanner: TLinkScanner; Code: Pointer; out ChangeStep: integer): TExpressionEvaluator of object; TOnIncludeCode = procedure(ParentCode, IncludeCode: Pointer) of object; TOnSetWriteLock = procedure(Lock: boolean) of object; @@ -1711,7 +1711,7 @@ begin // initialize Defines if Assigned(FOnGetInitValues) then - FInitValues.Assign(FOnGetInitValues(FMainCode,FInitValuesChangeStep)); + FInitValues.Assign(FOnGetInitValues(Self,FMainCode,FInitValuesChangeStep)); Values.Assign(FInitValues); // compiler @@ -2161,7 +2161,7 @@ begin // check initvalues if Assigned(FOnGetInitValues) then begin - NewInitValues:=FOnGetInitValues(Code,NewInitValuesChangeStep); + NewInitValues:=FOnGetInitValues(Self,Code,NewInitValuesChangeStep); if (NewInitValues<>nil) and (NewInitValuesChangeStep<>FInitValuesChangeStep) and (not FInitValues.Equals(NewInitValues)) then begin diff --git a/ide/main.pp b/ide/main.pp index f20160632b..fbdd340c80 100644 --- a/ide/main.pp +++ b/ide/main.pp @@ -620,6 +620,8 @@ type ); function CTMacroFunctionProject(Data: Pointer): boolean; procedure OnCompilerParseStampIncreased; + procedure CodeToolBossScannerInit(Self: TCodeToolManager; + Scanner: TLinkScanner); // MessagesView events procedure MessagesViewSelectionChanged(sender: TObject); @@ -9872,6 +9874,7 @@ begin OnFindDefineProperty:=@OnCodeToolBossFindDefineProperty; OnGetMethodName:=@OnCodeToolBossGetMethodName; OnGetIndenterExamples:=@OnCodeToolBossGetIndenterExamples; + OnScannerInit:=@CodeToolBossScannerInit; end; CodeToolsOpts.AssignGlobalDefineTemplatesToTree(CodeToolBoss.DefineTree); @@ -10168,6 +10171,18 @@ begin CodeToolBoss.DefineTree.ClearCache; end; +procedure TMainIDE.CodeToolBossScannerInit(Self: TCodeToolManager; + Scanner: TLinkScanner); +var + SrcEdit: TSourceEditor; +begin + if SourceEditorManager=nil then exit; + SrcEdit:=SourceEditorManager.SourceEditorIntfWithFilename(Scanner.MainFilename); + //debugln(['TMainIDE.CodeToolBossScannerInit ',Scanner.MainFilename,' ',DbgSName(SrcEdit)]); + if SrcEdit=nil then exit; + SrcEdit.ConnectScanner(Scanner); +end; + function TMainIDE.CTMacroFunctionProject(Data: Pointer): boolean; var FuncData: PReadFunctionData; diff --git a/ide/sourceeditor.pp b/ide/sourceeditor.pp index 8958ba4bdf..a80f259d0c 100644 --- a/ide/sourceeditor.pp +++ b/ide/sourceeditor.pp @@ -48,6 +48,7 @@ uses LConvEncoding, Messages, LazLoggerBase, lazutf8classes, // codetools BasicCodeTools, CodeBeautifier, CodeToolManager, CodeCache, SourceLog, + LinkScanner, // synedit SynEditLines, SynEditStrConst, SynEditTypes, SynEdit, SynRegExpr, SynEditHighlighter, SynEditAutoComplete, SynEditKeyCmds, SynCompletion, @@ -202,6 +203,7 @@ type FIgnoreCodeBufferLock: integer; FEditorStampCommitedToCodetools: int64; FCodeBuffer: TCodeBuffer; + FLinkScanners: TFPList; // list of TLinkScanner function GetModified: Boolean; procedure SetCodeBuffer(const AValue: TCodeBuffer); procedure SetModified(const AValue: Boolean); @@ -216,6 +218,8 @@ type function NeedsUpdateCodeBuffer: boolean; procedure UpdateCodeBuffer; property CodeBuffer: TCodeBuffer read FCodeBuffer write SetCodeBuffer; + procedure ConnectScanner(Scanner: TLinkScanner); + function Filename: string; override; public constructor Create; destructor Destroy; override; @@ -370,6 +374,7 @@ type procedure DecreaseIgnoreCodeBufferLock; override; procedure UpdateCodeBuffer; override;// copy the source from EditorComponent function NeedsUpdateCodeBuffer: boolean; override; + procedure ConnectScanner(Scanner: TLinkScanner); // find procedure StartFindAndReplace(Replace:boolean); @@ -534,6 +539,7 @@ type property SyncroLockCount: Integer read FSyncroLockCount; function SharedEditorCount: Integer; property SharedEditors[Index: Integer]: TSourceEditor read GetSharedEditors; + property SharedValues: TSourceEditorSharedValues read FSharedValues; property IsNewSharedEditor: Boolean read FIsNewSharedEditor write FIsNewSharedEditor; property IsLocked: Boolean read FIsLocked write SetIsLocked; end; @@ -970,6 +976,7 @@ type FOnCurrentCodeBufferChanged: TNotifyEvent; procedure DoMacroRecorderState(Sender: TObject); public + // codetools property OnCurrentCodeBufferChanged: TNotifyEvent read FOnCurrentCodeBufferChanged write FOnCurrentCodeBufferChanged; end; @@ -2562,19 +2569,40 @@ begin end; end; +procedure TSourceEditorSharedValues.ConnectScanner(Scanner: TLinkScanner); +begin + if FLinkScanners.IndexOf(Scanner)>=0 then exit; + //debugln(['TSourceEditorSharedValues.ConnectScanner ',Filename,' ',Scanner.MainFilename]); + FLinkScanners.Add(Scanner); + Scanner.DemandStoreDirectives; +end; + +function TSourceEditorSharedValues.Filename: string; +begin + Result:=FCodeBuffer.Filename; +end; + constructor TSourceEditorSharedValues.Create; begin FSharedEditorList := TFPList.Create; FExecutionMark := nil; FMarksRequested := False; FInGlobalUpdate := 0; + FLinkScanners := TFPList.Create; end; destructor TSourceEditorSharedValues.Destroy; +var + i: integer; begin SourceEditorMarks.DeleteAllForEditorID(Self); CodeBuffer := nil; FreeAndNil(FSharedEditorList); + if FLinkScanners<>nil then begin + for i:=0 to FLinkScanners.Count-1 do + TLinkScanner(FLinkScanners[i]).ReleaseStoreDirectives; + FreeAndNil(FLinkScanners); + end; // no need to care about ExecutionMark, it is removed with all other marks, // if the last SynEdit is destroyed (TSynEditMark.Destroy will free the SourceMark) inherited Destroy; @@ -3034,7 +3062,7 @@ begin FEditor.CaretXY := FTempCaret; end; -Procedure TSourceEditor.ProcessCommand(Sender: TObject; +procedure TSourceEditor.ProcessCommand(Sender: TObject; var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); // these are normal commands for synedit (lower than ecUserFirst), // define extra actions here @@ -3187,7 +3215,7 @@ begin //debugln('TSourceEditor.ProcessCommand B IdentCompletionTimer.AutoEnabled=',dbgs(SourceCompletionTimer.AutoEnabled)); end; -Procedure TSourceEditor.ProcessUserCommand(Sender: TObject; +procedure TSourceEditor.ProcessUserCommand(Sender: TObject; var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); // these are the keys above ecUserFirst // define all extra keys here, that should not be handled by synedit @@ -3386,7 +3414,7 @@ Begin if Handled then Command:=ecNone; end; -Procedure TSourceEditor.UserCommandProcessed(Sender: TObject; +procedure TSourceEditor.UserCommandProcessed(Sender: TObject; var Command: TSynEditorCommand; var AChar: TUTF8Char; Data: pointer); // called after the source editor processed a key var Handled: boolean; @@ -3413,7 +3441,7 @@ begin if Handled then Command:=ecNone; end; -Procedure TSourceEditor.EditorStatusChanged(Sender: TObject; +procedure TSourceEditor.EditorStatusChanged(Sender: TObject; Changes: TSynStatusChanges); Begin If Assigned(OnEditorChange) then @@ -4456,6 +4484,11 @@ begin Result := FSharedValues.NeedsUpdateCodeBuffer; end; +procedure TSourceEditor.ConnectScanner(Scanner: TLinkScanner); +begin + FSharedValues.ConnectScanner(Scanner); +end; + function TSourceEditor.GetSource: TStrings; Begin //return synedit's source. @@ -4843,8 +4876,8 @@ begin end; end; -Procedure TSourceEditor.EditorMouseMoved(Sender: TObject; - Shift: TShiftState; X,Y: Integer); +procedure TSourceEditor.EditorMouseMoved(Sender: TObject; Shift: TShiftState; + X, Y: Integer); begin // debugln('MouseMove in Editor',X,',',Y); if Assigned(OnMouseMove) then @@ -4867,8 +4900,8 @@ begin OnMouseDown(Sender, Button, Shift, X,Y); end; -Procedure TSourceEditor.EditorKeyDown(Sender: TObject; var Key: Word; Shift : - TShiftState); +procedure TSourceEditor.EditorKeyDown(Sender: TObject; var Key: Word; + Shift: TShiftState); begin //DebugLn(['TSourceEditor.EditorKeyDown A ',dbgsName(Sender),' Key=',IntToStr(Key),' File=',ExtractFileName(Filename),' Wnd=',dbgSourceNoteBook(SourceNotebook)]); CheckActiveWindow; @@ -5324,8 +5357,8 @@ begin Result := FEditor.GetWordAtRowCol(ACaretPos); end; -procedure TSourceEditor.LinesDeleted(Sender: TObject; FirstLine, - Count: Integer); +procedure TSourceEditor.LinesDeleted(sender: TObject; FirstLine, Count: Integer + ); begin // notify the notebook that lines were deleted. // marks will use this to update themselves @@ -5333,8 +5366,8 @@ begin MessagesView.SrcEditLinesInsertedDeleted(Filename,FirstLine,-Count); end; -procedure TSourceEditor.LinesInserted(Sender: TObject; FirstLine, - Count: Integer); +procedure TSourceEditor.LinesInserted(sender: TObject; FirstLine, Count: Integer + ); begin // notify the notebook that lines were Inserted. // marks will use this to update themselves @@ -8572,6 +8605,7 @@ function TSourceEditorManagerBase.SourceEditorIntfWithFilename( var i: Integer; begin + {$Note ToDo: TSourceEditorManagerBase.SourceEditorIntfWithFilename use tree} for i := SourceEditorCount - 1 downto 0 do begin Result := SourceEditors[i]; if CompareFilenames(Result.Filename, Filename) = 0 then exit; diff --git a/ide/sourcemarks.pas b/ide/sourcemarks.pas index 71d176d941..71dd36079a 100644 --- a/ide/sourcemarks.pas +++ b/ide/sourcemarks.pas @@ -52,6 +52,7 @@ type protected function GetSharedEditorsBase(Index: Integer): TSourceEditorBase; virtual abstract; function SharedEditorCount: Integer; virtual; abstract; + function Filename: string; virtual; abstract; end; { TSourceEditorBase }