IDE: Simplify type definitions in EditorOptions. Also satisfies -Sy checks.

This commit is contained in:
Juha 2023-05-21 20:18:40 +03:00
parent fa66089578
commit 7cb4c0928a
4 changed files with 29 additions and 35 deletions

View File

@ -407,8 +407,7 @@ type
BoolOpt: Boolean; // Checkbox only
MaxLevel: Integer;
end;
TEditorOptionsDividerInfoList = Array [0..999] of TEditorOptionsDividerInfo;
PEditorOptionsDividerInfoList = ^TEditorOptionsDividerInfoList;
PEditorOptionsDividerInfoList = ^TEditorOptionsDividerInfo;
TEditorOptionsDividerRecord = record
Count: Integer;
@ -437,10 +436,8 @@ const
EditorOptionsDividerDefaults: array[TLazSyntaxHighlighter] of TEditorOptionsDividerRecord =
( (Count: 0; Info: nil), // none
(Count: 0; Info: nil), // text
{$T-} // Fix compilation with -Sy. Type mismatch here. PEditorOptionsDividerInfoList <> TEditorOptionsDividerInfo
(Count: 9; Info: @EditorOptionsDividerInfoPas[0]), // Freepas
(Count: 9; Info: @EditorOptionsDividerInfoPas[0]), // pas
{$T+}
(Count: 0; Info: nil), // lfm
(Count: 0; Info: nil), // xml
(Count: 0; Info: nil), // html
@ -468,8 +465,7 @@ type
Index: Integer; // FHighlighter.FoldConf[index]
Enabled: Boolean;
end;
TEditorOptionsFoldInfoList = Array [0..999] of TEditorOptionsFoldInfo;
PEditorOptionsFoldInfoList = ^TEditorOptionsFoldInfoList;
PEditorOptionsFoldInfoList = ^TEditorOptionsFoldInfo;
TEditorOptionsFoldRecord = record
Count: Integer;
@ -643,7 +639,6 @@ const
)
);
{$T-} // Fix compilation with -Sy. Type mismatch here.
(* When adding new entries, ensure that resourcestrings are re-assigned in InitLocale *)
EditorOptionsFoldDefaults: array[TLazSyntaxHighlighter] of TEditorOptionsFoldRecord =
( (Count: 0; HasMarkup: False; Info: nil), // none
@ -668,7 +663,6 @@ const
(Count: 0; HasMarkup: False; Info: nil), // PO
(Count: 0; HasMarkup: False; Info: nil) // Pike
);
{$T+}
const
EditorOptsFormatVersion = 13;
@ -5580,7 +5574,7 @@ begin
ValidLang := StrToValidXMLName(Syn.LanguageName);
FoldRec := EditorOptionsFoldDefaults[HighlighterList[h].TheType];
for i := 0 to FoldRec.Count - 1 do begin
FoldInf := FoldRec.Info^[i];
FoldInf := FoldRec.Info[i];
idx := FoldInf.Index;
Path := 'EditorOptions/FoldConfig/Lang' + ValidLang + '/Type' + FoldInf.Xml + '/' ;
// try reading the old config first
@ -5625,8 +5619,8 @@ begin
if (syn is TSynCustomFoldHighlighter) then begin
TheFoldInfo := EditorOptionsFoldDefaults[HighlighterList[h].TheType];
for i := 0 to TheFoldInfo.Count - 1 do
with TSynCustomFoldHighlighter(Syn).FoldConfig[TheFoldInfo.Info^[i].Index] do
Enabled := TheFoldInfo.Info^[i].Enabled;
with TSynCustomFoldHighlighter(Syn).FoldConfig[TheFoldInfo.Info[i].Index] do
Enabled := TheFoldInfo.Info[i].Enabled;
end;
end;
@ -5650,13 +5644,13 @@ begin
if (syn is TSynCustomFoldHighlighter) then begin
TheFoldInfo := EditorOptionsFoldDefaults[HighlighterList[h].TheType];
for i := 0 to TheFoldInfo.Count - 1 do begin
ConfName := TheFoldInfo.Info^[i].Xml;
ConfName := TheFoldInfo.Info[i].Xml;
Path := 'EditorOptions/FoldConfig/Lang' +
StrToValidXMLName(Syn.LanguageName) + '/Type' + ConfName + '/' ;
XMLConfig.DeletePath(Path + 'Enabled/');
XMLConfig.WriteObject(Path + 'Settings/',
TSynCustomFoldHighlighter(Syn).FoldConfig[TheFoldInfo.Info^[i].Index],
TSynCustomFoldHighlighter(DefSyn).FoldConfig[TheFoldInfo.Info^[i].Index]);
TSynCustomFoldHighlighter(Syn).FoldConfig[TheFoldInfo.Info[i].Index],
TSynCustomFoldHighlighter(DefSyn).FoldConfig[TheFoldInfo.Info[i].Index]);
end;
end;
@ -5684,7 +5678,7 @@ begin
// read settings, that are different from the defaults
for i := 0 to TheInfo.Count - 1 do begin
Conf := Syn.DividerDrawConfig[i];
ConfName := TheInfo.Info^[i].Xml;
ConfName := TheInfo.Info[i].Xml;
Path := 'EditorOptions/DividerDraw/Lang' + Syn.LanguageName + '/Type' + ConfName + '/' ;
Conf.MaxDrawDepth := XMLConfig.GetValue(Path + 'MaxDepth/Value', Conf.MaxDrawDepth);
Conf.TopColor := XMLConfig.GetValue(Path + 'TopColor/Value', Conf.TopColor);
@ -5703,7 +5697,7 @@ begin
if h < 0 then exit;
TheInfo := EditorOptionsDividerDefaults[HighlighterList[h].TheType];
for i := 0 to TheInfo.Count - 1 do begin
Syn.DividerDrawConfig[i].MaxDrawDepth := TheInfo.Info^[i].MaxLeveL;
Syn.DividerDrawConfig[i].MaxDrawDepth := TheInfo.Info[i].MaxLeveL;
Syn.DividerDrawConfig[i].TopColor := clDefault;
Syn.DividerDrawConfig[i].NestColor := clDefault;
end;
@ -5730,7 +5724,7 @@ begin
for i := 0 to TheInfo.Count - 1 do begin
Conf := Syn.DividerDrawConfig[i];
DefConf := DefSyn.DividerDrawConfig[i]; // default value
ConfName := TheInfo.Info^[i].Xml;
ConfName := TheInfo.Info[i].Xml;
Path := 'EditorOptions/DividerDraw/Lang' +
StrToValidXMLName(Syn.LanguageName) + '/Type' + ConfName + '/' ;
XMLConfig.SetDeleteValue(Path + 'MaxDepth/Value', Conf.MaxDrawDepth,

View File

@ -117,11 +117,11 @@ begin
Hl := TSynCustomFoldHighlighter(FCurHighlighter);
for i := 0 to FCurFoldInfo.Count - 1 do begin
if Hl.FoldConfig[FCurFoldInfo.Info^[i].Index].SupportedModes * [fmFold, fmHide] <> [] then begin
j := FoldConfigCheckListBox.Items.Add(FCurFoldInfo.Info^[i].Name);
if Hl.FoldConfig[FCurFoldInfo.Info[i].Index].SupportedModes * [fmFold, fmHide] <> [] then begin
j := FoldConfigCheckListBox.Items.Add(FCurFoldInfo.Info[i].Name);
FoldConfigCheckListBox.Checked[j] :=
Hl.FoldConfig[FCurFoldInfo.Info^[i].Index].Enabled and
(Hl.FoldConfig[FCurFoldInfo.Info^[i].Index].Modes * [fmFold, fmHide] <> []);
Hl.FoldConfig[FCurFoldInfo.Info[i].Index].Enabled and
(Hl.FoldConfig[FCurFoldInfo.Info[i].Index].Modes * [fmFold, fmHide] <> []);
FoldConfigCheckListBox.Items.Objects[j] := TObject({%H-}Pointer(PtrUInt(i)));
end;
end;
@ -137,8 +137,8 @@ begin
Hl := TSynCustomFoldHighlighter(FCurHighlighter);
j := 0;
for i := 0 to FCurFoldInfo.Count - 1 do begin
if Hl.FoldConfig[FCurFoldInfo.Info^[i].Index].SupportedModes * [fmFold, fmHide] <> [] then begin
Hl.FoldConfig[FCurFoldInfo.Info^[i].Index].Enabled
if Hl.FoldConfig[FCurFoldInfo.Info[i].Index].SupportedModes * [fmFold, fmHide] <> [] then begin
Hl.FoldConfig[FCurFoldInfo.Info[i].Index].Enabled
:= FoldConfigCheckListBox.Checked[j];
inc(j);
end;
@ -163,7 +163,7 @@ begin
AvailModes := [];
Modes := [fmFold];
if i >= 0 then begin
i := FCurFoldInfo.Info^[i].Index;
i := FCurFoldInfo.Info[i].Index;
AvailModes := Hl.FoldConfig[i].SupportedModes * [fmFold, fmHide];
Modes := Hl.FoldConfig[i].Modes * [fmFold, fmHide];
end;
@ -191,7 +191,7 @@ begin
i := FoldConfigCheckListBox.ItemIndex;
if i < 0 then exit;
i := PtrUInt(FoldConfigCheckListBox.Items.Objects[i]);
i := FCurFoldInfo.Info^[i].Index;
i := FCurFoldInfo.Info[i].Index;
Hl := TSynCustomFoldHighlighter(FCurHighlighter);
Modes := [fmFold];
if chkHide.Checked then Modes := [fmHide];

View File

@ -116,7 +116,7 @@ begin
DividerConfigListBox.Clear;
for i := 0 to FCurDivInfo.Count - 1 do begin
DividerConfigListBox.Items.add(FCurDivInfo.Info^[i].Name);
DividerConfigListBox.Items.add(FCurDivInfo.Info[i].Name);
DividerConfigListBox.Checked[i] :=
FCurHighlighter.DividerDrawConfig[i].MaxDrawDepth > 0;
end;
@ -140,8 +140,8 @@ begin
for i := 0 to FCurDivInfo.Count - 1 do begin
if DividerConfigListBox.Checked[i] then begin
if FCurHighlighter.DividerDrawConfig[i].MaxDrawDepth = 0 then begin
if FCurDivInfo.Info^[i].MaxLevel > 0 then
FCurHighlighter.DividerDrawConfig[i].MaxDrawDepth := FCurDivInfo.Info^[i].MaxLevel
if FCurDivInfo.Info[i].MaxLevel > 0 then
FCurHighlighter.DividerDrawConfig[i].MaxDrawDepth := FCurDivInfo.Info[i].MaxLevel
else
FCurHighlighter.DividerDrawConfig[i].MaxDrawDepth := 1;
end;
@ -156,7 +156,7 @@ begin
NewDiv := FCurHighlighter.DividerDrawConfig[i];
FCurDividerConf := nil;
b := FCurDivInfo.Info^[i].BoolOpt;
b := FCurDivInfo.Info[i].BoolOpt;
DividerSpinPanel.Visible := not b;
NestLvlPanel.Visible := not b;
DividerSpinEdit.Value := NewDiv.MaxDrawDepth;

View File

@ -193,7 +193,7 @@ begin
i := chkKWGroups.ItemIndex;
if i < 0 then exit;
i := PtrUInt(chkKWGroups.Items.Objects[i]);
i := FCurFoldInfo.Info^[i].Index;
i := FCurFoldInfo.Info[i].Index;
Hl := TSynCustomFoldHighlighter(FCurHighlighter);
Modes := [fmMarkup];
@ -247,7 +247,7 @@ begin
j := 0;
for i1 := 0 to chkKWGroups.Count - 1 do begin
i := PtrUInt(chkKWGroups.Items.Objects[i1]);
idx := FCurFoldInfo.Info^[i].Index;
idx := FCurFoldInfo.Info[i].Index;
if Hl.FoldConfig[idx].SupportedModes * [fmMarkup, fmOutline] <> [] then begin
if not chkKWGroups.Checked[j] then
Hl.FoldConfig[idx].Modes := Hl.FoldConfig[idx].Modes - FMask
@ -313,10 +313,10 @@ begin
if not FUseMarkupWordBracket then FMask := FMask - [fmMarkup];
if not FUseMarkupOutline then FMask := FMask - [fmOutline];
for i := 0 to FCurFoldInfo.Count - 1 do begin
if Hl.FoldConfig[FCurFoldInfo.Info^[i].Index].SupportedModes * FMask <> [] then begin
j := chkKWGroups.Items.Add(FCurFoldInfo.Info^[i].Name);
if Hl.FoldConfig[FCurFoldInfo.Info[i].Index].SupportedModes * FMask <> [] then begin
j := chkKWGroups.Items.Add(FCurFoldInfo.Info[i].Name);
chkKWGroups.Checked[j] :=
(Hl.FoldConfig[FCurFoldInfo.Info^[i].Index].Modes * FMask <> []);
(Hl.FoldConfig[FCurFoldInfo.Info[i].Index].Modes * FMask <> []);
chkKWGroups.Items.Objects[j] := TObject({%H-}Pointer(PtrUInt(i)));
end;
end;
@ -373,7 +373,7 @@ begin
i := PtrUInt(chkKWGroups.Items.Objects[i]);
if i >= 0 then begin
i := FCurFoldInfo.Info^[i].Index;
i := FCurFoldInfo.Info[i].Index;
FMask := [fmMarkup, fmOutline];
if not FUseMarkupWordBracket then FMask := FMask - [fmMarkup];
if not FUseMarkupOutline then FMask := FMask - [fmOutline];