From 6a3bb9ed7ee1885361825b0dc47ef0e838866a4c Mon Sep 17 00:00:00 2001 From: Matt Ellis Date: Wed, 15 Apr 2015 15:55:26 +0100 Subject: [PATCH] Tweaked sorting Prefers ng- over data-ng- and x-ng- --- .../AbbreviatedItemsProvider.cs | 25 ++++++ ...msOnDoubleCompletionWithNoPrefix.html.gold | 86 +++++++++---------- ...temsOnDoubleCompletionWithPrefix.html.gold | 18 ++-- ...hPatternNotIncludingAbbreviation.html.gold | 4 +- 4 files changed, 79 insertions(+), 54 deletions(-) diff --git a/src/resharper-angularjs/Feature/Services/CodeCompletion/AbbreviatedItemsProvider.cs b/src/resharper-angularjs/Feature/Services/CodeCompletion/AbbreviatedItemsProvider.cs index c25c055..101ad4e 100644 --- a/src/resharper-angularjs/Feature/Services/CodeCompletion/AbbreviatedItemsProvider.cs +++ b/src/resharper-angularjs/Feature/Services/CodeCompletion/AbbreviatedItemsProvider.cs @@ -288,9 +288,30 @@ private static void AddItem(string abbreviation, string name, IDeclaredElement d var item = new WrappedDynamicLookupItem(context.CreateDeclaredElementLookupItem(name, declaredElement)); item.PutData(IdentityKey, IdentityObject); item.PutData(BaseDynamicRule.PrefixKey, abbreviation); + SortItem(item, abbreviation, name); collector.Add(item); } + private static void SortItem(ILookupItem item, string abbreviation, string name) + { + // The tilde pushes us to the bottom of the list, lexicographically, then + // order by ng- first, then data-ng-, then x-ng- + switch (abbreviation) + { + case "ng-": + item.Placement.OrderString = "~0" + name; + break; + + case "data-ng-": + item.Placement.OrderString = "~1" + name; + break; + + case "x-ng-": + item.Placement.OrderString = "~2" + name; + break; + } + } + private static void AddAllAbbreviations(HtmlCodeCompletionContext context, GroupedItemsCollector collector) { @@ -309,6 +330,10 @@ private static AbbreviatedTextLookupItem CreateAbbreviatedLookupItem(string text { var item = new AbbreviatedTextLookupItem(text, context); item.InitializeRanges(ranges, context); + + // We're a HTML item too, sort us in with the other HTML items + item.Placement.Relevance |= (long) HtmlLookupItemRelevance.Item; + item.Placement.OrderString = text; return item; } diff --git a/test/data/CodeCompletion/Double/List/ShowAllItemsOnDoubleCompletionWithNoPrefix.html.gold b/test/data/CodeCompletion/Double/List/ShowAllItemsOnDoubleCompletionWithNoPrefix.html.gold index 42f17c7..6937648 100644 --- a/test/data/CodeCompletion/Double/List/ShowAllItemsOnDoubleCompletionWithNoPrefix.html.gold +++ b/test/data/CodeCompletion/Double/List/ShowAllItemsOnDoubleCompletionWithNoPrefix.html.gold @@ -1,48 +1,5 @@ # 131 ITEMS # -+ data-ng-app -+ data-ng-bind -+ data-ng-bind-html -+ data-ng-bind-html-unsafe -+ data-ng-bind-template -+ data-ng-change -+ data-ng-checked -+ data-ng-class -+ data-ng-class-even -+ data-ng-class-odd -+ data-ng-click -+ data-ng-cloak -+ data-ng-controller -+ data-ng-csp -+ data-ng-dblclick -+ data-ng-disabled -+ data-ng-form -+ data-ng-hide -+ data-ng-href -+ data-ng-if -+ data-ng-include -+ data-ng-init -+ data-ng-list -+ data-ng-model -+ data-ng-mousedown -+ data-ng-mouseenter -+ data-ng-mouseleave -+ data-ng-mousemove -+ data-ng-mouseover -+ data-ng-mouseup -+ data-ng-multiple -+ data-ng-non-bindable -+ data-ng-pluralize -+ data-ng-readonly -+ data-ng-repeat -+ data-ng-selected -+ data-ng-show -+ data-ng-src -+ data-ng-style -+ data-ng-submit -+ data-ng-switch -+ data-ng-transclude -+ data-ng-view + ng-app + ng-bind + ng-bind-html @@ -87,6 +44,49 @@ + ng-switch + ng-transclude + ng-view ++ data-ng-app ++ data-ng-bind ++ data-ng-bind-html ++ data-ng-bind-html-unsafe ++ data-ng-bind-template ++ data-ng-change ++ data-ng-checked ++ data-ng-class ++ data-ng-class-even ++ data-ng-class-odd ++ data-ng-click ++ data-ng-cloak ++ data-ng-controller ++ data-ng-csp ++ data-ng-dblclick ++ data-ng-disabled ++ data-ng-form ++ data-ng-hide ++ data-ng-href ++ data-ng-if ++ data-ng-include ++ data-ng-init ++ data-ng-list ++ data-ng-model ++ data-ng-mousedown ++ data-ng-mouseenter ++ data-ng-mouseleave ++ data-ng-mousemove ++ data-ng-mouseover ++ data-ng-mouseup ++ data-ng-multiple ++ data-ng-non-bindable ++ data-ng-pluralize ++ data-ng-readonly ++ data-ng-repeat ++ data-ng-selected ++ data-ng-show ++ data-ng-src ++ data-ng-style ++ data-ng-submit ++ data-ng-switch ++ data-ng-transclude ++ data-ng-view + x-ng-app + x-ng-bind + x-ng-bind-html diff --git a/test/data/CodeCompletion/Double/List/ShowMatchingItemsOnDoubleCompletionWithPrefix.html.gold b/test/data/CodeCompletion/Double/List/ShowMatchingItemsOnDoubleCompletionWithPrefix.html.gold index 90f73fd..5eaafdd 100644 --- a/test/data/CodeCompletion/Double/List/ShowMatchingItemsOnDoubleCompletionWithPrefix.html.gold +++ b/test/data/CodeCompletion/Double/List/ShowMatchingItemsOnDoubleCompletionWithPrefix.html.gold @@ -1,14 +1,5 @@ # 27 ITEMS # -data-ng-change -data-ng-checked -data-ng-class -data-ng-class-even -data-ng-class-odd -data-ng-click -data-ng-cloak -data-ng-controller -data-ng-csp + ng-change + ng-checked + ng-class @@ -18,6 +9,15 @@ data-ng-csp + ng-cloak + ng-controller + ng-csp +data-ng-change +data-ng-checked +data-ng-class +data-ng-class-even +data-ng-class-odd +data-ng-click +data-ng-cloak +data-ng-controller +data-ng-csp x-ng-change x-ng-checked x-ng-class diff --git a/test/data/CodeCompletion/List/ShowItemsWithPatternNotIncludingAbbreviation.html.gold b/test/data/CodeCompletion/List/ShowItemsWithPatternNotIncludingAbbreviation.html.gold index cf9f9c6..1ab1d30 100644 --- a/test/data/CodeCompletion/List/ShowItemsWithPatternNotIncludingAbbreviation.html.gold +++ b/test/data/CodeCompletion/List/ShowItemsWithPatternNotIncludingAbbreviation.html.gold @@ -1,5 +1,5 @@ # 3 ITEMS # -+ data-ng-controller -ng-controller ++ ng-controller +data-ng-controller x-ng-controller