private async void OnTextEntered(object sender, TextCompositionEventArgs e) { string keystring = string.Empty; keystring = e == null ? "" : e.Text; var position = Editor.CaretOffset; if (position > 0 && _interactiveManager.IsCompletionTriggerCharacter(position - 1)) { if (keystring != "(") { _completionWindow = new CompletionWindow(Editor.TextArea); _completionWindow.Opacity = 0.9; _completionWindow.WindowStyle = WindowStyle.None; _completionWindow.Width = 300; _completionWindow.Background = Brushes.Black; _completionWindow.BorderThickness = new Thickness(0); var data = _completionWindow.CompletionList.CompletionData; var completionDataList = await _interactiveManager.GetCompletionAsync(position, keystring); foreach (var completionData in completionDataList) { data.Add(new AvalonEditCompletionData(completionData)); } _completionWindow.Show(); _completionWindow.Closed += delegate { _completionWindow = null; }; } else if (keystring == "(" || keystring == ",") { _insightWindow = new RoslynEditorInsightWindow(Editor.TextArea); _insightWindow.Foreground = Brushes.WhiteSmoke; _insightWindow.Background = Brushes.Black; var items = _interactiveManager.GetInsightTip(Editor.CaretOffset); if (items != null && items.Count > 0) { _insightWindow.AddRangeItems(items); } _insightWindow.Show(); _insightWindow.Closed += delegate { _insightWindow = null; }; } } istypeset = false; }
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)); }