bool StartSession()
        {
            if (_currentSession != null)
            {
                return(false);
            }

            SnapshotPoint caret    = TextView.Caret.Position.BufferPosition;
            ITextSnapshot snapshot = caret.Snapshot;

            if (!Broker.IsCompletionActive(TextView))
            {
                _currentSession = Broker.CreateCompletionSession(TextView, snapshot.CreateTrackingPoint(caret, PointTrackingMode.Positive), true);
            }
            else
            {
                _currentSession = Broker.GetSessions(TextView)[0];
            }

            _currentSession.Dismissed += (sender, args) => _currentSession = null;
            _currentSession.Start();

            if (_quickInfoBroker.IsQuickInfoActive(TextView))
            {
                foreach (IQuickInfoSession session in _quickInfoBroker.GetSessions(TextView))
                {
                    session.Dismiss();
                }
            }

            return(true);
        }
示例#2
0
 private void DismissQuickInfo()
 {
     if (_QuickInfobroker.IsQuickInfoActive(_textView))
     {
         _QuickInfobroker.GetSessions(_textView)[0].Dismiss();
     }
 }
示例#3
0
 public void CloseOtherSessions(IQuickInfoSession session)
 {
     foreach (var s in quickInfoBroker.GetSessions(session.TextView))
     {
         if (s != session)
         {
             s.Dismiss();
         }
     }
 }
        public void DismissQuickInfoSession(ITextView textView)
        {
            IQuickInfoBroker broker = Shell.ExportProvider.GetExportedValue <IQuickInfoBroker>();
            var sessions            = broker.GetSessions(textView);

            foreach (var s in sessions)
            {
                s.Dismiss();
            }
        }
示例#5
0
        public void DismissQuickInfoSession(ITextView textView)
        {
            IQuickInfoBroker broker = Shell.GetService <IQuickInfoBroker>();
            var sessions            = broker.GetSessions(textView);

            foreach (var s in sessions)
            {
                s.Dismiss();
            }
        }
示例#6
0
 private void OnTextBufferChanging(object sender, TextContentChangingEventArgs e)
 {
     if (_quickInfoBroker.IsQuickInfoActive(_textView))
     {
         var sessions = _quickInfoBroker.GetSessions(_textView);
         foreach (var session in sessions)
         {
             session.Dismiss();
         }
     }
 }
示例#7
0
        private void TriggerSession()
        {
            if (_session == null || _session.IsDismissed)
            {
                if (_quickInfoBroker.IsQuickInfoActive(_view))
                {
                    _quickInfoBroker.GetSessions(_view)[0].Dismiss();
                }

                Dispatcher.CurrentDispatcher.BeginInvoke(new Action(() =>
                {
                    _session = _signaturehelpBroker.TriggerSignatureHelp(_view);
                    if (_session != null)
                    {
                        _session.Match();
                    }
                }), DispatcherPriority.Normal, null);
            }
        }
示例#8
0
        void IDisplayWindowBroker.DismissDisplayWindows()
        {
            if (_completionBroker.IsCompletionActive(_textView))
            {
                _completionBroker.DismissAllSessions(_textView);
            }

            if (_signatureHelpBroker.IsSignatureHelpActive(_textView))
            {
                _signatureHelpBroker.DismissAllSessions(_textView);
            }

            if (_quickInfoBroker.IsQuickInfoActive(_textView))
            {
                foreach (var session in _quickInfoBroker.GetSessions(_textView))
                {
                    session.Dismiss();
                }
            }
        }
示例#9
0
        void TextView_MouseHover(object sender, MouseHoverEventArgs e)
        {
            var pos = e.TextPosition.GetPoint(textView.TextBuffer, PositionAffinity.Successor);

            if (pos == null)
            {
                return;
            }
            var sessions = quickInfoBroker.GetSessions(textView);

            foreach (var session in sessions)
            {
                if (Intersects(session.ApplicableToSpan, pos.Value))
                {
                    return;
                }
                if ((session as IQuickInfoSession2)?.HasInteractiveContent == true)
                {
                    foreach (var o in session.QuickInfoContent)
                    {
                        var io = o as IInteractiveQuickInfoContent;
                        if (io == null)
                        {
                            continue;
                        }
                        if (io.KeepQuickInfoOpen || io.IsMouseOverAggregated)
                        {
                            return;
                        }
                    }
                }
            }
            foreach (var session in sessions)
            {
                session.Dismiss();
            }
            var triggerPoint = pos.Value.Snapshot.CreateTrackingPoint(pos.Value.Position, PointTrackingMode.Negative);

            quickInfoBroker.TriggerQuickInfo(textView, triggerPoint, trackMouse: true);
        }
        private void TriggerSession()
        {
            if (_session == null || _session.IsDismissed)
            {
                if (_quickInfoBroker.IsQuickInfoActive(_view))
                {
                    _quickInfoBroker.GetSessions(_view)[0].Dismiss();
                }

                ThreadHelper.JoinableTaskFactory.StartOnIdle(
                    () =>
                {
                    _session = _signaturehelpBroker.TriggerSignatureHelp(_view);
                    if (_session != null)
                    {
                        _session.Match();
                    }

                    return(Task.CompletedTask);
                },
                    VsTaskRunContext.UIThreadNormalPriority);
            }
        }
示例#11
0
 public IReadOnlyList <IEditorIntellisenseSession> GetSessions(IEditorView view)
 => _quickInfoBroker.GetSessions(view.As <ITextView>())
 .Select(s => s.ToEditorIntellisenseSession())
 .ExcludeDefault()
 .ToList();