AvalonStudio.Controls.IntellisenseManager.UpdateFilter C# (CSharp) Method

UpdateFilter() private method

private UpdateFilter ( int caretIndex ) : void
caretIndex int
return void
        private void UpdateFilter(int caretIndex)
        {
            if (caretIndex > intellisenseStartedAt)
            {
                Dispatcher.UIThread.InvokeTaskAsync(() =>
                {
                    currentFilter = editor.TextDocument.GetText(intellisenseStartedAt, caretIndex - intellisenseStartedAt).Replace(".", string.Empty);
                }).Wait();
            }
            else
            {
                currentFilter = string.Empty;
            }

            CompletionDataViewModel suggestion = null;

            var filteredResults = unfilteredCompletions as IEnumerable<CompletionDataViewModel>;

            if (currentFilter != string.Empty)
            {
                filteredResults = unfilteredCompletions.Where(c => c != null && c.Title.ToLower().Contains(currentFilter.ToLower()));

                IEnumerable<CompletionDataViewModel> newSelectedCompletions = null;

                newSelectedCompletions = filteredResults.Where(s => s.Title.StartsWith(currentFilter));
                // try find exact match case sensitive

                if (newSelectedCompletions.Count() == 0)
                {
                    newSelectedCompletions = filteredResults.Where(s => s.Title.ToLower().StartsWith(currentFilter.ToLower()));
                    // try find non-case sensitve match
                }

                if (newSelectedCompletions.Count() == 0)
                {
                    suggestion = noSelectedCompletion;
                }
                else
                {
                    var newSelectedCompletion = newSelectedCompletions.FirstOrDefault();

                    suggestion = newSelectedCompletion;
                }
            }
            else
            {
                suggestion = noSelectedCompletion;
            }

            if (filteredResults?.Count() > 0)
            {
                if (filteredResults?.Count() == 1 && filteredResults.First().Title == currentFilter)
                {
                    CloseIntellisense();
                }
                else
                {
                    var list = filteredResults.ToList();

                    Dispatcher.UIThread.InvokeTaskAsync(() =>
                    {
                        intellisenseControl.CompletionData = null;
                        intellisenseControl.CompletionData = list;
                        intellisenseControl.SelectedCompletion = suggestion;
                        intellisenseControl.IsVisible = true;
                    }).Wait();
                }
            }
            else
            {
                Dispatcher.UIThread.InvokeTaskAsync(() =>
                {
                    intellisenseControl.SelectedCompletion = noSelectedCompletion;
                });
            }
        }