private void OnTextEntered(object sender, TextCompositionEventArgs e) { if (CaretOffset <= 0) { return; } var isTrigger = _scriptManager.IsCompletionTriggerCharacter(CaretOffset - 1); if (!isTrigger) { return; } _completionWindow = new CompletionWindow(TextArea); var data = _completionWindow.CompletionList.CompletionData; var completion = _scriptManager.GetCompletion(CaretOffset, Text[CaretOffset - 1]).ToList(); if (!completion.Any()) { _completionWindow = null; return; } foreach (var completionData in completion) { data.Add(new CompletionData(completionData)); } _completionWindow.Show(); _completionWindow.Closed += (o, args) => _completionWindow = null; }