Esempio n. 1
0
        public void AugmentQuickInfoSession(IQuickInfoSession session, System.Collections.Generic.IList <object> quickInfoContent, out ITrackingSpan applicableToSpan)
        {
            if (_curSession != null && !_curSession.IsDismissed)
            {
                _curSession.Dismiss();
                _curSession = null;
            }

            _curSession            = session;
            _curSession.Dismissed += CurSessionDismissed;
            if (_provider._PublicFunctionProvider != null)
            {
                _provider._PublicFunctionProvider.SetFilename(_textBuffer.GetFilePath());
            }
            if (_provider._DatabaseInfoProvider != null)
            {
                _provider._DatabaseInfoProvider.SetFilename(_textBuffer.GetFilePath());
            }
            var vars = _textBuffer.CurrentSnapshot.AnalyzeExpression(
                session.CreateTrackingSpan(_textBuffer),
                false,
                _provider._PublicFunctionProvider,
                _provider._DatabaseInfoProvider,
                _provider._ProgramFileProvider
                );

            AugmentQuickInfoWorker(session, _textBuffer, _viewAdapter, vars, quickInfoContent, out applicableToSpan);
        }
Esempio n. 2
0
 private ExpressionAnalysis AnalyzeExpression(IQuickInfoSession session) {
     return VsProjectAnalyzer.AnalyzeExpression(
         _textBuffer.CurrentSnapshot,
         session.CreateTrackingSpan(_textBuffer),
         false
     );
 }
Esempio n. 3
0
 private ExpressionAnalysis AnalyzeExpression(IQuickInfoSession session)
 {
     return(VsProjectAnalyzer.AnalyzeExpression(
                _textBuffer.CurrentSnapshot,
                session.CreateTrackingSpan(_textBuffer),
                false
                ));
 }
Esempio n. 4
0
        public void AugmentQuickInfoSession(IQuickInfoSession session, System.Collections.Generic.IList<object> quickInfoContent, out ITrackingSpan applicableToSpan)
        {
            var textBuffer = session.TextView.TextBuffer;

            var vars = _provider._Analyzer.AnalyzeExpression(
                textBuffer.CurrentSnapshot,
                textBuffer,
                session.CreateTrackingSpan(textBuffer)
            );

            applicableToSpan = vars.Span;
            if (String.IsNullOrEmpty(vars.Expression)) {
                return;
            }

            bool first = true;
            var result = new StringBuilder();
            int count = 0;
            List<IAnalysisValue> listVars = new List<IAnalysisValue>(vars.Values);
            HashSet<string> descriptions = new HashSet<string>();
            bool multiline = false;
            foreach (var v in listVars) {
                string description = null;
                if (listVars.Count == 1) {
                    if (v.Description != null) {
                        description = v.Description;
                    }
                } else {
                    if (v.ShortDescription != null) {
                        description = v.ShortDescription;
                    }
                }

                if (descriptions.Add(description)) {
                    if (first) {
                        first = false;
                    } else {
                        if (result.Length == 0 || result[result.Length - 1] != '\n') {
                            result.Append(", ");
                        } else {
                            multiline = true;
                        }
                    }
                    result.Append(description);
                    count++;
                }
            }

            if (multiline) {
                result.Insert(0, vars.Expression + ": " + Environment.NewLine);
            } else {
                result.Insert(0, vars.Expression + ": ");
            }

            quickInfoContent.Add(result.ToString());
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
        public void AugmentQuickInfoSession(IQuickInfoSession session, System.Collections.Generic.IList<object> quickInfoContent, out ITrackingSpan applicableToSpan)
        {
            if (_curSession != null && !_curSession.IsDismissed) {
                _curSession.Dismiss();
                _curSession = null;
            }

            _curSession = session;
            _curSession.Dismissed += CurSessionDismissed;

            var vars = _textBuffer.CurrentSnapshot.AnalyzeExpression(
                session.CreateTrackingSpan(_textBuffer),
                false
            );

            AugmentQuickInfoWorker(vars, quickInfoContent, out applicableToSpan);
        }
Esempio n. 7
0
        public void AugmentQuickInfoSession(IQuickInfoSession session, System.Collections.Generic.IList <object> quickInfoContent, out ITrackingSpan applicableToSpan)
        {
            if (_curSession != null && !_curSession.IsDismissed)
            {
                _curSession.Dismiss();
                _curSession = null;
            }

            _curSession            = session;
            _curSession.Dismissed += CurSessionDismissed;

            var vars = _textBuffer.CurrentSnapshot.AnalyzeExpression(
                _provider._serviceProvider,
                session.CreateTrackingSpan(_textBuffer),
                false
                );

            AugmentQuickInfoWorker(vars, quickInfoContent, out applicableToSpan);
        }
Esempio n. 8
0
        public void AugmentQuickInfoSession(IQuickInfoSession session, System.Collections.Generic.IList <object> quickInfoContent, out ITrackingSpan applicableToSpan)
        {
            var vars = _textBuffer.CurrentSnapshot.AnalyzeExpression(
                session.CreateTrackingSpan(_textBuffer),
                false
                );

            applicableToSpan = vars.Span;
            if (applicableToSpan == null || String.IsNullOrWhiteSpace(vars.Expression))
            {
                return;
            }

            bool first  = true;
            var  result = new StringBuilder();
            int  count  = 0;
            List <IAnalysisValue> listVars     = new List <IAnalysisValue>(vars.Values);
            HashSet <string>      descriptions = new HashSet <string>();
            bool multiline = false;

            foreach (var v in listVars)
            {
                string description = null;
                if (listVars.Count == 1)
                {
                    if (v.Description != null)
                    {
                        description = v.Description;
                    }
                }
                else
                {
                    if (v.ShortDescription != null)
                    {
                        description = v.ShortDescription;
                    }
                }

                if (descriptions.Add(description))
                {
                    if (first)
                    {
                        first = false;
                    }
                    else
                    {
                        if (result.Length == 0 || result[result.Length - 1] != '\n')
                        {
                            result.Append(", ");
                        }
                        else
                        {
                            multiline = true;
                        }
                    }
                    result.Append(description);
                    count++;
                }
            }

            if (multiline)
            {
                result.Insert(0, vars.Expression + ": " + Environment.NewLine);
            }
            else
            {
                result.Insert(0, vars.Expression + ": ");
            }

            quickInfoContent.Add(result.ToString());
        }