Beispiel #1
0
        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);
        }
Beispiel #2
0
        private bool IsSecondaryBuffer(Workspace workspace, Document document)
        {
            var containedDocument = MonoDevelopHostDocumentRegistration.FromDocument(document);

            if (containedDocument == null)
            {
                return(false);
            }

            return(true);
        }
Beispiel #3
0
        private void FinishInitialization()
        {
            var document = LanguageBuffer.CurrentSnapshot.GetOpenDocumentInCurrentContextWithChangesSafe();
            var project  = document.Project;

            _workspace = project.Solution.Workspace;

            Language = project.Language;
            Id       = document.Id;

            MonoDevelopHostDocumentRegistration.Register(LanguageBuffer, this);
        }
Beispiel #4
0
        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);
        }
Beispiel #5
0
 public static void DetachFromBuffer(ITextBuffer languageBuffer)
 {
     MonoDevelopHostDocumentRegistration.UnRegister(languageBuffer);
 }
Beispiel #6
0
 public static MonoDevelopContainedDocument FromDocument(Document document)
 {
     return(MonoDevelopHostDocumentRegistration.FromDocument(document) as MonoDevelopContainedDocument);
 }
Beispiel #7
0
        public static void DetachFromBuffer(ITextBuffer languageBuffer)
        {
            var document = languageBuffer.CurrentSnapshot.GetOpenDocumentInCurrentContextWithChanges();

            MonoDevelopHostDocumentRegistration.UnRegister(document);
        }
Beispiel #8
0
 static bool IsContainedDocument(Document document)
 {
     return(MonoDevelopHostDocumentRegistration.FromDocument(document) != null);
 }