[gnome-builder] clang-completion: fallback to strcmp for matching priorities



commit ddc18259d08657d01ed7d6e0f870d544e02be89f
Author: Christian Hergert <chergert redhat com>
Date:   Mon Nov 7 13:04:37 2016 -0800

    clang-completion: fallback to strcmp for matching priorities
    
    It is very weird when the completion results change ordering. So we want
    to keep the same ordering. For simplicity sake, just use strcmp() for
    this.
    
    However, we do want to improve the scoring engine so this is less likely
    to occur.
    
    Note that result set as we receive it from Clang are in no sorted order.
    That result set order can change on every query, so stable sort on our
    side is not enough to provide consistent ordering to the user.

 plugins/clang/ide-clang-completion-provider.c |   11 ++++++++---
 1 files changed, 8 insertions(+), 3 deletions(-)
---
diff --git a/plugins/clang/ide-clang-completion-provider.c b/plugins/clang/ide-clang-completion-provider.c
index 34cf76e..d31cdaa 100644
--- a/plugins/clang/ide-clang-completion-provider.c
+++ b/plugins/clang/ide-clang-completion-provider.c
@@ -95,14 +95,19 @@ static gint
 sort_by_priority (gconstpointer a,
                   gconstpointer b)
 {
-  IdeClangCompletionItem *itema = (IdeClangCompletionItem *)a;
-  IdeClangCompletionItem *itemb = (IdeClangCompletionItem *)b;
+  const IdeClangCompletionItem *itema = (const IdeClangCompletionItem *)a;
+  const IdeClangCompletionItem *itemb = (const IdeClangCompletionItem *)b;
 
   if (itema->priority < itemb->priority)
     return -1;
   else if (itema->priority > itemb->priority)
     return 1;
-  return 0;
+
+  /* If the item is in the result set here, we should have a valid
+   * typed_text field because we already scored the completion item.
+   */
+
+  return g_strcmp0 (itema->typed_text, itemb->typed_text);
 }
 
 static void


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]