Пример #1
0
        public override void Filter()
        {
            try {
                var text = ApplicableTo.GetText(ApplicableTo.TextBuffer.CurrentSnapshot);
                text = text.TrimStart('.').Trim(' ');

                //if (IsNullOrWhiteSpace(text)) {
                //    _session.Dismiss();
                //    return;
                //}

                var orderedByDistance = _items.Where(c => ContainsAllSymbols(text, c.InsertionText))
                                        .OfType <MyCompletion>()
                                        .OrderBy(c => {
                    var distance = GetSymbolDistance(c, text);
                    c.OrderIndex = distance;
                    return(distance);
                })
                                        .Distinct(new CompletionEqualityComparer());

                var zeroIndex  = new List <Completion>();
                var properties = new List <Completion>();
                var nodes      = new List <Completion>();
                var other      = new List <Completion>();

                foreach (var item in orderedByDistance)
                {
                    if (item.OrderIndex == 0)
                    {
                        zeroIndex.Add(item);
                    }
                    else if (item.CompletionType == CompletionType.Property)
                    {
                        properties.Add(item);
                    }
                    else if (item.CompletionType == CompletionType.Node)
                    {
                        nodes.Add(item);
                    }
                    else
                    {
                        other.Add(item);
                    }
                }

                WritableCompletions.Clear();
                WritableCompletions.AddRange(zeroIndex.Concat(properties)
                                             .Concat(nodes)
                                             .Concat(other)
                                             .ToList());

                if (WritableCompletions.Count > 0)
                {
                    SelectionStatus = new CompletionSelectionStatus(WritableCompletions[0], true, true);
                }
            } catch (Exception e) {
                Debug.WriteLine("Filter failed");
                Debug.WriteLine(e.ToString());
            }
        }
Пример #2
0
 private void UpdateCompletions(IEnumerable <CompletionItem> items)
 {
     WritableCompletions.BeginBulkOperation();
     try
     {
         WritableCompletions.Clear();
         WritableCompletions.AddRange(ToCompletions(items));
     }
     finally
     {
         WritableCompletions.EndBulkOperation();
     }
 }
Пример #3
0
        private void CreateNormalCompletionListItems(IList <RoslynCompletionItem> completionItems)
        {
            try
            {
                WritableCompletions.BeginBulkOperation();
                WritableCompletions.Clear();

                foreach (var item in completionItems)
                {
                    var completionItem = GetVSCompletion(item);
                    WritableCompletions.Add(completionItem);
                }
            }
            finally
            {
                WritableCompletions.EndBulkOperation();
            }
        }
Пример #4
0
        public override void SelectBestMatch()
        {
            ITextSnapshot snapshot  = ApplicableTo.TextBuffer.CurrentSnapshot;
            string        typedText = ApplicableTo.GetText(snapshot);

            if (string.IsNullOrWhiteSpace(typedText))
            {
                if (this.WritableCompletions.Any())
                {
                    SelectionStatus = new CompletionSelectionStatus(WritableCompletions.First(), true, true);
                }

                return;
            }

            foreach (CrmCompletion comp in WritableCompletions)
            {
                if (comp.IsMatch(typedText))
                {
                    SelectionStatus = new CompletionSelectionStatus(comp, true, true);
                    return;
                }
            }
        }
Пример #5
0
        public override void SelectBestMatch()
        {
            ITextSnapshot snapshot  = ApplicableTo.TextBuffer.CurrentSnapshot;
            string        typedText = ApplicableTo.GetText(snapshot);

            if (string.IsNullOrWhiteSpace(typedText))
            {
                if (this.WritableCompletions.Any())
                {
                    SelectionStatus = new CompletionSelectionStatus(WritableCompletions.First(), true, true);
                }

                return;
            }

            foreach (Completion comp in WritableCompletions)
            {
                if (comp.DisplayText.IndexOf(typedText, StringComparison.InvariantCultureIgnoreCase) > -1)
                {
                    SelectionStatus = new CompletionSelectionStatus(comp, true, true);
                    return;
                }
            }
        }