Example #1
0
        private async Task <IOrderedEnumerable <ToDoItem> > GetItems()
        {
            await Task.Yield();

            var items    = new ConcurrentBag <ToDoItem>();
            var projects = VBE.VBProjects.Cast <VBProject>().Where(project => project.Protection != vbext_ProjectProtection.vbext_pp_locked);

            Parallel.ForEach(projects,
                             project =>
            {
                var modules = _parser.Parse(project).ComponentParseResults;
                foreach (var module in modules)
                {
                    var markers = module.Comments.AsParallel().SelectMany(GetToDoMarkers);
                    foreach (var marker in markers)
                    {
                        items.Add(marker);
                    }
                }
            });

            var sortedItems = items.OrderBy(item => item.ProjectName)
                              .ThenBy(item => item.ModuleName)
                              .ThenByDescending(item => item.Priority)
                              .ThenBy(item => item.LineNumber);

            return(sortedItems);
        }
Example #2
0
        private void _findAllReferencesContextMenu_Click(CommandBarButton Ctrl, ref bool CancelDefault)
        {
            var selection    = IDE.ActiveCodePane.GetSelection();
            var declarations = _parser.Parse(IDE.ActiveVBProject).Declarations;

            var target = declarations.Items
                         .Where(item => item.DeclarationType != DeclarationType.ModuleOption)
                         .FirstOrDefault(item => IsSelectedDeclaration(selection, item) ||
                                         IsSelectedReference(selection, item));

            if (target == null)
            {
                return;
            }

            FindAllReferences(target);
        }
Example #3
0
 private void _bgw_DoWork(object sender, DoWorkEventArgs e)
 {
     _parser.ParseStarted       += _parser_ParseStarted;
     _parser.ResolutionProgress += _parser_ResolutionProgress;
     _parser.ParseProgress      += _parser_ParseProgress;
     Result = _parser.Parse(_project);
     _parser.ParseStarted       -= _parser_ParseStarted;
     _parser.ResolutionProgress -= _parser_ResolutionProgress;
     _parser.ParseProgress      -= _parser_ParseProgress;
 }
        private void RefreshExplorerTreeView()
        {
            Control.Invoke((MethodInvoker) delegate
            {
                Control.SolutionTree.Nodes.Clear();
                Control.ShowDesignerButton.Enabled = false;
            });

            _parser.Parse(VBE, this);
        }
Example #5
0
        private async Task <IEnumerable <TreeNode> > CreateModuleNodesAsync(VBProject project)
        {
            var result      = new List <TreeNode>();
            var parseResult = _parser.Parse(project);

            foreach (var componentParseResult in parseResult.ComponentParseResults)
            {
                var component = componentParseResult.Component;
                var members   = parseResult.Declarations.Items
                                .Where(declaration => declaration.ParentScope == component.Collection.Parent.Name + "." + component.Name &&
                                       declaration.DeclarationType != DeclarationType.Control &&
                                       declaration.DeclarationType != DeclarationType.ModuleOption);

                var node = new TreeNode(component.Name);
                node.ImageKey         = ComponentTypeIcons[component.Type];
                node.SelectedImageKey = node.ImageKey;
                node.Tag = parseResult.Declarations.Items.SingleOrDefault(item =>
                                                                          item.IdentifierName == component.Name &&
                                                                          item.Project == component.Collection.Parent &&
                                                                          (item.DeclarationType == DeclarationType.Class || item.DeclarationType == DeclarationType.Module));

                foreach (var declaration in members)
                {
                    if (declaration.DeclarationType == DeclarationType.UserDefinedTypeMember ||
                        declaration.DeclarationType == DeclarationType.EnumerationMember)
                    {
                        // these ones are handled by their respective parent
                        continue;
                    }

                    var text  = GetNodeText(declaration);
                    var child = new TreeNode(text);
                    child.ImageKey         = GetImageKeyForDeclaration(declaration);
                    child.SelectedImageKey = child.ImageKey;
                    child.Tag = declaration;

                    if (declaration.DeclarationType == DeclarationType.UserDefinedType ||
                        declaration.DeclarationType == DeclarationType.Enumeration)
                    {
                        var subDeclaration = declaration;
                        var subMembers     = parseResult.Declarations.Items.Where(item =>
                                                                                  (item.DeclarationType == DeclarationType.EnumerationMember || item.DeclarationType == DeclarationType.UserDefinedTypeMember) &&
                                                                                  item.Context != null && subDeclaration.Context.Equals(item.Context.Parent));

                        foreach (var subMember in subMembers)
                        {
                            var subChild = new TreeNode(subMember.IdentifierName);
                            subChild.ImageKey         = GetImageKeyForDeclaration(subMember);
                            subChild.SelectedImageKey = subChild.ImageKey;
                            subChild.Tag = subMember;
                            child.Nodes.Add(subChild);
                        }
                    }

                    node.Nodes.Add(child);
                }

                result.Add(node);
            }

            return(result);
        }
Example #6
0
 public void Parse(VBE vbe, object owner)
 {
     Task.Run(() => _parser.Parse(vbe, owner));
 }