[gnome-builder] file-settings: add spaces-style for basic space styling
- From: Christian Hergert <chergert src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder] file-settings: add spaces-style for basic space styling
- Date: Tue, 30 Jan 2018 00:57:29 +0000 (UTC)
commit dd5f076cfe78b02df4d04ef3dbb147d7c381c63a
Author: Christian Hergert <chergert redhat com>
Date: Mon Jan 29 16:34:31 2018 -0800
file-settings: add spaces-style for basic space styling
Nothing too fancy, but enough so that we can tweak some things from various
indenters/completion providers.
Related #152
.../org.gnome.builder.editor.language.gschema.xml | 16 +++++++++++
src/libide/files/ide-file-settings.defs | 12 +++++++++
src/libide/files/ide-file-settings.h | 3 ++-
src/libide/gsettings/ide-gsettings-file-settings.c | 31 ++++++++++++++++++++++
4 files changed, 61 insertions(+), 1 deletion(-)
---
diff --git a/data/gsettings/org.gnome.builder.editor.language.gschema.xml
b/data/gsettings/org.gnome.builder.editor.language.gschema.xml
index df03680ea..4008b576c 100644
--- a/data/gsettings/org.gnome.builder.editor.language.gschema.xml
+++ b/data/gsettings/org.gnome.builder.editor.language.gschema.xml
@@ -1,4 +1,15 @@
<schemalist>
+
+ <flags id="org.gnome.builder.SpacesStyle">
+ <value nick="before-left-paren" value="1"/>
+ <value nick="before-left-bracket" value="2"/>
+ <value nick="before-left-brace" value="4"/>
+ <value nick="before-left-angle" value="8"/>
+ <value nick="before-colon" value="16"/>
+ <value nick="before-comma" value="32"/>
+ <value nick="before-semicolon" value="64"/>
+ </flags>
+
<schema id="org.gnome.builder.editor.language" gettext-domain="gnome-builder">
<key name="auto-indent" type="b">
<default>true</default>
@@ -26,6 +37,11 @@
<range min="32" max="500"/>
<default>80</default>
</key>
+ <key name="spaces-style" flags="org.gnome.builder.SpacesStyle">
+ <default>[]</default>
+ <summary>Spaces Style</summary>
+ <description>How to apply spaces when reformating text.</description>
+ </key>
<key name="tab-width" type="i">
<range min="1" max="120"/>
<default>8</default>
diff --git a/src/libide/files/ide-file-settings.defs b/src/libide/files/ide-file-settings.defs
index d5ca21fcf..548cc39d0 100644
--- a/src/libide/files/ide-file-settings.defs
+++ b/src/libide/files/ide-file-settings.defs
@@ -103,6 +103,18 @@ IDE_FILE_SETTINGS_PROPERTY (SHOW_RIGHT_MARGIN, show_right_margin,
priv->show_right_margin = !!show_right_margin;,
boolean)
+IDE_FILE_SETTINGS_PROPERTY (SPACES_STYLE, spaces_style,
+ IdeSpacesStyle, IdeSpacesStyle,
+ "spaces-style",
+ g_param_spec_flags ("spaces-style",
+ "Spaces Style",
+ "How to add spaces when reformatting certain text. Mostly
used by completions.",
+ IDE_TYPE_SPACES_STYLE,
+ IDE_SPACES_STYLE_IGNORE,
+ (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
+ priv->spaces_style = spaces_style;,
+ flags)
+
IDE_FILE_SETTINGS_PROPERTY (TAB_WIDTH, tab_width,
guint, guint,
"tab-width",
diff --git a/src/libide/files/ide-file-settings.h b/src/libide/files/ide-file-settings.h
index 0bfc4096b..bd9268ee4 100644
--- a/src/libide/files/ide-file-settings.h
+++ b/src/libide/files/ide-file-settings.h
@@ -20,11 +20,12 @@
#include <gtksourceview/gtksource.h>
+#include "ide-object.h"
#include "ide-version-macros.h"
#include "files/ide-file.h"
#include "files/ide-indent-style.h"
-#include "ide-object.h"
+#include "files/ide-spaces-style.h"
G_BEGIN_DECLS
diff --git a/src/libide/gsettings/ide-gsettings-file-settings.c
b/src/libide/gsettings/ide-gsettings-file-settings.c
index c21a115b9..17387d9ee 100644
--- a/src/libide/gsettings/ide-gsettings-file-settings.c
+++ b/src/libide/gsettings/ide-gsettings-file-settings.c
@@ -23,6 +23,7 @@
#include "ide-context.h"
#include "ide-debug.h"
+#include "ide-enums.h"
#include "files/ide-file.h"
#include "gsettings/ide-gsettings-file-settings.h"
@@ -58,6 +59,35 @@ indent_style_get (GValue *value,
return TRUE;
}
+static gboolean
+spaces_style_get (GValue *value,
+ GVariant *variant,
+ gpointer user_data)
+{
+ g_autofree const gchar **strv = g_variant_get_strv (variant, NULL);
+ GFlagsClass *klass = g_type_class_ref (IDE_TYPE_SPACES_STYLE);
+ guint flags = 0;
+
+ for (guint i = 0; strv[i] != NULL; i++)
+ {
+ GFlagsValue *val = g_flags_get_value_by_nick (klass, strv[i]);
+
+ if (val == NULL)
+ {
+ g_warning ("No such nick %s", strv[i]);
+ continue;
+ }
+
+ flags |= val->value;
+ }
+
+ g_type_class_unref (klass);
+
+ g_value_set_flags (value, flags);
+
+ return TRUE;
+}
+
static SettingsMapping language_mappings [] = {
{ "indent-width", "indent-width", NULL },
{ "insert-spaces-instead-of-tabs", "indent-style", indent_style_get },
@@ -68,6 +98,7 @@ static SettingsMapping language_mappings [] = {
{ "insert-matching-brace", "insert-matching-brace", NULL },
{ "insert-trailing-newline", "insert-trailing-newline", NULL },
{ "overwrite-braces", "overwrite-braces", NULL },
+ { "spaces-style", "spaces-style", spaces_style_get },
};
static void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]