@@ -17,28 +17,25 @@ class XmlIntelliSenseProvider : IIntelliSenseProvider
1717 {
1818 public class XmlRegistrationInfo
1919 {
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
2222 XmlIntelliSense _intelliSense ; // Might be null - lazy parsed
2323 string _path ; // Directory of file, used to expand HelpTopic
2424
25- public XmlRegistrationInfo ( string fileName , string xmlIntelliSense )
25+ public XmlRegistrationInfo ( string fileName , Func < string > xmlIntelliSenseSource )
2626 {
2727 _fileName = fileName ;
28- _xmlIntelliSense = xmlIntelliSense ;
28+ _xmlIntelliSenseSource = xmlIntelliSenseSource ;
2929 _path = Path . GetDirectoryName ( fileName ) ;
3030 }
3131
3232 // Called in a macro context
3333 public void Refresh ( )
3434 {
35- if ( _intelliSense != null )
36- return ; // Already done
37-
3835 try
3936 {
4037 // Parse first
41- var xml = _xmlIntelliSense ;
38+ var xml = _xmlIntelliSenseSource ? . Invoke ( ) ;
4239 if ( xml == null )
4340 {
4441 xml = File . ReadAllText ( _fileName ) ;
@@ -87,15 +84,15 @@ public XmlIntelliSenseProvider()
8784 // May be called on the main Excel thread or on another thread (e.g. our automation thread)
8885 // Pass in the xmlFunctionInfo if available (from inside document), else file will be read
8986 // We make the parsing lazy...
90- public void RegisterXmlFunctionInfo ( string fileName , string xmlIntelliSense = null )
87+ public void RegisterXmlFunctionInfo ( string fileName , Func < string > xmlIntelliSenseSource = null )
9188 {
92- if ( ! File . Exists ( fileName ) && xmlIntelliSense == null )
89+ if ( ! File . Exists ( fileName ) && xmlIntelliSenseSource == null )
9390 {
9491 Logger . Provider . Verbose ( $ "XmlIntelliSenseProvider.RegisterXmlFunctionInfo - Not IntelliSense file at { fileName } ") ;
9592 return ;
9693 }
97-
98- var regInfo = new XmlRegistrationInfo ( fileName , xmlIntelliSense ) ;
94+
95+ var regInfo = new XmlRegistrationInfo ( fileName , xmlIntelliSenseSource ) ;
9996 Logger . Provider . Verbose ( $ "XmlIntelliSenseProvider.RegisterXmlFunctionInfo - Created XmlRegistrationInfo info for { fileName } ") ;
10097 lock ( _xmlRegistrationInfos )
10198 {
@@ -157,7 +154,7 @@ public IList<FunctionInfo> GetFunctionInfos()
157154 Logger . Provider . Verbose ( "XmlIntelliSenseProvider.GetFunctionInfos - End" ) ;
158155 return functionInfos ;
159156 }
160-
157+
161158 void OnInvalidate ( object _unused_ )
162159 {
163160 Logger . Provider . Verbose ( $ "XmlIntelliSenseProvider.OnInvalidate - Invoking Invalidate event") ;
0 commit comments