[gnome-builder] clang: remove suffix from clang completion



commit 9df019edb73ab1f2219ed3b6f6d7af34d615e97a
Author: Christian Hergert <chergert redhat com>
Date:   Sun Mar 14 16:38:01 2021 -0700

    clang: remove suffix from clang completion
    
    Ideally we'd do this at another layer.
    
    Fixes #1416

 src/plugins/clang/ide-clang-completion-provider.c | 29 +++++++++++++++++++++++
 1 file changed, 29 insertions(+)
---
diff --git a/src/plugins/clang/ide-clang-completion-provider.c 
b/src/plugins/clang/ide-clang-completion-provider.c
index 16e9c2a09..a2e645b8c 100644
--- a/src/plugins/clang/ide-clang-completion-provider.c
+++ b/src/plugins/clang/ide-clang-completion-provider.c
@@ -179,6 +179,35 @@ ide_clang_completion_provider_activate_proposal (IdeCompletionProvider *provider
 
   snippet = ide_clang_completion_item_get_snippet (item, file_settings);
 
+  /* Check the last snippet chunk and see if it matches our current
+   * position so we can omit it.
+   */
+  if (ide_snippet_get_n_chunks (snippet) > 0)
+    {
+      IdeSnippetChunk *chunk;
+      const gchar *text;
+      GtkTextIter limit;
+
+      chunk = ide_snippet_get_nth_chunk (snippet, ide_snippet_get_n_chunks (snippet) - 1);
+      text = ide_snippet_chunk_get_text (chunk);
+      limit = end;
+
+      if (text != NULL)
+        {
+          gtk_text_iter_forward_chars (&limit, g_utf8_strlen (text, -1));
+
+          if (gtk_text_iter_get_line (&limit) != gtk_text_iter_get_line (&end))
+            {
+              limit = end;
+              if (!gtk_text_iter_ends_line (&limit))
+                gtk_text_iter_forward_to_line_end (&limit);
+            }
+
+          ide_completion_remove_common_suffix (ide_completion_context_get_completion (context), &end, text);
+          begin = end;
+        }
+    }
+
   /*
    * If we are completing field or variable types, we might want to add
    * a . or -> to the snippet based on the input character.


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