From d82e018aaf2ced8f8c5940bcc67941fc671dec29 Mon Sep 17 00:00:00 2001 From: mattias Date: Sat, 11 May 2013 19:39:13 +0000 Subject: [PATCH] IDE: sourceditor: connect scanner when setting codebuffer git-svn-id: trunk@41134 - --- ide/sourceeditor.pp | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/ide/sourceeditor.pp b/ide/sourceeditor.pp index a80f259d0c..922bc20a8d 100644 --- a/ide/sourceeditor.pp +++ b/ide/sourceeditor.pp @@ -219,6 +219,7 @@ type procedure UpdateCodeBuffer; property CodeBuffer: TCodeBuffer read FCodeBuffer write SetCodeBuffer; procedure ConnectScanner(Scanner: TLinkScanner); + procedure DisconnectScanner(Scanner: TLinkScanner); function Filename: string; override; public constructor Create; @@ -2268,8 +2269,11 @@ var i: Integer; begin if FCodeBuffer = AValue then exit; - if FCodeBuffer<>nil then + if FCodeBuffer<>nil then begin FCodeBuffer.RemoveChangeHook(@OnCodeBufferChanged); + if FCodeBuffer.Scanner<>nil then + DisconnectScanner(FCodeBuffer.Scanner); + end; FCodeBuffer := AValue; if FCodeBuffer <> nil then begin @@ -2281,6 +2285,8 @@ begin SharedEditors[i].ClearExecutionMarks; end; FCodeBuffer.AddChangeHook(@OnCodeBufferChanged); + if FCodeBuffer.Scanner<>nil then + ConnectScanner(FCodeBuffer.Scanner); if (FIgnoreCodeBufferLock <= 0) and (not FCodeBuffer.IsEqual(SynEditor.Lines)) then begin {$IFDEF IDE_DEBUG} @@ -2571,12 +2577,24 @@ end; procedure TSourceEditorSharedValues.ConnectScanner(Scanner: TLinkScanner); begin + if Scanner=nil then exit; if FLinkScanners.IndexOf(Scanner)>=0 then exit; //debugln(['TSourceEditorSharedValues.ConnectScanner ',Filename,' ',Scanner.MainFilename]); FLinkScanners.Add(Scanner); Scanner.DemandStoreDirectives; end; +procedure TSourceEditorSharedValues.DisconnectScanner(Scanner: TLinkScanner); +var + i: Integer; +begin + if Scanner=nil then exit; + i:=FLinkScanners.IndexOf(Scanner); + if i<0 then exit; + FLinkScanners.Delete(i); + Scanner.ReleaseStoreDirectives; +end; + function TSourceEditorSharedValues.Filename: string; begin Result:=FCodeBuffer.Filename;