public async Task <CompletionResult> GetCompletionData(int position, char?triggerChar) { IList <ICompletionDataEx> completionData = null; IOverloadProvider overloadProvider = null; bool?isCompletion = null; if (triggerChar != null) { var isSignatureHelp = await _interactiveManager.IsSignatureHelpTriggerCharacter(position - 1).ConfigureAwait(false); if (isSignatureHelp) { var signatureHelp = await _interactiveManager.GetSignatureHelp( new SignatureHelpTriggerInfo(SignatureHelpTriggerReason.TypeCharCommand, triggerChar.Value), position) .ConfigureAwait(false); if (signatureHelp != null) { overloadProvider = new RoslynOverloadProvider(signatureHelp); } } else { isCompletion = await _interactiveManager.IsCompletionTriggerCharacter(position - 1).ConfigureAwait(false); } } if (overloadProvider == null && isCompletion != false) { var items = await _interactiveManager.GetCompletion( triggerChar != null ?CompletionTriggerInfo.CreateTypeCharTriggerInfo(triggerChar.Value) : CompletionTriggerInfo.CreateInvokeCompletionTriggerInfo(), position).ConfigureAwait(false); completionData = items.Select(item => new AvalonEditCompletionData(item)).ToArray <ICompletionDataEx>(); } return(new CompletionResult(completionData, overloadProvider)); }