private void GoToSearchResult(object sender, SearchResult searchResult) { try { if(!searchResult.LineNumber.HasValue) { return; } if(!searchResult.LinePosition.HasValue) { return; } var dte = (DTE)Microsoft.VisualStudio.Shell.Package.GetGlobalService(typeof(DTE)); var textSelection = (TextSelection)(dte?.ActiveDocument?.Selection); var lineNumber = searchResult.LineNumber.Value; var selectionStart = searchResult.LinePosition.Value; textSelection?.MoveTo(lineNumber, selectionStart, false); if(searchResult.SelectionLength.HasValue) { var selectionEnd = selectionStart + searchResult.SelectionLength.Value; textSelection?.MoveToLineAndOffset(lineNumber, selectionEnd, true); } } catch(Exception) { MessageBox.Show(PackageResources.XPathWorkbenchNavigationErrorText, PackageResources.XPathWorkbenchNavigationErrorTitle, MessageBoxButton.OK, MessageBoxImage.Warning); } }
private void SetLineInfo(IXmlLineInfo lineInfo, SearchResult searchResult) { if(lineInfo.HasLineInfo()) { searchResult.LineNumber = lineInfo.LineNumber; searchResult.LinePosition = lineInfo.LinePosition; } }
private SearchResult TryParseElementSearchResult(XElement element) { if(element == null) { return null; } var searchResult = new SearchResult {Value = element.ToString(SaveOptions.DisableFormatting), SelectionLength = element.Name.LocalName.Length}; SetLineInfo(element, searchResult); return searchResult; }
private SearchResult TryParseAttributeSearchResult(XAttribute attribute) { if(attribute == null) { return null; } var searchResult = new SearchResult {Value = attribute.ToString(), SelectionLength = attribute.Name.LocalName.Length}; SetLineInfo(attribute, searchResult); return searchResult; }