[gnome-builder] code-insight: create new gsettings schema for code-insight



commit 364757632effb345f88cae618f289c1d950a5150
Author: Christian Hergert <christian hergert me>
Date:   Sat May 16 03:07:28 2015 -0700

    code-insight: create new gsettings schema for code-insight
    
    This is where things like autocompletion and semantic highlighting should
    live. Some, more specific language stuff might get moved around as well.

 data/gsettings/Makefile.am                         |    2 +-
 .../org.gnome.builder.code-insight.gschema.xml     |   19 +++++++++++++++
 .../gsettings/org.gnome.builder.editor.gschema.xml |    5 ----
 .../org.gnome.builder.experimental.gschema.xml     |   14 -----------
 data/ui/gb-preferences-page-insight.ui             |   13 ++++------
 libide/c/ide-c-language.c                          |   13 +---------
 libide/clang/ide-clang-completion-provider.c       |   25 +++++++++++++++++--
 libide/ctags/ide-ctags-completion-provider.c       |    2 +-
 po/POTFILES.in                                     |    6 ++--
 src/editor/gb-editor-frame.c                       |    5 +++-
 10 files changed, 56 insertions(+), 48 deletions(-)
---
diff --git a/data/gsettings/Makefile.am b/data/gsettings/Makefile.am
index fc35210..2b9a442 100644
--- a/data/gsettings/Makefile.am
+++ b/data/gsettings/Makefile.am
@@ -2,7 +2,7 @@ gsettings_SCHEMAS = \
        org.gnome.builder.gschema.xml \
        org.gnome.builder.editor.gschema.xml \
        org.gnome.builder.editor.language.gschema.xml \
-       org.gnome.builder.experimental.gschema.xml \
+       org.gnome.builder.code-insight.gschema.xml \
        org.gnome.builder.project-tree.gschema.xml \
        $(NULL)
 
diff --git a/data/gsettings/org.gnome.builder.code-insight.gschema.xml 
b/data/gsettings/org.gnome.builder.code-insight.gschema.xml
new file mode 100644
index 0000000..7706af4
--- /dev/null
+++ b/data/gsettings/org.gnome.builder.code-insight.gschema.xml
@@ -0,0 +1,19 @@
+<schemalist>
+  <schema id="org.gnome.builder.code-insight" path="/org/gnome/builder/code-insight/" 
gettext-domain="gnome-builder">
+    <key name="clang-autocompletion" type="b">
+      <default>false</default>
+      <summary>Clang based autocompletion (Experimental)</summary>
+      <description>Use Clang for autocompletion in the C and C++ languages.</description>
+    </key>
+    <key name="ctags-autocompletion" type="b">
+      <default>true</default>
+      <summary>Ctags based autocompletion</summary>
+      <description>Use Ctags for autocompletion.</description>
+    </key>
+    <key name="word-completion" type="b">
+      <default>true</default>
+      <summary>Enable auto-completion of words in document</summary>
+      <description>If enabled, words within the current document will be available for 
auto-completion.</description>
+    </key>
+  </schema>
+</schemalist>
diff --git a/data/gsettings/org.gnome.builder.editor.gschema.xml 
b/data/gsettings/org.gnome.builder.editor.gschema.xml
index 9d2400d..83e0558 100644
--- a/data/gsettings/org.gnome.builder.editor.gschema.xml
+++ b/data/gsettings/org.gnome.builder.editor.gschema.xml
@@ -24,11 +24,6 @@
       <summary>Restore last position</summary>
       <description>Jump to the last position when reopening a file</description>
     </key>
-    <key name="word-completion" type="b">
-      <default>true</default>
-      <summary>Enable auto-completion of words in document</summary>
-      <description>If enabled, words within the current document will be available for 
auto-completion.</description>
-    </key>
     <key name="show-line-changes" type="b">
       <default>true</default>
       <summary>Show modified lines</summary>
diff --git a/data/ui/gb-preferences-page-insight.ui b/data/ui/gb-preferences-page-insight.ui
index 8eeee16..d94507a 100644
--- a/data/ui/gb-preferences-page-insight.ui
+++ b/data/ui/gb-preferences-page-insight.ui
@@ -26,7 +26,7 @@
           <object class="GbPreferencesSwitch" id="word_autocompletion">
             <property name="title" translatable="yes">Suggest Word Completion</property>
             <property name="description" translatable="yes">Suggest completion of words found within all 
open documents.</property>
-            <property name="settings">editor_settings</property>
+            <property name="settings">insight_settings</property>
             <property name="settings-schema-key">word-completion</property>
             <property name="size-group">control_group</property>
             <property name="visible">true</property>
@@ -34,7 +34,7 @@
         </child>
         <child>
           <object class="GbPreferencesSwitch" id="ctags_autocompletion">
