[gnome-builder/gnome-builder-3-28] code-index: include files that have empty entries



commit f3d20cf7e67200a391a94a8e46aaf5da0db74e7e
Author: Christian Hergert <chergert redhat com>
Date:   Thu May 24 13:56:34 2018 -0700

    code-index: include files that have empty entries
    
    We want to increase the chance we have n_files match, so insert the record
    for the file.

 src/plugins/code-index/ide-code-index-builder.c | 26 ++++++++++++++++++-------
 1 file changed, 19 insertions(+), 7 deletions(-)
---
diff --git a/src/plugins/code-index/ide-code-index-builder.c b/src/plugins/code-index/ide-code-index-builder.c
index 75a6f8208..c8563e75a 100644
--- a/src/plugins/code-index/ide-code-index-builder.c
+++ b/src/plugins/code-index/ide-code-index-builder.c
@@ -96,6 +96,7 @@ typedef struct
   IdePersistentMapBuilder *map_builder;
   DzlFuzzyIndexBuilder    *fuzzy_builder;
   guint32                  file_id;
+  guint                    has_called : 1;
 } AddEntriesData;
 
 enum {
@@ -950,14 +951,22 @@ add_entries_to_index_next_entries_cb (GObject      *object,
       return;
     }
 
-  if (ret == NULL || ret->len == 0)
+  g_assert (ret != NULL);
+
+  cancellable = ide_task_get_cancellable (task);
+  task_data = ide_task_get_task_data (task);
+
+  /*
+   * Make sure that we at least insert the result set once, but ignore the
+   * follow up call if it has 0 results.
+   */
+  if (ret->len == 0 && task_data->has_called)
     {
       ide_task_return_boolean (task, TRUE);
       return;
     }
 
-  cancellable = ide_task_get_cancellable (task);
-  task_data = ide_task_get_task_data (task);
+  task_data->has_called = TRUE;
 
   g_assert (task_data != NULL);
   g_assert (IDE_IS_CODE_INDEX_ENTRIES (task_data->entries));
@@ -973,10 +982,13 @@ add_entries_to_index_next_entries_cb (GObject      *object,
                         task_data->map_builder,
                         task_data->fuzzy_builder);
 
-  ide_code_index_entries_next_entries_async (entries,
-                                             cancellable,
-                                             add_entries_to_index_next_entries_cb,
-                                             g_steal_pointer (&task));
+  if (ret->len > 0)
+    ide_code_index_entries_next_entries_async (entries,
+                                               cancellable,
+                                               add_entries_to_index_next_entries_cb,
+                                               g_steal_pointer (&task));
+  else
+    ide_task_return_boolean (task, TRUE);
 }
 
 static void


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