public void AugmentQuickInfoSession(IQuickInfoSession session, IList <object> quickInfoContent, out ITrackingSpan applicableToSpan)
            {
                applicableToSpan = null;

                object eventHookupValue;

                if (quickInfoContent.Count != 0 ||
                    session.Properties.TryGetProperty(QuickInfoUtilities.EventHookupKey, out eventHookupValue))
                {
                    // No quickinfo if it's the event hookup popup.
                    return;
                }

                var position = session.GetTriggerPoint(_subjectBuffer.CurrentSnapshot);

                if (position.HasValue)
                {
                    var textView = session.TextView;
                    var args     = new InvokeQuickInfoCommandArgs(textView, _subjectBuffer);

                    Controller controller;
                    if (_commandHandler.TryGetController(args, out controller))
                    {
                        controller.InvokeQuickInfo(position.Value, trackMouse: true, augmentSession: session);
                    }
                }
            }
        void ICommandHandler <InvokeQuickInfoCommandArgs> .ExecuteCommand(InvokeQuickInfoCommandArgs args, Action nextHandler)
        {
            var caretPoint = args.TextView.GetCaretPoint(args.SubjectBuffer);

            if (caretPoint.HasValue)
            {
                // Invoking QuickInfo from the command, so there's no session yet.
                InvokeQuickInfo(caretPoint.Value.Position, trackMouse: false, augmentSession: null);
            }
        }
            public void AugmentQuickInfoSession(IQuickInfoSession session, IList <object> quickInfoContent, out ITrackingSpan applicableToSpan)
            {
                applicableToSpan = null;
                if (quickInfoContent.Count != 0)
                {
                    return;
                }

                var position = session.GetTriggerPoint(_subjectBuffer.CurrentSnapshot);

                if (position.HasValue)
                {
                    var textView = session.TextView;
                    var args     = new InvokeQuickInfoCommandArgs(textView, _subjectBuffer);
                    if (_commandHandler.TryGetController(args, out var controller))
                    {
                        controller.InvokeQuickInfo(position.Value, trackMouse: true, augmentSession: session);
                    }
                }
            }
 CommandState ICommandHandler <InvokeQuickInfoCommandArgs> .GetCommandState(InvokeQuickInfoCommandArgs args, Func <CommandState> nextHandler)
 {
     AssertIsForeground();
     return(nextHandler());
 }