[gnome-builder/wip/libide-merge] add colorscheme autocompletion
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder/wip/libide-merge] add colorscheme autocompletion
- Date: Sat, 21 Mar 2015 23:15:43 +0000 (UTC)
commit 4a532b00a8e7418a36befb24e28e33b6e459f0be
Author: Christian Hergert <christian hergert me>
Date: Sat Mar 21 16:10:52 2015 -0700
add colorscheme autocompletion
src/vim/gb-vim.c | 49 ++++++++++++++++++++++++++++++++++++++++++++++++-
1 files changed, 48 insertions(+), 1 deletions(-)
---
diff --git a/src/vim/gb-vim.c b/src/vim/gb-vim.c
index 19e7a07..3d01102 100644
--- a/src/vim/gb-vim.c
+++ b/src/vim/gb-vim.c
@@ -368,10 +368,13 @@ gb_vim_command_colorscheme (GtkSourceView *source_view,
GtkSourceStyleSchemeManager *manager;
GtkSourceStyleScheme *style_scheme;
GtkTextBuffer *buffer;
+ g_autofree gchar *trimmed = NULL;
+
+ trimmed = g_strstrip (g_strdup (options));
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (source_view));
manager = gtk_source_style_scheme_manager_get_default ();
- style_scheme = gtk_source_style_scheme_manager_get_scheme (manager, options);
+ style_scheme = gtk_source_style_scheme_manager_get_scheme (manager, trimmed);
if (style_scheme == NULL)
{
@@ -832,6 +835,48 @@ gb_vim_complete_edit (GtkSourceView *source_view,
g_strfreev (parts);
}
+static void
+gb_vim_complete_colorscheme (const gchar *line,
+ GPtrArray *ar)
+{
+ GtkSourceStyleSchemeManager *manager;
+ const gchar * const *scheme_ids;
+ const gchar *tmp;
+ g_autofree gchar *prefix = NULL;
+ gsize i;
+
+ manager = gtk_source_style_scheme_manager_get_default ();
+ scheme_ids = gtk_source_style_scheme_manager_get_scheme_ids (manager);
+
+ tmp = strchr (line, ' ');
+
+ for (tmp = strchr (line, ' ');
+ tmp && *tmp && g_unichar_isspace (g_utf8_get_char (tmp));
+ tmp = g_utf8_next_char (tmp))
+ {
+ /* do nothing */
+ }
+
+ if (!tmp)
+ return;
+
+ prefix = g_strndup (line, tmp - line);
+
+ for (i = 0; scheme_ids [i]; i++)
+ {
+ const gchar *scheme_id = scheme_ids [i];
+
+ if (g_str_has_prefix (scheme_id, tmp))
+ {
+ gchar *item;
+
+ item = g_strdup_printf ("%s%s", prefix, scheme_id);
+ IDE_TRACE_MSG ("colorscheme: %s", item);
+ g_ptr_array_add (ar, item);
+ }
+ }
+}
+
gchar **
gb_vim_complete (GtkSourceView *source_view,
const gchar *line)
@@ -846,6 +891,8 @@ gb_vim_complete (GtkSourceView *source_view,
gb_vim_complete_set (line, ar);
else if (g_str_has_prefix (line, "e ") || g_str_has_prefix (line, "edit "))
gb_vim_complete_edit (source_view, line, ar);
+ else if (g_str_has_prefix (line, "colorscheme "))
+ gb_vim_complete_colorscheme (line, ar);
else
gb_vim_complete_command (line, ar);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]