protected void NavigateToVirtualTreePoint(Solution solution, VirtualTreePoint navigationPoint) { var documentToNavigate = solution.GetDocument(navigationPoint.Tree); var workspace = solution.Workspace; var navigationService = workspace.Services.GetService<IDocumentNavigationService>(); if (navigationService.CanNavigateToPosition(workspace, documentToNavigate.Id, navigationPoint.Position, navigationPoint.VirtualSpaces)) { navigationService.TryNavigateToPosition(workspace, documentToNavigate.Id, navigationPoint.Position, navigationPoint.VirtualSpaces); } else { var notificationService = workspace.Services.GetService<INotificationService>(); notificationService.SendNotification(EditorFeaturesResources.TheDefinitionOfTheObjectIsHidden, severity: NotificationSeverity.Error); } }
public EnvDTE.TextPoint CreateTextPoint(FileCodeModel fileCodeModel, VirtualTreePoint point) { var workspace = fileCodeModel.Workspace as VisualStudioWorkspaceImpl; var hostDocument = workspace.GetHostDocument(fileCodeModel.GetDocumentId()); if (hostDocument == null) { return null; } using (var invisibleEditor = new InvisibleEditor(fileCodeModel.ServiceProvider, hostDocument.FilePath, needsSave: false, needsUndoDisabled: false)) { var vsTextLines = invisibleEditor.VsTextLines; var line = point.GetContainingLine(); var column = point.Position - line.Start + point.VirtualSpaces; Marshal.ThrowExceptionForHR(vsTextLines.CreateTextPoint(line.LineNumber, column, out var textPoint)); return (EnvDTE.TextPoint)textPoint; } }
public void TestCodeElementFromPointBetweenMembers() { var text = CurrentDocument.GetTextAsync().Result; var tree = CurrentDocument.GetSyntaxTreeAsync().Result; var position = text.ToString().IndexOf("protected virtual string MethodB", StringComparison.Ordinal) - 1; var virtualTreePoint = new VirtualTreePoint(tree, text, position); var textPoint = new MockTextPoint(virtualTreePoint, 4); Assert.Throws<COMException>(() => CodeModel.CodeElementFromPoint(textPoint, vsCMElement.vsCMElementFunction)); var element = CodeModel.CodeElementFromPoint(textPoint, vsCMElement.vsCMElementClass); Assert.Equal("A", element.Name); }
public void TestCodeElementFromPoint() { var text = CurrentDocument.GetTextAsync().Result; var tree = CurrentDocument.GetSyntaxTreeAsync().Result; var position = text.ToString().IndexOf("DynamicMethod", StringComparison.Ordinal); var virtualTreePoint = new VirtualTreePoint(tree, text, position); var textPoint = new MockTextPoint(virtualTreePoint, 4); var scope = vsCMElement.vsCMElementFunction; var element = CodeModel.CodeElementFromPoint(textPoint, scope); Assert.Equal("DynamicMethod", element.Name); }
public TextPoint(VirtualTreePoint point) { _point = point; }
public EnvDTE.TextPoint CreateTextPoint(FileCodeModel fileCodeModel, VirtualTreePoint point) { return new TextPoint(point); }
public EnvDTE.TextPoint CreateTextPoint(FileCodeModel fileCodeModel, VirtualTreePoint point) { return(new TextPoint(point)); }