IDE: sourceditor: connect scanner when setting codebuffer

git-svn-id: trunk@41134 -
This commit is contained in:
mattias 2013-05-11 19:39:13 +00:00
parent 186067a9f8
commit d82e018aaf

View File

@ -219,6 +219,7 @@ type
procedure UpdateCodeBuffer; procedure UpdateCodeBuffer;
property CodeBuffer: TCodeBuffer read FCodeBuffer write SetCodeBuffer; property CodeBuffer: TCodeBuffer read FCodeBuffer write SetCodeBuffer;
procedure ConnectScanner(Scanner: TLinkScanner); procedure ConnectScanner(Scanner: TLinkScanner);
procedure DisconnectScanner(Scanner: TLinkScanner);
function Filename: string; override; function Filename: string; override;
public public
constructor Create; constructor Create;
@ -2268,8 +2269,11 @@ var
i: Integer; i: Integer;
begin begin
if FCodeBuffer = AValue then exit; if FCodeBuffer = AValue then exit;
if FCodeBuffer<>nil then if FCodeBuffer<>nil then begin
FCodeBuffer.RemoveChangeHook(@OnCodeBufferChanged); FCodeBuffer.RemoveChangeHook(@OnCodeBufferChanged);
if FCodeBuffer.Scanner<>nil then
DisconnectScanner(FCodeBuffer.Scanner);
end;
FCodeBuffer := AValue; FCodeBuffer := AValue;
if FCodeBuffer <> nil then if FCodeBuffer <> nil then
begin begin
@ -2281,6 +2285,8 @@ begin
SharedEditors[i].ClearExecutionMarks; SharedEditors[i].ClearExecutionMarks;
end; end;
FCodeBuffer.AddChangeHook(@OnCodeBufferChanged); FCodeBuffer.AddChangeHook(@OnCodeBufferChanged);
if FCodeBuffer.Scanner<>nil then
ConnectScanner(FCodeBuffer.Scanner);
if (FIgnoreCodeBufferLock <= 0) and (not FCodeBuffer.IsEqual(SynEditor.Lines)) if (FIgnoreCodeBufferLock <= 0) and (not FCodeBuffer.IsEqual(SynEditor.Lines))
then begin then begin
{$IFDEF IDE_DEBUG} {$IFDEF IDE_DEBUG}
@ -2571,12 +2577,24 @@ end;
procedure TSourceEditorSharedValues.ConnectScanner(Scanner: TLinkScanner); procedure TSourceEditorSharedValues.ConnectScanner(Scanner: TLinkScanner);
begin begin
if Scanner=nil then exit;
if FLinkScanners.IndexOf(Scanner)>=0 then exit; if FLinkScanners.IndexOf(Scanner)>=0 then exit;
//debugln(['TSourceEditorSharedValues.ConnectScanner ',Filename,' ',Scanner.MainFilename]); //debugln(['TSourceEditorSharedValues.ConnectScanner ',Filename,' ',Scanner.MainFilename]);
FLinkScanners.Add(Scanner); FLinkScanners.Add(Scanner);
Scanner.DemandStoreDirectives; Scanner.DemandStoreDirectives;
end; 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; function TSourceEditorSharedValues.Filename: string;
begin begin
Result:=FCodeBuffer.Filename; Result:=FCodeBuffer.Filename;