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); }
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; }