Ejemplo n.º 1
0
        private bool TriggerSignatureHelp()
        {
            //the caret must be in a non-projection location
            SnapshotPoint?caretPoint = TextView.Caret.Position.Point.GetPoint(
                textBuffer => (!textBuffer.ContentType.IsOfType("projection")),
                PositionAffinity.Predecessor);

            if (!caretPoint.HasValue)
            {
                return(false);
            }

            var currentDispatcher = Dispatcher.CurrentDispatcher;
            var newSession        = Provider.SignatureHelpBroker.CreateSignatureHelpSession(
                TextView,
                caretPoint.Value.Snapshot.CreateTrackingPoint(caretPoint.Value.Position, PointTrackingMode.Positive),
                true);
            JavaSignatureHelpSessionSignatures precomputedSignatures = new JavaSignatureHelpSessionSignatures(Provider, caretPoint.Value.Snapshot.TextBuffer);

            precomputedSignatures.CollectSignatureLists(newSession).ContinueWith((System.Threading.Tasks.Task t) =>
            {
                // Only attempt to start a ParamHelp operation if we have results to show and the session wasn't dismissed while doing work on the background
                if (precomputedSignatures.Signatures != null && precomputedSignatures.Signatures.Count() != 0 && !newSession.IsDismissed)
                {
                    newSession.Properties.AddProperty(typeof(JavaSignatureHelpSessionSignatures), precomputedSignatures);
                    currentDispatcher.Invoke(() =>
                    {
                        newSession.Start();
                        newSession.Dismissed += SignatureSession_Dismissed;
                        SignatureSession      = newSession;
                    });
                }
            });
            return(true);
        }
Ejemplo n.º 2
0
        private bool TriggerSignatureHelp()
        {
            //the caret must be in a non-projection location 
            SnapshotPoint? caretPoint = TextView.Caret.Position.Point.GetPoint(
                                            textBuffer => (!textBuffer.ContentType.IsOfType("projection")),
                                            PositionAffinity.Predecessor);
            if (!caretPoint.HasValue)
            {
                return false;
            }

            var currentDispatcher = Dispatcher.CurrentDispatcher;
            var newSession = Provider.SignatureHelpBroker.CreateSignatureHelpSession(
                                TextView, 
                                caretPoint.Value.Snapshot.CreateTrackingPoint(caretPoint.Value.Position, PointTrackingMode.Positive), 
                                true);
            JavaSignatureHelpSessionSignatures precomputedSignatures = new JavaSignatureHelpSessionSignatures(Provider, caretPoint.Value.Snapshot.TextBuffer);
            precomputedSignatures.CollectSignatureLists(newSession).ContinueWith((System.Threading.Tasks.Task t) =>
            {
                // Only attempt to start a ParamHelp operation if we have results to show and the session wasn't dismissed while doing work on the background
                if (precomputedSignatures.Signatures != null && precomputedSignatures.Signatures.Count() != 0 && !newSession.IsDismissed)
                {
                    newSession.Properties.AddProperty(typeof(JavaSignatureHelpSessionSignatures), precomputedSignatures);
                    currentDispatcher.Invoke(() =>
                    {
                        newSession.Start();
                        newSession.Dismissed += SignatureSession_Dismissed;
                        SignatureSession = newSession;
                    });
                }
            });
            return true;
        }