[gnome-builder/gnome-builder-3-18] libide: add some libide helpers for completion providers
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/gnome-builder-3-18] libide: add some libide helpers for completion providers
- Date: Tue, 13 Oct 2015 07:27:57 +0000 (UTC)
commit b95b63a9d759769e8ce1b78f79640af3406c3cbd
Author: Christian Hergert <christian hergert me>
Date: Mon Sep 28 06:18:42 2015 -0700
libide: add some libide helpers for completion providers
libide/ide-completion-provider.c | 53 ++++++++++++++++++++++++++++++++++++++
libide/ide-completion-provider.h | 5 +++-
2 files changed, 57 insertions(+), 1 deletions(-)
---
diff --git a/libide/ide-completion-provider.c b/libide/ide-completion-provider.c
index a7fc324..c25636a 100644
--- a/libide/ide-completion-provider.c
+++ b/libide/ide-completion-provider.c
@@ -33,3 +33,56 @@ ide_completion_provider_default_init (IdeCompletionProviderInterface *iface)
IDE_TYPE_CONTEXT,
(G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY |
G_PARAM_STATIC_STRINGS)));
}
+
+gboolean
+ide_completion_provider_context_in_comment (GtkSourceCompletionContext *context)
+{
+ GtkTextIter iter;
+
+ g_return_val_if_fail (GTK_SOURCE_IS_COMPLETION_CONTEXT (context), FALSE);
+
+ if (gtk_source_completion_context_get_iter (context, &iter))
+ {
+ GtkSourceBuffer *buffer = GTK_SOURCE_BUFFER (gtk_text_iter_get_buffer (&iter));
+
+ if (gtk_source_buffer_iter_has_context_class (buffer, &iter, "comment"))
+ return TRUE;
+
+ if (!gtk_text_iter_starts_line (&iter))
+ {
+ gtk_text_iter_backward_char (&iter);
+ if (gtk_source_buffer_iter_has_context_class (buffer, &iter, "comment"))
+ return TRUE;
+ }
+ }
+
+ return FALSE;
+}
+
+gchar *
+ide_completion_provider_context_current_word (GtkSourceCompletionContext *context)
+{
+ GtkTextIter end;
+ GtkTextIter begin;
+ gunichar ch = 0;
+
+ g_return_val_if_fail (GTK_SOURCE_IS_COMPLETION_CONTEXT (context), NULL);
+
+ if (!gtk_source_completion_context_get_iter (context, &end))
+ return NULL;
+
+ begin = end;
+
+ do
+ {
+ if (!gtk_text_iter_backward_char (&begin))
+ break;
+ ch = gtk_text_iter_get_char (&begin);
+ }
+ while (g_unichar_isalnum (ch) || (ch == '_'));
+
+ if (ch && !g_unichar_isalnum (ch) && (ch != '_'))
+ gtk_text_iter_forward_char (&begin);
+
+ return gtk_text_iter_get_slice (&begin, &end);
+}
diff --git a/libide/ide-completion-provider.h b/libide/ide-completion-provider.h
index 4d99397..3fbdea0 100644
--- a/libide/ide-completion-provider.h
+++ b/libide/ide-completion-provider.h
@@ -37,11 +37,14 @@ struct _IdeCompletionProviderInterface
{
GtkSourceCompletionProviderIface parent_interface;
+ /* Pacify Vala */
void (*set_context) (IdeCompletionProvider *self,
IdeContext *context);
};
-GType ide_completion_provider_get_type (void);
+GType ide_completion_provider_get_type (void);
+gboolean ide_completion_provider_context_in_comment (GtkSourceCompletionContext *context);
+gchar *ide_completion_provider_context_current_word (GtkSourceCompletionContext *context);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]