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); } }
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); }