public bool TryMapSpanFromSecondaryBufferToPrimaryBuffer(TextSpan spanInSecondaryBuffer, Microsoft.CodeAnalysis.Workspace workspace, Document document, out TextSpan spanInPrimaryBuffer) { spanInPrimaryBuffer = default; var containedDocument = MonoDevelopHostDocumentRegistration.FromDocument(document); if (containedDocument == null) { return(false); } var projectionBuffer = containedDocument.TopBuffer; var bufferGraph = factory.BufferGraphFactoryService.CreateBufferGraph(projectionBuffer); if (document.TryGetText(out var sourceText) && sourceText.Container.TryGetTextBuffer() is ITextBuffer languageBuffer) { var secondarySnapshot = languageBuffer.CurrentSnapshot; var snapshotSpanInSecondaryBuffer = new SnapshotSpan(secondarySnapshot, new Span(spanInSecondaryBuffer.Start, spanInSecondaryBuffer.Length)); var topBufferSnapshotSpan = bufferGraph.MapUpToSnapshot( snapshotSpanInSecondaryBuffer, SpanTrackingMode.EdgeExclusive, projectionBuffer.CurrentSnapshot).FirstOrDefault(); if (topBufferSnapshotSpan != default) { spanInPrimaryBuffer = new TextSpan(topBufferSnapshotSpan.Start, topBufferSnapshotSpan.Length); return(true); } } return(false); }
private bool IsSecondaryBuffer(Workspace workspace, Document document) { var containedDocument = MonoDevelopHostDocumentRegistration.FromDocument(document); if (containedDocument == null) { return(false); } return(true); }
public static bool TryMapSpanFromSecondaryBufferToPrimaryBuffer(TextSpan spanInSecondaryBuffer, Microsoft.CodeAnalysis.Workspace workspace, Document document, out TextSpan spanInPrimaryBuffer) { spanInPrimaryBuffer = default; var containedDocument = MonoDevelopHostDocumentRegistration.FromDocument(document); if (containedDocument == null) { return(false); } throw new NotImplementedException(); //var bufferCoordinator = containedDocument.BufferCoordinator; //var primary = new VsTextSpan [1]; //var hresult = bufferCoordinator.MapSecondaryToPrimarySpan (spanInSecondaryBuffer, primary); //spanInPrimaryBuffer = primary [0]; //return ErrorHandler.Succeeded (hresult); }
public static MonoDevelopContainedDocument FromDocument(Document document) { return(MonoDevelopHostDocumentRegistration.FromDocument(document) as MonoDevelopContainedDocument); }
static bool IsContainedDocument(Document document) { return(MonoDevelopHostDocumentRegistration.FromDocument(document) != null); }