SynEdit: Pascal Highlighter - only store property TypeHelpers if user changed, issue #0036969 . / fix incorrectly overwriting NestedComments when Loading.

git-svn-id: trunk@63122 -
This commit is contained in:
martin 2020-05-05 18:16:58 +00:00
parent 2c7d4c9e91
commit 8f790c9d9e

View File

@ -492,6 +492,7 @@ type
procedure SpaceProc; procedure SpaceProc;
procedure StringProc; procedure StringProc;
procedure SymbolProc; procedure SymbolProc;
function TypeHelpersIsStored: Boolean;
procedure UnknownProc; procedure UnknownProc;
procedure SetD4syntax(const Value: boolean); procedure SetD4syntax(const Value: boolean);
// Divider // Divider
@ -558,6 +559,8 @@ type
public public
constructor Create(AOwner: TComponent); override; constructor Create(AOwner: TComponent); override;
destructor Destroy; override; destructor Destroy; override;
procedure Loaded; override;
procedure Loading; override;
function GetDefaultAttribute(Index: integer): TSynHighlighterAttributes; function GetDefaultAttribute(Index: integer): TSynHighlighterAttributes;
override; override;
function GetEol: Boolean; override; function GetEol: Boolean; override;
@ -620,7 +623,7 @@ type
write fDirectiveAttri; write fDirectiveAttri;
property CompilerMode: TPascalCompilerMode read FCompilerMode write SetCompilerMode; property CompilerMode: TPascalCompilerMode read FCompilerMode write SetCompilerMode;
property NestedComments: boolean read FNestedComments write SetNestedComments; property NestedComments: boolean read FNestedComments write SetNestedComments;
property TypeHelpers: boolean read FTypeHelpers write FTypeHelpers; property TypeHelpers: boolean read FTypeHelpers write FTypeHelpers stored TypeHelpersIsStored;
property D4syntax: boolean read FD4syntax write SetD4syntax default true; property D4syntax: boolean read FD4syntax write SetD4syntax default true;
property ExtendedKeywordsMode: Boolean property ExtendedKeywordsMode: Boolean
read FExtendedKeywordsMode write SetExtendedKeywordsMode default False; read FExtendedKeywordsMode write SetExtendedKeywordsMode default False;
@ -901,8 +904,10 @@ end;
procedure TSynPasSyn.SetCompilerMode(const AValue: TPascalCompilerMode); procedure TSynPasSyn.SetCompilerMode(const AValue: TPascalCompilerMode);
begin begin
NestedComments:=AValue in [pcmFPC,pcmObjFPC]; // NestedComments has to be reset even if CompilerMode doesn't change if not(csLoading in ComponentState) then begin
TypeHelpers := AValue in [pcmDelphi]; NestedComments:=AValue in [pcmFPC,pcmObjFPC]; // NestedComments has to be reset even if CompilerMode doesn't change
TypeHelpers := AValue in [pcmDelphi]; // keep in sync with TypeHelpersIsStored / Loaded
end;
if FCompilerMode=AValue then exit; if FCompilerMode=AValue then exit;
FCompilerMode:=AValue; FCompilerMode:=AValue;
PasCodeFoldRange.Mode:=FCompilerMode; PasCodeFoldRange.Mode:=FCompilerMode;
@ -2485,6 +2490,19 @@ begin
inherited Destroy; inherited Destroy;
end; end;
procedure TSynPasSyn.Loaded;
begin
if Byte(FTypeHelpers) = 99 then
FTypeHelpers := FCompilerMode in [pcmDelphi];
inherited Loaded;
end;
procedure TSynPasSyn.Loading;
begin
Byte(FTypeHelpers) := 99; // Help detecting, if changed while loading.
inherited Loading;
end;
procedure TSynPasSyn.SetLine(const NewValue: string; LineNumber:Integer); procedure TSynPasSyn.SetLine(const NewValue: string; LineNumber:Integer);
begin begin
//DebugLn(['TSynPasSyn.SetLine START LineNumber=',LineNumber,' Line="',NewValue,'"']); //DebugLn(['TSynPasSyn.SetLine START LineNumber=',LineNumber,' Line="',NewValue,'"']);
@ -3175,6 +3193,11 @@ begin
fTokenID := tkSymbol; fTokenID := tkSymbol;
end; end;
function TSynPasSyn.TypeHelpersIsStored: Boolean;
begin
Result := FTypeHelpers = (FCompilerMode in [pcmDelphi]);
end;
procedure TSynPasSyn.UnknownProc; procedure TSynPasSyn.UnknownProc;
begin begin
inc(Run); inc(Run);