[gnome-builder/wip/chergert/clang] text-iter: add checks for comment/string
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/chergert/clang] text-iter: add checks for comment/string
- Date: Wed, 2 May 2018 06:49:19 +0000 (UTC)
commit 907c310a6f27fd2b56ebc917c5630c95756dd1b8
Author: Christian Hergert <chergert redhat com>
Date: Tue May 1 17:17:47 2018 -0700
text-iter: add checks for comment/string
We don't want to pretend to have a symbol if we're in a comment or string
where that isn't allowed.
In the future, we might want to allow for interpolated strings, but we
should address that in per-language completion providers.
src/libide/sourceview/ide-text-iter.c | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
---
diff --git a/src/libide/sourceview/ide-text-iter.c b/src/libide/sourceview/ide-text-iter.c
index c63b3f217..beaabe81d 100644
--- a/src/libide/sourceview/ide-text-iter.c
+++ b/src/libide/sourceview/ide-text-iter.c
@@ -21,9 +21,9 @@
#include "config.h"
#include <dazzle.h>
-#include <string.h>
-
#include <gtk/gtk.h>
+#include <gtksourceview/gtksource.h>
+#include <string.h>
#include "ide-debug.h"
@@ -938,6 +938,7 @@ is_symbol_char (gunichar ch)
gchar *
_ide_text_iter_current_symbol (const GtkTextIter *iter)
{
+ GtkTextBuffer *buffer;
GtkTextIter end = *iter;
GtkTextIter begin = *iter;
gunichar ch = 0;
@@ -953,5 +954,21 @@ _ide_text_iter_current_symbol (const GtkTextIter *iter)
if (ch && !is_symbol_char (ch))
gtk_text_iter_forward_char (&begin);
+ buffer = gtk_text_iter_get_buffer (iter);
+
+ if (GTK_SOURCE_IS_BUFFER (buffer))
+ {
+ GtkSourceBuffer *gsb = GTK_SOURCE_BUFFER (buffer);
+
+ if (gtk_source_buffer_iter_has_context_class (gsb, &begin, "comment") ||
+ gtk_source_buffer_iter_has_context_class (gsb, &begin, "string") ||
+ gtk_source_buffer_iter_has_context_class (gsb, &end, "comment") ||
+ gtk_source_buffer_iter_has_context_class (gsb, &end, "string"))
+ return NULL;
+ }
+
+ if (gtk_text_iter_equal (&begin, &end))
+ return NULL;
+
return gtk_text_iter_get_slice (&begin, &end);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]