SynEdit: update Highlighters to use new notifications.

This commit is contained in:
Martin 2025-12-17 22:10:55 +01:00
parent d43ddf50f4
commit 7086675420
6 changed files with 46 additions and 47 deletions

View File

@ -2054,8 +2054,7 @@ end;
procedure TSynCustomFoldHighlighter.DoFoldConfigChanged(Sender: TObject);
begin
FAttributeChangeNeedScan := True;
DefHighlightChange(self);
SendRescanNeededNotification;
end;
procedure TSynCustomFoldHighlighter.ClearFoldNodeList;

View File

@ -2394,8 +2394,7 @@ procedure TSynHTMLSyn.SetMode(const AValue: TSynHTMLSynMode);
begin
if FMode = AValue then exit;
FMode := AValue;
FAttributeChangeNeedScan := True;
DefHighlightChange(self);
SendRescanNeededNotification;
end;
procedure TSynHTMLSyn.BraceCloseProc;

View File

@ -255,8 +255,7 @@ begin
if FCommentTypes = AValue then Exit;
FCommentTypes := AValue;
MakeMethodTables;
FAttributeChangeNeedScan := True;
DefHighlightChange(self);
SendRescanNeededNotification;
end;
procedure TSynIniSyn.SetAttribute(AnIndex: TSynPasAttribute; AValue: TSynHighlighterAttributes);

View File

@ -1744,8 +1744,10 @@ var
i: Integer;
begin
if Schemes = nil then exit;
FAttributeChangeNeedScan := (Item <> nil) and (TSynHighlighterMultiScheme(Item).NeedHLScan);
DefHighlightChange( Item );
if (Item <> nil) and (TSynHighlighterMultiScheme(Item).NeedHLScan) then begin
SendAttributeChangeNotification;
SendRescanNeededNotification;
end;
for i := 0 to AttachedLines.Count - 1 do
KnownRanges[i].InvalidateAll;
end;

View File

