[gnome-builder] plugins/clang: don't auto insert ; unless necessary
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] plugins/clang: don't auto insert ; unless necessary
- Date: Fri, 22 Jul 2022 22:53:22 +0000 (UTC)
commit e84adbfdf59d246baf15dca87119f8cb1862b11f
Author: Christian Hergert <chergert redhat com>
Date: Fri Jul 22 15:53:16 2022 -0700
plugins/clang: don't auto insert ; unless necessary
src/plugins/clang/ide-clang-completion-provider.c | 28 ++++++++++++++++++++++-
1 file changed, 27 insertions(+), 1 deletion(-)
---
diff --git a/src/plugins/clang/ide-clang-completion-provider.c
b/src/plugins/clang/ide-clang-completion-provider.c
index f97697fd9..43c1ab68e 100644
--- a/src/plugins/clang/ide-clang-completion-provider.c
+++ b/src/plugins/clang/ide-clang-completion-provider.c
@@ -162,6 +162,31 @@ store_and_activate:
return TRUE;
}
+static gboolean
+ends_with_string (GtkSourceSnippet *snippet,
+ const char *string)
+{
+ const char *spec = "";
+ guint n_chunks;
+ int pos;
+
+ g_assert (GTK_SOURCE_IS_SNIPPET (snippet));
+
+ if (!(n_chunks = gtk_source_snippet_get_n_chunks (snippet)))
+ return FALSE;
+
+ pos = n_chunks - 1;
+
+ while (ide_str_empty0 (spec) && pos >= 0)
+ {
+ GtkSourceSnippetChunk *chunk = gtk_source_snippet_get_nth_chunk (snippet, pos);
+ spec = gtk_source_snippet_chunk_get_text (chunk);
+ pos--;
+ }
+
+ return g_str_has_suffix (spec, string);
+}
+
static void
ide_clang_completion_provider_activate (GtkSourceCompletionProvider *provider,
GtkSourceCompletionContext *context,
@@ -263,7 +288,8 @@ ide_clang_completion_provider_activate (GtkSourceCompletionProvider *provider,
}
}
- if (self->activation_keyval == GDK_KEY_semicolon)
+ if (self->activation_keyval == GDK_KEY_semicolon &&
+ !ends_with_string (snippet, ";"))
{
g_autoptr(GtkSourceSnippetChunk) chunk = gtk_source_snippet_chunk_new ();
gtk_source_snippet_chunk_set_spec (chunk, ";");
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]