private void UpdateModel(CompletionModel model) { ApplicableTo = ToTrackingSpan(model.ApplicableSpan); var builders = model.Items.Where(item => item.IsBuilder); UpdateBuilders(builders); var completions = model.Items.Where(item1 => !item1.IsBuilder); UpdateCompletions(completions); }
private async void UpdateModel() { // UpdateModel is always called on the UI thread. _cancellationTokenSource?.Cancel(); _cancellationTokenSource = new CancellationTokenSource(); var token = _cancellationTokenSource.Token; var snapshot = _textView.TextSnapshot; var triggerPosition = _textView.GetPosition(snapshot); if (triggerPosition == null) { return; } CompletionModel model = null; try { SemanticModel semanticModel = null; if (!await Task.Run(() => snapshot.TryGetSemanticModel(token, out semanticModel), token)) { return; } await Task.Run(() => model = semanticModel.GetCompletionModel(triggerPosition.Value, snapshot, _completionProviderService.Providers, token), token); } catch (OperationCanceledException) { return; } // Let observers know that we've a new model. Model = model; }