-            <property name="settings">experimental_settings</property>
+            <property name="settings">insight_settings</property>
             <property name="settings-schema-key">ctags-autocompletion</property>
             <property name="title" translatable="yes">Suggest Completions using Ctags</property>
             <property name="description" translatable="yes">Use Ctags for completions in supported 
languages.</property>
@@ -44,7 +44,7 @@
         </child>
         <child>
           <object class="GbPreferencesSwitch" id="clang_autocompletion">
-            <property name="settings">experimental_settings</property>
+            <property name="settings">insight_settings</property>
             <property name="settings-schema-key">clang-autocompletion</property>
             <property name="title" translatable="yes">Suggest Completions using Clang 
(Experimental)</property>
             <property name="description" translatable="yes">Use Clang for completions in the C and C++ 
languages.</property>
@@ -55,11 +55,8 @@
       </object>
     </child>
   </template>
-  <object class="GSettings" id="experimental_settings">
-    <property name="schema-id">org.gnome.builder.experimental</property>
-  </object>
-  <object class="GSettings" id="editor_settings">
-    <property name="schema-id">org.gnome.builder.editor</property>
+  <object class="GSettings" id="insight_settings">
+    <property name="schema-id">org.gnome.builder.code-insight</property>
   </object>
   <object class="GtkSizeGroup" id="control_group">
     <property name="mode">horizontal</property>
diff --git a/libide/c/ide-c-language.c b/libide/c/ide-c-language.c
index 37cd0cb..0d2c38c 100644
--- a/libide/c/ide-c-language.c
+++ b/libide/c/ide-c-language.c
@@ -48,23 +48,12 @@ static GList *
 ide_c_language_get_completion_providers (IdeLanguage *language)
 {
   GList *providers = NULL;
-  g_autoptr(GSettings) settings = NULL;
 
   g_return_val_if_fail (IDE_IS_C_LANGUAGE (language), NULL);
 
   providers = IDE_LANGUAGE_CLASS (ide_c_language_parent_class)->get_completion_providers (language);
-
-  /*
-   * Our printf/strftime completion provider.
-   */
   providers = g_list_append (providers, g_object_new (IDE_TYPE_C_FORMAT_PROVIDER, NULL));
-
-  /*
-   * Only enable clang autocompletion if the experimental feature is enabled.
-   */
-  settings = g_settings_new ("org.gnome.builder.experimental");
-  if (g_settings_get_boolean (settings, "clang-autocompletion"))
-    providers = g_list_append (providers, g_object_new (IDE_TYPE_CLANG_COMPLETION_PROVIDER, NULL));
+  providers = g_list_append (providers, g_object_new (IDE_TYPE_CLANG_COMPLETION_PROVIDER, NULL));
 
   return providers;
 }
diff --git a/libide/clang/ide-clang-completion-provider.c b/libide/clang/ide-clang-completion-provider.c
index ce03e36..8455d43 100644
--- a/libide/clang/ide-clang-completion-provider.c
+++ b/libide/clang/ide-clang-completion-provider.c
@@ -43,6 +43,7 @@ struct _IdeClangCompletionProvider
   IdeSourceView *view;
   GPtrArray     *last_results;
   GtkWidget     *assistant;
+  GSettings     *settings;
 };
 
 typedef struct
@@ -172,17 +173,32 @@ filter_list (GPtrArray   *ar,
 }
 
 static void
+ide_clang_completion_provider_finalize (GObject *object)
+{
+  IdeClangCompletionProvider *self = (IdeClangCompletionProvider *)object;
+
+  g_clear_object (&self->settings);
+
+  G_OBJECT_CLASS (ide_clang_completion_provider_parent_class)->finalize (object);
+}
+
+static void
 ide_clang_completion_provider_class_init (IdeClangCompletionProviderClass *klass)
 {
+  GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+  object_class->finalize = ide_clang_completion_provider_finalize;
+
   gBookManager = dh_book_manager_new ();
   dh_book_manager_populate (gBookManager);
 }
 
 static void
-ide_clang_completion_provider_init (IdeClangCompletionProvider *provider)
+ide_clang_completion_provider_init (IdeClangCompletionProvider *self)
 {
-  provider->assistant = dh_assistant_view_new ();
-  dh_assistant_view_set_book_manager (DH_ASSISTANT_VIEW (provider->assistant), gBookManager);
+  self->settings = g_settings_new ("org.gnome.builder.code-insight");
+  self->assistant = dh_assistant_view_new ();
+  dh_assistant_view_set_book_manager (DH_ASSISTANT_VIEW (self->assistant), gBookManager);
 }
 
 static gchar *
