diff --git a/plugins/ctags/ide-ctags-completion-provider.c b/plugins/ctags/ide-ctags-completion-provider.c
index fc6e1e9..48b2266 100644
--- a/plugins/ctags/ide-ctags-completion-provider.c
+++ b/plugins/ctags/ide-ctags-completion-provider.c
@@ -174,6 +174,7 @@ ide_ctags_completion_provider_populate (GtkSourceCompletionProvider *provider,
   gint word_len;
   guint i;
   guint j;
+  GHashTable *completions;
 
   IDE_ENTRY;
 
@@ -202,13 +203,14 @@ ide_ctags_completion_provider_populate (GtkSourceCompletionProvider *provider,
   casefold = g_utf8_casefold (self->current_word, -1);
 
   self->results = ide_completion_results_new (self->current_word);
+  
+  completions = g_hash_table_new (g_str_hash, g_str_equal);
 
   for (i = 0; i < self->indexes->len; i++)
     {
       g_autofree gchar *copy = g_strdup (self->current_word);
       IdeCtagsIndex *index = g_ptr_array_index (self->indexes, i);
       const IdeCtagsIndexEntry *entries = NULL;
-      const gchar *last_name = NULL;
       guint tmp_len = word_len;
       gsize n_entries = 0;
       gchar gdata_key[64];
@@ -235,10 +237,10 @@ ide_ctags_completion_provider_populate (GtkSourceCompletionProvider *provider,
           const IdeCtagsIndexEntry *entry = &entries [j];
           IdeCtagsCompletionItem *item;
 
-          if (ide_str_equal0 (entry->name, last_name))
+          if (g_hash_table_contains (completions, entry->name))
             continue;
 
-          last_name = entry->name;
+          g_hash_table_add (completions, entry->name);
 
           if (!ide_ctags_is_allowed (entry, allowed))
             continue;
