@@ -17,28 +17,25 @@ class XmlIntelliSenseProvider : IIntelliSenseProvider
17
17
{
18
18
public class XmlRegistrationInfo
19
19
{
20
- string _fileName ; // Might be .xml file or Workbook path. Use only if _xmlIntelliSense is null.
21
- string _xmlIntelliSense ; // Might be null
20
+ string _fileName ; // Might be .xml file or Workbook path. Use only if _xmlIntelliSenseSource is null.
21
+ Func < string > _xmlIntelliSenseSource ; // Might be null
22
22
XmlIntelliSense _intelliSense ; // Might be null - lazy parsed
23
23
string _path ; // Directory of file, used to expand HelpTopic
24
24
25
- public XmlRegistrationInfo ( string fileName , string xmlIntelliSense )
25
+ public XmlRegistrationInfo ( string fileName , Func < string > xmlIntelliSenseSource )
26
26
{
27
27
_fileName = fileName ;
28
- _xmlIntelliSense = xmlIntelliSense ;
28
+ _xmlIntelliSenseSource = xmlIntelliSenseSource ;
29
29
_path = Path . GetDirectoryName ( fileName ) ;
30
30
}
31
31
32
32
// Called in a macro context
33
33
public void Refresh ( )
34
34
{
35
- if ( _intelliSense != null )
36
- return ; // Already done
37
-
38
35
try
39
36
{
40
37
// Parse first
41
- var xml = _xmlIntelliSense ;
38
+ var xml = _xmlIntelliSenseSource ? . Invoke ( ) ;
42
39
if ( xml == null )
43
40
{
44
41
xml = File . ReadAllText ( _fileName ) ;
@@ -87,15 +84,15 @@ public XmlIntelliSenseProvider()
87
84
// May be called on the main Excel thread or on another thread (e.g. our automation thread)
88
85
// Pass in the xmlFunctionInfo if available (from inside document), else file will be read
89
86
// We make the parsing lazy...
90
- public void RegisterXmlFunctionInfo ( string fileName , string xmlIntelliSense = null )
87
+ public void RegisterXmlFunctionInfo ( string fileName , Func < string > xmlIntelliSenseSource = null )
91
88
{
92
- if ( ! File . Exists ( fileName ) && xmlIntelliSense == null )
89
+ if ( ! File . Exists ( fileName ) && xmlIntelliSenseSource == null )
93
90
{
94
91
Logger . Provider . Verbose ( $ "XmlIntelliSenseProvider.RegisterXmlFunctionInfo - Not IntelliSense file at { fileName } ") ;
95
92
return ;
96
93
}
97
-
98
- var regInfo = new XmlRegistrationInfo ( fileName , xmlIntelliSense ) ;
94
+
95
+ var regInfo = new XmlRegistrationInfo ( fileName , xmlIntelliSenseSource ) ;
99
96
Logger . Provider . Verbose ( $ "XmlIntelliSenseProvider.RegisterXmlFunctionInfo - Created XmlRegistrationInfo info for { fileName } ") ;
100
97
lock ( _xmlRegistrationInfos )
101
98
{
@@ -157,7 +154,7 @@ public IList<FunctionInfo> GetFunctionInfos()
157
154
Logger . Provider . Verbose ( "XmlIntelliSenseProvider.GetFunctionInfos - End" ) ;
158
155
return functionInfos ;
159
156
}
160
-
157
+
161
158
void OnInvalidate ( object _unused_ )
162
159
{
163
160
Logger . Provider . Verbose ( $ "XmlIntelliSenseProvider.OnInvalidate - Invoking Invalidate event") ;
0 commit comments