Ejemplo n.º 1
0
        protected override void Execute()
        {
            IList <IParserData> parserData;

            if (_text.StartsWith("+") || _text.StartsWith("-") || _text == "_")
            {
                int steps = _text.Count(c => c == '+') - _text.Count(c => c == '-');
                if (steps > 0)
                {
                    steps--;
                }
                var           parserInfo     = _parserService.GetParserInfo(_fileName);
                List <ILabel> reusableLabels = parserInfo.LabelsList.Where(l => l.IsReusable).ToList();
                ILabel        currentLabel   = reusableLabels.FirstOrDefault(l => l.Location.Line >= _currentLine);
                if (currentLabel == null)
                {
                    return;
                }

                int index = reusableLabels.IndexOf(currentLabel) + steps;
                parserData = new List <IParserData> {
                    reusableLabels[index]
                };
            }
            else
            {
                parserData = _parserService.GetParserData(_text, Settings.Default.CaseSensitive).ToList();
            }

            if (parserData.Count == 1)
            {
                RunCommand(new GotoLabelAction(parserData.Single()));
            }
            else
            {
                _findResults.NewFindResults(_text, _projectService.Project.ProjectName);
                foreach (IParserData data in parserData)
                {
                    string line = _fileService.GetLine(data.Parent.SourceFile, data.Location.Line + 1);
                    _findResults.AddFindResult(data.Parent.SourceFile, data.Location.Line, line);
                }
                _findResults.DoneSearching();
                _dockingService.ShowDockPanel(_findResults);
            }
        }
Ejemplo n.º 2
0
        private void AddLabels()
        {
            var fileEditor = DockingService.ActiveDocument as AbstractFileEditor;

            if (fileEditor == null)
            {
                return;
            }

            FilePath fileName = fileEditor.FileName;

            if (fileName == null)
            {
                return;
            }

            ParserInformation info = _parserService.GetParserInfo(fileName);

            if (info == null)
            {
                ClearLabels();
                return;
            }

            bool showEquates = includeEquatesBox.Checked;

            ListBox.ObjectCollection labelsToAdd = new ListBox.ObjectCollection(labelsBox);

            var labels = info.Where(d => (d is Label && !((Label)d).IsReusable) ||
                                    ((d is Equate || d is Define || d is Macro) && showEquates))
                         .Cast <object>().ToArray();

            labelsToAdd.AddRange(labels);

            labelsBox.Items.Clear();
            labelsBox.Items.AddRange(labelsToAdd);
        }