@@ -297,6 +313,9 @@ ide_clang_completion_provider_populate (GtkSourceCompletionProvider *provider,
 
   g_assert (IDE_IS_CLANG_COMPLETION_PROVIDER (self));
 
+  if (!g_settings_get_boolean (self->settings, "clang-autocompletion"))
+    goto failure;
+
   if (!gtk_source_completion_context_get_iter (context, &iter))
     goto failure;
 
diff --git a/libide/ctags/ide-ctags-completion-provider.c b/libide/ctags/ide-ctags-completion-provider.c
index f2678ac..96e5fed 100644
--- a/libide/ctags/ide-ctags-completion-provider.c
+++ b/libide/ctags/ide-ctags-completion-provider.c
@@ -89,7 +89,7 @@ ide_ctags_completion_provider_init (IdeCtagsCompletionProvider *self)
 
   self->minimum_word_size = 3;
   self->indexes = g_ptr_array_new_with_free_func (g_object_unref);
-  self->settings = g_settings_new ("org.gnome.builder.experimental");
+  self->settings = g_settings_new ("org.gnome.builder.code-insight");
   self->icons = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_object_unref);
 
   settings = gtk_settings_get_default ();
diff --git a/po/POTFILES.in b/po/POTFILES.in
index abba1d1..cf3ae41 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -11,7 +11,7 @@
 [type: gettext/glade]data/ui/gb-new-file-popover.ui
 [type: gettext/glade]data/ui/gb-new-project-dialog.ui
 [type: gettext/glade]data/ui/gb-preferences-page-editor.ui
-[type: gettext/glade]data/ui/gb-preferences-page-experimental.ui
+[type: gettext/glade]data/ui/gb-preferences-page-insight.ui
 [type: gettext/glade]data/ui/gb-preferences-page-git.ui
 [type: gettext/glade]data/ui/gb-preferences-page-keybindings.ui
 [type: gettext/glade]data/ui/gb-preferences-page-language.ui
@@ -25,7 +25,7 @@
 [type: gettext/glade]data/ui/gb-workbench.ui
 [type: gettext/gsettings]data/gsettings/org.gnome.builder.editor.gschema.xml
 [type: gettext/gsettings]data/gsettings/org.gnome.builder.editor.language.gschema.xml
-[type: gettext/gsettings]data/gsettings/org.gnome.builder.experimental.gschema.xml
+[type: gettext/gsettings]data/gsettings/org.gnome.builder.code-insight.gschema.xml
 [type: gettext/gsettings]data/gsettings/org.gnome.builder.project-tree.gschema.xml
 contrib/gedit/gedit-menu-stack-switcher.c
 contrib/nautilus/nautilus-floating-bar.c
@@ -135,7 +135,7 @@ src/html/gb-html-view.c
 src/keybindings/gb-keybindings.c
 src/main.c
 src/preferences/gb-preferences-page-editor.c
-src/preferences/gb-preferences-page-experimental.c
+src/preferences/gb-preferences-page-insight.c
 src/preferences/gb-preferences-page-git.c
 src/preferences/gb-preferences-page-keybindings.c
 src/preferences/gb-preferences-page.c
diff --git a/src/editor/gb-editor-frame.c b/src/editor/gb-editor-frame.c
index 9e6f4af..59e07a0 100644
--- a/src/editor/gb-editor-frame.c
+++ b/src/editor/gb-editor-frame.c
@@ -844,6 +844,7 @@ static void
 gb_editor_frame_init (GbEditorFrame *self)
 {
   g_autoptr(GSettings) settings = NULL;
+  g_autoptr(GSettings) insight_settings = NULL;
   GtkTargetList *target_list;
 
   gtk_widget_init_template (GTK_WIDGET (self));
@@ -860,11 +861,13 @@ gb_editor_frame_init (GbEditorFrame *self)
   g_settings_bind (settings, "show-line-numbers", self->source_view, "show-line-numbers", 
G_SETTINGS_BIND_GET);
   g_settings_bind (settings, "smart-backspace", self->source_view, "smart-backspace", G_SETTINGS_BIND_GET);
   g_settings_bind_with_mapping (settings, "smart-home-end", self->source_view, "smart-home-end", 
G_SETTINGS_BIND_GET, get_smart_home_end, NULL, NULL, NULL);
-  g_settings_bind (settings, "word-completion", self->source_view, "enable-word-completion", 
G_SETTINGS_BIND_GET);
   g_settings_bind (settings, "show-map", self, "show-map", G_SETTINGS_BIND_GET);
   g_settings_bind (settings, "auto-hide-map", self, "auto-hide-map", G_SETTINGS_BIND_GET);
   g_signal_connect (settings, "changed::keybindings", G_CALLBACK (keybindings_changed), self);
 
+  insight_settings = g_settings_new ("org.gnome.builder.code-insight");
+  g_settings_bind (insight_settings, "word-completion", self->source_view, "enable-word-completion", 
G_SETTINGS_BIND_GET);
+
   g_object_bind_property (self->source_view, "overwrite", self->overwrite_label, "visible", 
G_BINDING_SYNC_CREATE);
 
   g_signal_connect_object (self->source_overlay,


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