@ -1604,21 +1604,21 @@ procedure TSynPasSyn.SetGenericConstraintAttributeMode(AValue: TSynPasTypeAttrib
begin
if FGenericConstraintAttributeMode = AValue then Exit;
FGenericConstraintAttributeMode := AValue;
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetProcNameImplAttributeMode(AValue: TProcNameAttrbuteModes);
begin
if FProcNameImplAttributeMode = AValue then Exit;
FProcNameImplAttributeMode := AValue;
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetProcNameIntfAttributeMode(AValue: TProcNameAttrbuteModes);
begin
if FProcNameIntfAttributeMode = AValue then Exit;
FProcNameIntfAttributeMode := AValue;
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetModeSwitches(AValue: TPascalCompilerModeSwitches);
@ -1633,32 +1633,28 @@ procedure TSynPasSyn.SetDeclaredTypeAttributeMode(AValue: TSynPasTypeAttributeMo
begin
if FDeclaredTypeAttributeMode = AValue then Exit;
FDeclaredTypeAttributeMode := AValue;
FAttributeChangeNeedScan := True;
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetDeclaredValueAttributeMachesStringNum(AValue: Boolean);
begin
if FDeclaredValueAttributeMachesStringNum = AValue then Exit;
FDeclaredValueAttributeMachesStringNum := AValue;
FAttributeChangeNeedScan := True;
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetDeclaredValueAttributeMode(AValue: TSynPasTypeAttributeMode);
begin
if FDeclaredValueAttributeMode = AValue then Exit;
FDeclaredValueAttributeMode := AValue;
FAttributeChangeNeedScan := True;
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetExtendedKeywordsMode(const AValue: Boolean);
begin
if FExtendedKeywordsMode = AValue then exit;
FExtendedKeywordsMode := AValue;
FAttributeChangeNeedScan := True;
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetNestedBracketAttribs(AValue: TLazEditTextAttributeModifierCollection);
@ -1671,29 +1667,27 @@ procedure TSynPasSyn.SetSpecializeParamAttributeMode(AValue: TSynPasTypeAttribut
begin
if FSpecializeParamAttributeMode = AValue then Exit;
FSpecializeParamAttributeMode := AValue;
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetStringKeywordMode(const AValue: TSynPasStringMode);
begin
if FStringKeywordMode = AValue then exit;
FStringKeywordMode := AValue;
FAttributeChangeNeedScan := True;
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetStringMultilineMode(const AValue: TSynPasMultilineStringModes);
begin
if FStringMultilineMode=AValue then Exit;
FStringMultilineMode:=AValue;
FAttributeChangeNeedScan := True;
if spmsmDoubleQuote in FStringMultilineMode then
FPasAttributes[attribString].UpdateSupportedFeatures([lafPastEOL], [])
else
FPasAttributes[attribString].UpdateSupportedFeatures([], [lafPastEOL]);
DefHighlightChange(self);
SendAttributeChangeNotification;
end;
procedure TSynPasSyn.SetNestedComments(AValue: boolean);
@ -8039,6 +8033,7 @@ end;
procedure TSynPasSyn.SetD4syntax(const Value: boolean);
begin
FD4syntax := Value;
SendRescanNeededNotification;
end;
{ TSynFreePascalSyn }

View File

@ -6735,30 +6735,35 @@ end;
procedure TEditorOptions.GetHighlighterSettings(Syn: TSrcIDEHighlighter);
// read highlight settings from config file
begin
ReadHighlighterSettings(Syn, '');
ReadHighlighterFoldSettings(Syn);
ReadHighlighterDivDrawSettings(Syn);
if Syn is TSynPasSyn then begin
TSynPasSyn(Syn).ExtendedKeywordsMode := PasExtendedKeywordsMode;
TSynPasSyn(Syn).StringKeywordMode := PasStringKeywordMode;
TSynPasSyn(Syn).CaseLabelAttriMatchesElseOtherwise := FCaseLabelAttriMatchesElseOtherwise;
TSynPasSyn(Syn).DeclaredTypeAttributeMode := FDeclaredTypeAttributeMode;
TSynPasSyn(Syn).DeclaredValueAttributeMode := FDeclaredValueAttributeMode;
TSynPasSyn(Syn).DeclaredValueAttributeMachesStringNum := FDeclaredValueAttributeMachesStringNum;
TSynPasSyn(Syn).GenericConstraintAttributeMode := FGenericParamAttrMode;
TSynPasSyn(Syn).SpecializeParamAttributeMode := FGenericParamAttrMode;
case FProcHeaderNameDeclMode of
pnmGenericOnly: TSynPasSyn(Syn).ProcNameIntfAttributeMode := [pamDots];
pnmGenericAndProcName: TSynPasSyn(Syn).ProcNameIntfAttributeMode := [pamDots, pamGenParamKeyword, pamGenParamSym, pamGenParamSeparator];
pnmProcNameOnly: TSynPasSyn(Syn).ProcNameIntfAttributeMode := [pamSupressGenParamAttr, pamDots, pamGenParamKeyword, pamGenParamSym, pamGenParamSeparator];
pnmPlain: TSynPasSyn(Syn).ProcNameIntfAttributeMode := [pamSupressGenParamAttr, pamDots];
end;
case FProcHeaderNameImplMode of
pnmGenericOnly: TSynPasSyn(Syn).ProcNameImplAttributeMode := [pamDots];
pnmGenericAndProcName: TSynPasSyn(Syn).ProcNameImplAttributeMode := [pamDots, pamGenParamKeyword, pamGenParamSym, pamGenParamSeparator];
pnmProcNameOnly: TSynPasSyn(Syn).ProcNameImplAttributeMode := [pamSupressGenParamAttr, pamDots, pamGenParamKeyword, pamGenParamSym, pamGenParamSeparator];
pnmPlain: TSynPasSyn(Syn).ProcNameImplAttributeMode := [pamSupressGenParamAttr, pamDots];
syn.BeginUpdate;
try
ReadHighlighterSettings(Syn, '');
ReadHighlighterFoldSettings(Syn);
ReadHighlighterDivDrawSettings(Syn);
if Syn is TSynPasSyn then begin
TSynPasSyn(Syn).ExtendedKeywordsMode := PasExtendedKeywordsMode;
TSynPasSyn(Syn).StringKeywordMode := PasStringKeywordMode;
TSynPasSyn(Syn).CaseLabelAttriMatchesElseOtherwise := FCaseLabelAttriMatchesElseOtherwise;
TSynPasSyn(Syn).DeclaredTypeAttributeMode := FDeclaredTypeAttributeMode;
TSynPasSyn(Syn).DeclaredValueAttributeMode := FDeclaredValueAttributeMode;
TSynPasSyn(Syn).DeclaredValueAttributeMachesStringNum := FDeclaredValueAttributeMachesStringNum;
TSynPasSyn(Syn).GenericConstraintAttributeMode := FGenericParamAttrMode;
TSynPasSyn(Syn).SpecializeParamAttributeMode := FGenericParamAttrMode;
case FProcHeaderNameDeclMode of
pnmGenericOnly: TSynPasSyn(Syn).ProcNameIntfAttributeMode := [pamDots];
pnmGenericAndProcName: TSynPasSyn(Syn).ProcNameIntfAttributeMode := [pamDots, pamGenParamKeyword, pamGenParamSym, pamGenParamSeparator];
pnmProcNameOnly: TSynPasSyn(Syn).ProcNameIntfAttributeMode := [pamSupressGenParamAttr, pamDots, pamGenParamKeyword, pamGenParamSym, pamGenParamSeparator];
pnmPlain: TSynPasSyn(Syn).ProcNameIntfAttributeMode := [pamSupressGenParamAttr, pamDots];
end;
case FProcHeaderNameImplMode of
pnmGenericOnly: TSynPasSyn(Syn).ProcNameImplAttributeMode := [pamDots];
pnmGenericAndProcName: TSynPasSyn(Syn).ProcNameImplAttributeMode := [pamDots, pamGenParamKeyword, pamGenParamSym, pamGenParamSeparator];
pnmProcNameOnly: TSynPasSyn(Syn).ProcNameImplAttributeMode := [pamSupressGenParamAttr, pamDots, pamGenParamKeyword, pamGenParamSym, pamGenParamSeparator];
pnmPlain: TSynPasSyn(Syn).ProcNameImplAttributeMode := [pamSupressGenParamAttr, pamDots];
end;
end;
finally
Syn.EndUpdate;
end;
end;