コード例 #1
0
ファイル: QuickInfoSource.cs プロジェクト: rkhjjs/VSGenero
        public string GetQuickInfoTargetFullName()
        {
            IWpfTextView wpfTextView;

            if (_textBuffer.Properties.TryGetProperty <IWpfTextView>(typeof(IWpfTextView), out wpfTextView))
            {
                if (_provider._PublicFunctionProvider != null)
                {
                    _provider._PublicFunctionProvider.SetFilename(_textBuffer.GetFilePath());
                }
                if (_provider._DatabaseInfoProvider != null)
                {
                    _provider._DatabaseInfoProvider.SetFilename(_textBuffer.GetFilePath());
                }

                ExpressionAnalysis expression = null;
                if (_curSession == null)
                {
                    var trackingSpan = wpfTextView.Caret.Position.CreateTrackingSpan(_textBuffer);

                    expression = _textBuffer.CurrentSnapshot.AnalyzeExpression(
                        trackingSpan,
                        false,
                        _provider._PublicFunctionProvider,
                        _provider._DatabaseInfoProvider,
                        _provider._ProgramFileProvider
                        );
                }
                else
                {
                    expression = _textBuffer.CurrentSnapshot.AnalyzeExpression(
                        _curSession.CreateTrackingSpan(_textBuffer),
                        false,
                        _provider._PublicFunctionProvider,
                        _provider._DatabaseInfoProvider,
                        _provider._ProgramFileProvider
                        );
                }

                if (expression != null && expression.Span != null)
                {
                    return(expression.Span.GetSpan(_textBuffer.CurrentSnapshot).GetText());
                }
            }

            return(null);
        }
コード例 #2
0
        internal static void AugmentQuickInfoWorker(IQuickInfoSession session, ITextBuffer subjectBuffer, IVsTextView viewAdapter, ExpressionAnalysis exprAnalysis, System.Collections.Generic.IList <object> quickInfoContent, out ITrackingSpan applicableToSpan)
        {
            applicableToSpan = exprAnalysis.Span;
            if (applicableToSpan == null || String.IsNullOrWhiteSpace(exprAnalysis.Expression))
            {
                return;
            }

            bool            first  = true;
            var             result = new StringBuilder();
            int             count  = 0;
            IAnalysisResult val    = exprAnalysis.Value;

            if (val != null)
            {
                DTE dte = (DTE)VSGeneroPackage.Instance.GetPackageService(typeof(DTE));
                if (dte.Debugger.CurrentMode != dbgDebugMode.dbgBreakMode ||
                    !val.CanGetValueFromDebugger)
                {
                    quickInfoContent.Add(val.Documentation);
                }
                else
                {
                    string qiText;
                    if (TryGetQuickInfoFromDebugger(session, applicableToSpan.GetSpan(subjectBuffer.CurrentSnapshot), viewAdapter, out qiText))
                    {
                        quickInfoContent.Add(qiText);
                    }
                }
            }
        }