Exemplo n.º 1
0
        public void NamespaceQuickInfo()
        {
            string testGd = @"NAMESPACE    Pharmatechnik.Apotheke.XTplus.Verkauf.GUI   ";

            var syntax = SyntaxFactory.ParseNamespaceSectionBeginSyntax(testGd);

            Assert.That(syntax.SyntaxTree, Is.Not.Null);
            Assert.That(syntax.SyntaxTree.Diagnostics.Length, Is.EqualTo(0));

            var qiDef = QuickInfoProvider.GetQuickInfoDefinition(syntax.SyntaxTree, 0);

            Assert.That(qiDef, Is.Null);
            qiDef = QuickInfoProvider.GetQuickInfoDefinition(syntax.SyntaxTree, 12);
            Assert.That(qiDef, Is.Null);

            qiDef = QuickInfoProvider.GetQuickInfoDefinition(syntax.SyntaxTree, 13);
            Assert.That(qiDef, Is.Not.Null);
            Assert.That(qiDef.Glyph, Is.EqualTo(Glyph.Namespace));
            Assert.That(qiDef.Content.JoinText(), Is.EqualTo("NAMESPACE Pharmatechnik.Apotheke.XTplus.Verkauf.GUI"));

            qiDef = QuickInfoProvider.GetQuickInfoDefinition(syntax.SyntaxTree, 27);
            Assert.That(qiDef, Is.Not.Null);

            qiDef = QuickInfoProvider.GetQuickInfoDefinition(syntax.SyntaxTree, 54);
            Assert.That(qiDef, Is.Not.Null);

            qiDef = QuickInfoProvider.GetQuickInfoDefinition(syntax.SyntaxTree, 55);
            Assert.That(qiDef, Is.Null);
        }
Exemplo n.º 2
0
        public async Task <QuickInfoItem> GetQuickInfoItemAsync(IAsyncQuickInfoSession session, CancellationToken cancellationToken)
        {
            await Task.Yield().ConfigureAwait(false);

            if (cancellationToken.IsCancellationRequested)
            {
                return(null);
            }

            var syntaxTreeAndSnapshot = ParserService.SyntaxTreeAndSnapshot;

            if (syntaxTreeAndSnapshot == null)
            {
                return(null);
            }

            // Map the trigger point down to our buffer.
            SnapshotPoint?triggerPoint = session.GetTriggerPoint(syntaxTreeAndSnapshot.Snapshot);

            if (triggerPoint == null)
            {
                return(null);
            }

            var qiInfo = QuickInfoProvider.GetQuickInfoDefinition(syntaxTreeAndSnapshot.SyntaxTree, triggerPoint.Value.Position);

            if (qiInfo == null)
            {
                return(null);
            }

            var applicableToSpan = syntaxTreeAndSnapshot.Snapshot.CreateTrackingSpan(
                qiInfo.ApplicableToExtent.Start,
                qiInfo.ApplicableToExtent.Length,
                SpanTrackingMode.EdgeExclusive);

            await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync();

            var qiContent = _textBlockBuilderService.ToTextBlock(qiInfo.Content);

            var controlControl = new SymbolQuickInfoControl {
                CrispImage  = { Moniker = GdImageMonikers.GetMoniker(qiInfo.Glyph) },
                TextContent = { Content = qiContent }
            };

            var qiItem = new QuickInfoItem(applicableToSpan: applicableToSpan,
                                           item: controlControl
                                           );

            return(qiItem);
        }