1111using Rubberduck . UI . Command . MenuItems ;
1212using System ;
1313using System . Globalization ;
14- using System . Threading . Tasks ;
1514using System . Windows . Forms ;
1615
1716namespace Rubberduck
@@ -141,8 +140,12 @@ public void Startup()
141140 _appMenus . Initialize ( ) ;
142141 _hooks . HookHotkeys ( ) ; // need to hook hotkeys before we localize menus, to correctly display ShortcutTexts
143142 _appMenus . Localize ( ) ;
144- Task . Delay ( 1000 ) . ContinueWith ( t => UiDispatcher . Invoke ( ( ) => _parser . State . OnParseRequested ( this ) ) ) ;
145143 UpdateLoggingLevel ( ) ;
144+
145+ if ( _vbe . VBProjects . Count != 0 )
146+ {
147+ _parser . State . OnParseRequested ( this ) ;
148+ }
146149 }
147150
148151 public void Shutdown ( )
@@ -157,168 +160,6 @@ public void Shutdown()
157160 }
158161 }
159162
160- /*#region sink handlers.
161- async void sink_ProjectRemoved(object sender, DispatcherEventArgs<VBProject> e)
162- {
163- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
164-
165- if (e.Item.Protection == vbext_ProjectProtection.vbext_pp_locked)
166- {
167- Logger.Debug("Locked project '{0}' was removed.", e.Item.Name);
168- return;
169- }
170-
171- _parser.Cancel();
172-
173- var projectId = e.Item.HelpFile;
174- Debug.Assert(projectId != null);
175-
176- _parser.State.RemoveProject(e.Item);
177- _parser.State.OnParseRequested(this);
178- }
179-
180- async void sink_ProjectAdded(object sender, DispatcherEventArgs<VBProject> e)
181- {
182- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
183-
184- Logger.Debug("Project '{0}' was added.", e.Item.Name);
185- if (e.Item.Protection == vbext_ProjectProtection.vbext_pp_locked)
186- {
187- Logger.Debug("Project is protected and will not be added to parser state.");
188- return;
189- }
190-
191- _parser.State.AddProject(e.Item); // note side-effect: assigns ProjectId/HelpFile
192- var projectId = e.Item.HelpFile;
193- RegisterComponentsEventSink(e.Item.VBComponents, projectId);
194-
195- if (!_parser.State.AllDeclarations.Any())
196- {
197- // forces menus to evaluate their CanExecute state:
198- Parser_StateChanged(this, new ParserStateEventArgs(ParserState.Pending));
199- _stateBar.SetStatusText();
200- return;
201- }
202-
203- _parser.State.OnParseRequested(sender);
204- }
205-
206- async void sink_ComponentSelected(object sender, DispatcherEventArgs<VBComponent> e)
207- {
208- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
209-
210- if (!_parser.State.AllDeclarations.Any())
211- {
212- return;
213- }
214- }
215-
216- async void sink_ComponentRenamed(object sender, DispatcherRenamedEventArgs<VBComponent> e)
217- {
218- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
219-
220- if (!_parser.State.AllDeclarations.Any())
221- {
222- return;
223- }
224-
225- _parser.Cancel();
226-
227- _sourceControlPanelVM.HandleRenamedComponent(e.Item, e.OldName);
228-
229- Logger.Debug("Component '{0}' was renamed to '{1}'.", e.OldName, e.Item.Name);
230-
231- var projectId = e.Item.Collection.Parent.HelpFile;
232- var componentDeclaration = _parser.State.AllDeclarations.FirstOrDefault(f =>
233- f.ProjectId == projectId &&
234- f.DeclarationType == DeclarationType.ClassModule &&
235- f.IdentifierName == e.OldName);
236-
237- if (e.Item.Type == vbext_ComponentType.vbext_ct_Document &&
238- componentDeclaration != null &&
239-
240- // according to ThunderFrame, Excel is the only one we explicitly support
241- // with two Document-component types just skip the Worksheet component
242- ((ClassModuleDeclaration) componentDeclaration).Supertypes.All(a => a.IdentifierName != "Worksheet"))
243- {
244- _parser.State.RemoveProject(projectId);
245-
246- _parser.State.AddProject(e.Item.Collection.Parent);
247- }
248- else
249- {
250- _parser.State.RemoveRenamedComponent(e.Item, e.OldName);
251- }
252-
253- _parser.State.OnParseRequested(this);
254- }
255-
256- async void sink_ComponentRemoved(object sender, DispatcherEventArgs<VBComponent> e)
257- {
258- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
259-
260- if (!_parser.State.AllDeclarations.Any())
261- {
262- return;
263- }
264-
265- _parser.Cancel(e.Item);
266-
267- _sourceControlPanelVM.HandleRemovedComponent(e.Item);
268-
269- Logger.Debug("Component '{0}' was removed.", e.Item.Name);
270- _parser.State.ClearStateCache(e.Item, true);
271- }
272-
273- async void sink_ComponentReloaded(object sender, DispatcherEventArgs<VBComponent> e)
274- {
275- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
276-
277- if (!_parser.State.AllDeclarations.Any())
278- {
279- return;
280- }
281-
282- _parser.Cancel(e.Item);
283-
284- _parser.State.OnParseRequested(sender, e.Item);
285- }
286-
287- async void sink_ComponentAdded(object sender, DispatcherEventArgs<VBComponent> e)
288- {
289- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
290-
291- if (!_parser.State.AllDeclarations.Any())
292- {
293- return;
294- }
295-
296- _sourceControlPanelVM.HandleAddedComponent(e.Item);
297-
298- Logger.Debug("Component '{0}' was added.", e.Item.Name);
299- _parser.State.OnParseRequested(sender, e.Item);
300- }
301-
302- async void sink_ProjectRenamed(object sender, DispatcherRenamedEventArgs<VBProject> e)
303- {
304- if (!_handleSinkEvents || !_vbe.IsInDesignMode()) { return; }
305-
306- if (!_parser.State.AllDeclarations.Any())
307- {
308- return;
309- }
310-
311- _parser.Cancel();
312-
313- Logger.Debug("Project '{0}' (ID {1}) was renamed to '{2}'.", e.OldName, e.Item.HelpFile, e.Item.Name);
314-
315- _parser.State.RemoveProject(e.Item.HelpFile);
316- _parser.State.AddProject(e.Item);
317-
318- _parser.State.OnParseRequested(sender);
319- }
320- #endregion*/
321-
322163 private void _stateBar_Refresh ( object sender , EventArgs e )
323164 {
324165 // handles "refresh" button click on "Rubberduck" command bar
0 commit comments