mirror of https://gitlab.com/basile.b/dexed.git
added syntactic errors to symbol list
+ option to auto expand warn/err list
This commit is contained in:
parent
11326abf36
commit
2a6b8f757d
|
@ -11,10 +11,12 @@ void main(string[] args)
|
|||
if (!fname.exists) return;
|
||||
|
||||
// load and parse the file
|
||||
auto config = LexerConfig(fname, StringBehavior.source, WhitespaceBehavior.include);
|
||||
auto config = LexerConfig(fname, StringBehavior.source, WhitespaceBehavior.skip);
|
||||
auto source = cast(ubyte[]) read(fname, size_t.max);
|
||||
auto scache = StringCache(StringCache.defaultBucketCount);
|
||||
auto ast = parseModule(getTokensForParser(source, config, &scache), fname);
|
||||
|
||||
|
||||
auto ast = parseModule(getTokensForParser(source, config, &scache), fname, null, &(SymbolListBuilder.astError));
|
||||
|
||||
// visit each root member
|
||||
auto slb = construct!SymbolListBuilder;
|
||||
|
@ -87,17 +89,19 @@ if (is(T == class) || (isPointer!T && is(PointerTarget!T == struct)))
|
|||
// Serializable Symbol --------------------------------------------------------+
|
||||
enum SymbolType
|
||||
{
|
||||
_alias, // X
|
||||
_class, // X
|
||||
_enum, // X
|
||||
_function, // X
|
||||
_interface, // X
|
||||
_import, // X
|
||||
_mixin, // X (template decl)
|
||||
_struct, // X
|
||||
_template, // X
|
||||
_union, // X
|
||||
_variable // X
|
||||
_alias,
|
||||
_class,
|
||||
_enum,
|
||||
_function,
|
||||
_interface,
|
||||
_import,
|
||||
_mixin, // (template decl)
|
||||
_struct,
|
||||
_template,
|
||||
_union,
|
||||
_variable,
|
||||
_error,
|
||||
_warning
|
||||
}
|
||||
|
||||
struct Symbol
|
||||
|
@ -137,6 +141,7 @@ class SymbolListBuilder : ASTVisitor
|
|||
{
|
||||
Symbol * root;
|
||||
Symbol * parent;
|
||||
static Symbol * [] illFormed;
|
||||
size_t count;
|
||||
|
||||
alias visit = ASTVisitor.visit;
|
||||
|
@ -144,6 +149,8 @@ class SymbolListBuilder : ASTVisitor
|
|||
this()
|
||||
{
|
||||
root = construct!Symbol;
|
||||
if(illFormed.length)
|
||||
root.subs ~= illFormed;
|
||||
resetRoot;
|
||||
}
|
||||
|
||||
|
@ -152,6 +159,16 @@ class SymbolListBuilder : ASTVisitor
|
|||
root.destruct;
|
||||
}
|
||||
|
||||
static void astError(string fname, size_t line, size_t col, string msg, bool isErr)
|
||||
{
|
||||
Symbol * newSym = construct!Symbol;
|
||||
newSym.col = col;
|
||||
newSym.line = line;
|
||||
newSym.name = msg;
|
||||
isErr ? newSym.type = SymbolType._error : newSym.type = SymbolType._warning;
|
||||
illFormed ~= newSym;
|
||||
}
|
||||
|
||||
final void resetRoot(){parent = root;}
|
||||
|
||||
final string serialize()
|
||||
|
|
|
@ -36,7 +36,7 @@ inherited CESymbolListWidget: TCESymbolListWidget
|
|||
OnKeyPress = TreeKeyPress
|
||||
Options = [tvoAutoItemHeight, tvoKeepCollapsedNodes, tvoReadOnly, tvoRightClickSelect, tvoShowButtons, tvoShowLines, tvoShowRoot, tvoToolTips, tvoThemedDraw]
|
||||
Items.Data = {
|
||||
F9FFFFFF02000B000000000000000000000000000000FFFFFFFF000000000000
|
||||
F9FFFFFF02000D000000000000000000000000000000FFFFFFFF000000000000
|
||||
00000005000000416C696173010000000100000001000000FFFFFFFF00000000
|
||||
000000000005000000436C617373020000000200000002000000FFFFFFFF0000
|
||||
0000000000000004000000456E756D030000000300000003000000FFFFFFFF00
|
||||
|
@ -48,7 +48,9 @@ inherited CESymbolListWidget: TCESymbolListWidget
|
|||
6374080000000800000008000000FFFFFFFF0000000000000000000800000054
|
||||
656D706C617465000000000000000000000000FFFFFFFF000000000000000000
|
||||
05000000556E696F6E010000000100000001000000FFFFFFFF00000000000000
|
||||
0000080000005661726961626C65
|
||||
0000080000005661726961626C65090000000900000009000000FFFFFFFF0000
|
||||
00000000000000080000005761726E696E67730A0000000A0000000A000000FF
|
||||
FFFFFF000000000000000000060000004572726F7273
|
||||
}
|
||||
TreeLineColor = 14671839
|
||||
TreeLinePenStyle = psSolid
|
||||
|
@ -106,7 +108,7 @@ inherited CESymbolListWidget: TCESymbolListWidget
|
|||
left = 152
|
||||
top = 48
|
||||
Bitmap = {
|
||||
4C69090000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
4C690B0000001000000010000000FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
|
@ -394,6 +396,70 @@ inherited CESymbolListWidget: TCESymbolListWidget
|
|||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF003B85CC003B85CC003B85CC003B85CC003B85
|
||||
CC003B85CC003983CA213384CDFF3384CDFF3983CA213B85CC003B85CC003B85
|
||||
CC003B85CC003B85CC003B85CC003B85CC003B85CC003B85CC003B85CC003B85
|
||||
CC003983CB00337EC7CF84C3F1FF84C3F1FF337EC7CF3983CB003B85CC003B85
|
||||
CC003B85CC003B85CC003B85CC003B85CC003B85CC003B85CC003B85CC003A84
|
||||
CB003580CA6D5398D7FFC1F0FFFFC1F0FFFF5398D7FF3580CA6D3A84CB003B85
|
||||
CC003B85CC003B85CC003B85CC003B85CC003B85CC003B85CC003B85CC003882
|
||||
CA0A3A83CBFFB2E5FFFF9EC8DEFF9EC8DEFFB2E5FFFF3A83CBFF3882CA0A3B85
|
||||
CC003B85CC003B85CC003B85CC003B85CC003B85CC003B85CC003983CB00337E
|
||||
C8CF86BEEAFFA4ECFFFF6C5D53FF6C5D53FFA4ECFFFF86BEEAFF337EC8CF3983
|
||||
CB003B85CC003B85CC003B85CC003B85CC003B85CC003A84CC003580C9585797
|
||||
D5FFC6F3FFFF3ACAFFFF6C5B54FF6C5B54FF3ACAFFFFC6F3FFFF5797D5FF3580
|
||||
C9583A84CC003B85CC003B85CC003B85CC003B85CC003882CA003C82C9FFC1E8
|
||||
FDFF50CCFFFF27C5FFFF69554CFF69554CFF27C5FFFF50CCFFFFC1E8FDFF3C82
|
||||
C9FF3882CA003B85CC003B85CC003B85CC003983CB00337EC8BB90BFE6FF6FD7
|
||||
FFFF32C3FFFF34CBFFFF644B3FFF644B3FFF34CBFFFF32C3FFFF6FD7FFFF90BF
|
||||
E6FF337EC8BB3983CB003B85CC003A84CC003680C9445B97D4FF9EE8FFFF38C7
|
||||
FFFF3DC8FFFF3DCFFFFF4BBCE9FF4BBCE9FF3DCFFFFF3DC8FFFF38C7FFFF9EE8
|
||||
FFFF5B97D4FF3680C9443A84CC003982CB003F82C9FFA3E0FAFF40CFFFFF44CE
|
||||
FFFF46CFFFFF44D6FFFF775C50FF775C50FF44D6FFFF46CFFFFF44CEFFFF40CF
|
||||
FFFFA3E0FAFF3F82C9FF3982CB003880C9947AB8E4FF52DBFFFF4BD5FFFF4DD5
|
||||
FFFF4DD6FFFF4BDCFFFF67493FFF67493FFF4BDCFFFF4DD6FFFF4DD5FFFF4BD5
|
||||
FFFF52DBFFFF7AB8E4FF3880C9943B86CDFF55E3FFFF55E3FFFF56E1FFFF56E1
|
||||
FFFF56E2FFFF56E5FFFF55E9FFFF55E9FFFF56E5FFFF56E2FFFF56E1FFFF56E1
|
||||
FFFF55E3FFFF55E3FFFF3B86CDFF3A82CAFF397FC8FF387DC7FF387CC7FF397C
|
||||
C7FF397CC7FF387DC7FF387EC9FF387EC9FF387DC7FF397CC7FF397CC7FF387C
|
||||
C7FF387DC7FF397FC8FF3A82CAFF000000330000003300000033000000330000
|
||||
0033000000330000003300000033000000330000003300000033000000330000
|
||||
0033000000330000003300000033FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006A85
|
||||
FC236984FA7D6782F9DB6580F7F3637EF5F3617CF3DB5F7AF17D5D77EF23FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006984FA536882
|
||||
F9E66E83EEFF92A6F4FFA0B4F8FFA0B4F8FF91A6F3FF687DE9FF5973EBE65671
|
||||
E953FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF006883F9536681F8F48497
|
||||
F1FFA9BDFBFF8AA3F8FF6B89F6FF6B89F6FF89A2F8FFA8BCFAFF7F92ECFF526C
|
||||
E4F44F69E253FFFFFF00FFFFFF00FFFFFF006781F822657FF6E58397F0FFA9BD
|
||||
FBFF6382F5FF6382F5FFFFFFFFFFFFFFFFFF617EF3FF607CF3FFA6B9F9FF7B8D
|
||||
EAFF4A64DEE54862DB22FFFFFF00FFFFFF00637EF57E6C81ECFFA9BDFBFF6382
|
||||
F5FF6281F5FF6280F4FFFFFFFFFFFFFFFFFF5F7AF1FF5F78F0FF5D76EFFFA5B5
|
||||
F8FF5D70DDFF435DD77EFFFFFF00FFFFFF005F7AF1DB91A6F3FF88A1F8FF6280
|
||||
F4FF617EF3FF607CF3FFFFFFFFFFFFFFFFFF5D76EFFF5C73EEFF5B70ECFF8293
|
||||
F1FF8998ECFF3E58D2DBFFFFFF00FFFFFF005B76EDF6A1B6F8FF6784F4FF607C
|
||||
F3FF5F7AF1FF5F78F0FFFFFFFFFFFFFFFFFF5B70ECFF5A6EEBFF596CEAFF5F6F
|
||||
E9FF9BA8F1FF3A53CEF6FFFFFF00FFFFFF005771E9F6A0B3F7FF6580F2FF5F78
|
||||
F0FF5D76EFFF5C73EEFFD3D9FAFFFFFFFFFF596CEAFF5869E8FF5767E7FF5D6C
|
||||
E7FF99A5F1FF354FCAF6FFFFFF00FFFFFF00526DE5DB8E9FF0FF8499F4FF5C73
|
||||
EEFF5B70ECFF5A6EEBFF909DF1FFA6AFF3FF5767E7FF5665E6FF5562E5FF7D89
|
||||
EBFF8591E7FF314AC6DBFFFFFF00FFFFFF004E68E17E6073E0FFA4B3F7FF5A6E
|
||||
EBFF596CEAFF5869E8FFFFFFFFFFFFFFFFFF5562E5FF5461E3FF535FE2FF9FA9
|
||||
F2FF5061D1FF2D46C27EFFFFFF00FFFFFF004963DC224660DAE57888E6FFA3B0
|
||||
F5FF5767E7FF5665E6FF8992EDFF8892ECFF535FE2FF525DE1FF9FA9F2FF6F7D
|
||||
DDFF2B44C0E52942BE22FFFFFF00FFFFFF00FFFFFF00425CD5533F59D3F47584
|
||||
E3FFA1ACF4FF7F8BECFF5C67E4FF5B66E3FF7D87EAFF9FA8F1FF6F7CDDFF2943
|
||||
BFF42741BD53FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF003A54CF533852
|
||||
CCE65264D4FF8490E7FF95A0EEFF959FEDFF838EE5FF4C5DCEFF2841BDE6263F
|
||||
BB53FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00334D
|
||||
C823314BC67D2F48C4DB2C46C2F32A44C0F32842BEDB2640BC7D243EBA23FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFFFF00FFFF
|
||||
FF00FFFFFF00FFFFFF00FFFFFF00
|
||||
}
|
||||
end
|
||||
|
|
|
@ -23,7 +23,9 @@ type
|
|||
_struct,
|
||||
_template,
|
||||
_union,
|
||||
_variable
|
||||
_variable,
|
||||
_error,
|
||||
_warning
|
||||
);
|
||||
|
||||
TSymbolCollection = class;
|
||||
|
@ -78,6 +80,7 @@ type
|
|||
fShowChildCategories: boolean;
|
||||
fAutoRefreshDelay: Integer;
|
||||
fSmartFilter: boolean;
|
||||
fAutoExpandErrors: boolean;
|
||||
published
|
||||
property autoRefresh: boolean read fAutoRefresh write fAutoRefresh;
|
||||
property refreshOnChange: boolean read fRefreshOnChange write fRefreshOnChange;
|
||||
|
@ -85,6 +88,7 @@ type
|
|||
property showChildCategories: boolean read fShowChildCategories write fShowChildCategories;
|
||||
property autoRefreshDelay: Integer read fAutoRefreshDelay write fAutoRefreshDelay;
|
||||
property smartFilter: boolean read fSmartFilter write fSmartFilter;
|
||||
property autoExpandErrors: boolean read fAutoExpandErrors write fAutoExpandErrors;
|
||||
public
|
||||
constructor Create(AOwner: TComponent); override;
|
||||
procedure Assign(Source: TPersistent); override;
|
||||
|
@ -122,9 +126,11 @@ type
|
|||
fRefreshOnFocus: boolean;
|
||||
fShowChildCategories: boolean;
|
||||
fSmartFilter: boolean;
|
||||
fAutoExpandErrors: boolean;
|
||||
fToolOutput: TMemoryStream;
|
||||
ndAlias, ndClass, ndEnum, ndFunc, ndUni: TTreeNode;
|
||||
ndImp, ndIntf, ndMix, ndStruct, ndTmp, ndVar: TTreeNode;
|
||||
ndImp, ndIntf, ndMix, ndStruct, ndTmp: TTreeNode;
|
||||
ndVar, ndWarn, ndErr: TTreeNode;
|
||||
procedure TreeDblClick(Sender: TObject);
|
||||
procedure actRefreshExecute(Sender: TObject);
|
||||
procedure actAutoRefreshExecute(Sender: TObject);
|
||||
|
@ -218,11 +224,19 @@ end;
|
|||
procedure TSymbolList.LoadFromTool(str: TStream);
|
||||
var
|
||||
bin: TMemoryStream;
|
||||
dat: integer;
|
||||
begin
|
||||
bin := TMemoryStream.Create;
|
||||
try
|
||||
str.Position:=0;
|
||||
ObjectTextToBinary(str, bin);
|
||||
try
|
||||
ObjectTextToBinary(str, bin);
|
||||
except
|
||||
// if output is not fully read then
|
||||
// the tool process never terminates.
|
||||
while str.Read(dat, SizeOf(dat)) <> 0 do;
|
||||
exit;
|
||||
end;
|
||||
bin.Position:=0;
|
||||
bin.ReadComponent(self);
|
||||
finally
|
||||
|
@ -237,6 +251,7 @@ begin
|
|||
inherited;
|
||||
fRefreshOnFocus := true;
|
||||
fShowChildCategories := true;
|
||||
fAutoExpandErrors := true;
|
||||
fSmartFilter := true;
|
||||
fAutoRefreshDelay := 1500;
|
||||
end;
|
||||
|
@ -255,6 +270,7 @@ begin
|
|||
fAutoRefresh := widg.fAutoRefresh;
|
||||
fShowChildCategories := widg.fShowChildCategories;
|
||||
fSmartFilter := widg.fSmartFilter;
|
||||
fAutoExpandErrors := widg.fAutoExpandErrors;
|
||||
end
|
||||
else inherited;
|
||||
end;
|
||||
|
@ -273,6 +289,7 @@ begin
|
|||
widg.fAutoRefresh := fAutoRefresh;
|
||||
widg.fShowChildCategories := fShowChildCategories;
|
||||
widg.fSmartFilter := fSmartFilter;
|
||||
widg.fAutoExpandErrors := fAutoExpandErrors;
|
||||
//
|
||||
widg.fActAutoRefresh.Checked := fAutoRefresh;
|
||||
widg.fActRefreshOnChange.Checked:= fRefreshOnChange;
|
||||
|
@ -340,6 +357,8 @@ begin
|
|||
ndTmp := Tree.Items[8];
|
||||
ndUni := Tree.Items[9];
|
||||
ndVar := Tree.Items[10];
|
||||
ndWarn := Tree.Items[11];
|
||||
ndErr := Tree.Items[12];
|
||||
//
|
||||
png := TPortableNetworkGraphic.Create;
|
||||
try
|
||||
|
@ -526,6 +545,8 @@ begin
|
|||
ndTmp.Visible := ndTmp.Count > 0;
|
||||
ndUni.Visible := ndUni.Count > 0;
|
||||
ndVar.Visible := ndVar.Count > 0;
|
||||
ndWarn.Visible := ndWarn.Count > 0;
|
||||
ndErr.Visible := ndErr.Count > 0;
|
||||
end else
|
||||
begin
|
||||
ndAlias.Visible := true;
|
||||
|
@ -539,6 +560,8 @@ begin
|
|||
ndTmp.Visible := true;
|
||||
ndUni.Visible := true;
|
||||
ndVar.Visible := true;
|
||||
ndWarn.Visible := true;
|
||||
ndErr.Visible := true;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
@ -555,6 +578,8 @@ begin
|
|||
ndTmp.DeleteChildren;
|
||||
ndUni.DeleteChildren;
|
||||
ndVar.DeleteChildren;
|
||||
ndWarn.DeleteChildren;
|
||||
ndErr.DeleteChildren;
|
||||
end;
|
||||
|
||||
procedure TCESymbolListWidget.TreeFilterEdit1AfterFilter(Sender: TObject);
|
||||
|
@ -636,6 +661,13 @@ end;
|
|||
procedure TCESymbolListWidget.toolTerminated(sender: TObject);
|
||||
//
|
||||
function getCatNode(node: TTreeNode; stype: TSymbolType ): TTreeNode;
|
||||
//
|
||||
function newCat(const aCat: string): TTreeNode;
|
||||
begin
|
||||
result := node.FindNode(aCat);
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, aCat);
|
||||
end;
|
||||
//
|
||||
begin
|
||||
if node = nil then case stype of
|
||||
_alias : exit(ndAlias);
|
||||
|
@ -649,62 +681,22 @@ begin
|
|||
_template : exit(ndTmp);
|
||||
_union : exit(ndUni);
|
||||
_variable : exit(ndVar);
|
||||
_warning : exit(ndWarn);
|
||||
_error : exit(ndErr);
|
||||
end else case stype of
|
||||
_alias:
|
||||
begin
|
||||
result := node.FindNode('Alias');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Alias');
|
||||
end;
|
||||
_class:
|
||||
begin
|
||||
result := node.FindNode('Class');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Class');
|
||||
end;
|
||||
_enum:
|
||||
begin
|
||||
result := node.FindNode('Enum');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Enum');
|
||||
end;
|
||||
_function:
|
||||
begin
|
||||
result := node.FindNode('Function');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Function');
|
||||
end;
|
||||
_import:
|
||||
begin
|
||||
result := node.FindNode('Import');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Import');
|
||||
end;
|
||||
_interface:
|
||||
begin
|
||||
result := node.FindNode('Interface');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Interface');
|
||||
end;
|
||||
_mixin:
|
||||
begin
|
||||
result := node.FindNode('Mixin');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Mixin');
|
||||
end;
|
||||
_struct:
|
||||
begin
|
||||
result := node.FindNode('Struct');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Struct');
|
||||
end;
|
||||
_template:
|
||||
begin
|
||||
result := node.FindNode('Template');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Template');
|
||||
end;
|
||||
_union:
|
||||
begin
|
||||
result := node.FindNode('Union');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Union');
|
||||
end;
|
||||
_variable:
|
||||
begin
|
||||
result := node.FindNode('Variable');
|
||||
if result = nil then result := node.TreeNodes.AddChild(node, 'Variable');
|
||||
end;
|
||||
_alias: exit(newCat('Alias'));
|
||||
_class: exit(newCat('Class'));
|
||||
_enum: exit(newCat('Enum'));
|
||||
_function: exit(newCat('Function'));
|
||||
_import: exit(newCat('Import'));
|
||||
_interface: exit(newCat('Interface'));
|
||||
_mixin: exit(newCat('Mixin'));
|
||||
_struct: exit(newCat('Struct'));
|
||||
_template: exit(newCat('Template'));
|
||||
_union: exit(newCat('Union'));
|
||||
_variable: exit(newCat('Variable'));
|
||||
_warning: exit(ndWarn);
|
||||
_error: exit(ndErr);
|
||||
end;
|
||||
end;
|
||||
//
|
||||
|
@ -743,6 +735,13 @@ begin
|
|||
tree.BeginUpdate;
|
||||
for i := 0 to fSyms.symbols.Count-1 do
|
||||
symbolToTreeNode(nil, fSyms.symbols[i]);
|
||||
if fAutoExpandErrors then
|
||||
begin
|
||||
if ndWarn.Visible then
|
||||
ndWarn.Expand(true);
|
||||
if ndErr.Visible then
|
||||
ndErr.Expand(true);
|
||||
end;
|
||||
tree.EndUpdate;
|
||||
end;
|
||||
{$ENDREGION --------------------------------------------------------------------}
|
||||
|
|
Loading…
Reference in New Issue