diff --git a/data/gsettings/org.gnome.builder.editor.gschema.xml b/data/gsettings/org.gnome.builder.editor.gschema.xml
index e6e58faee9795fafa2b1b0a958856e619b5edd56..38fbf800b90aca0e3dbe056d04ad5741cfa91423 100644
--- a/data/gsettings/org.gnome.builder.editor.gschema.xml
+++ b/data/gsettings/org.gnome.builder.editor.gschema.xml
@@ -95,10 +95,15 @@
Overscroll
The number of lines to scroll beyond the end of the buffer.
-
- false
+
+
+
+
+
+
+ 'never'
Wrap Text
- If enabled, Builder will automatically wrap text so all of the line text is visible.
+ The way to wrap a long line of text for a better visibility.
true
diff --git a/src/libide/editor/ide-editor-page-settings.c b/src/libide/editor/ide-editor-page-settings.c
index 00d85206838c8b61a1cdff92ed26bda29e929548..0b4e725248750b0f9acd2395d042b530c0090d0a 100644
--- a/src/libide/editor/ide-editor-page-settings.c
+++ b/src/libide/editor/ide-editor-page-settings.c
@@ -43,7 +43,11 @@ get_wrap_mode (GValue *value,
GVariant *variant,
gpointer user_data)
{
- if (g_variant_get_boolean (variant))
+ const gchar *wrap_mode = g_variant_get_string (variant, NULL);
+
+ if (!g_strcmp0 (wrap_mode, "always"))
+ g_value_set_enum (value, GTK_WRAP_WORD_CHAR);
+ else if (!g_strcmp0 (wrap_mode, "whitespace"))
g_value_set_enum (value, GTK_WRAP_WORD);
else
g_value_set_enum (value, GTK_WRAP_NONE);
diff --git a/src/libide/gui/ide-preferences-builtin.c b/src/libide/gui/ide-preferences-builtin.c
index 2ad7f5f50d50a4e1accc31ceb1e9f38cc4875c8b..456d6d575ef021a754b9c9dbd81c69a30e9306c5 100644
--- a/src/libide/gui/ide-preferences-builtin.c
+++ b/src/libide/gui/ide-preferences-builtin.c
@@ -159,10 +159,14 @@ ide_preferences_builtin_register_editor (DzlPreferences *preferences)
dzl_preferences_add_list_group (preferences, "editor", "position", _("Cursor"), GTK_SELECTION_NONE, 0);
dzl_preferences_add_switch (preferences, "editor", "position", "org.gnome.builder.editor", "restore-insert-mark", NULL, NULL, _("Restore cursor position"), _("Restore cursor position when a file is reopened"), NULL, 0);
- dzl_preferences_add_switch (preferences, "editor", "position", "org.gnome.builder.editor", "wrap-text", NULL, NULL, _("Enable text wrapping"), _("Wrap text that is too wide to display"), NULL, 5);
dzl_preferences_add_spin_button (preferences, "editor", "position", "org.gnome.builder.editor", "scroll-offset", NULL, _("Scroll Offset"), _("Minimum number of lines to keep above and below the cursor"), NULL, 10);
dzl_preferences_add_spin_button (preferences, "editor", "position", "org.gnome.builder.editor", "overscroll", NULL, _("Overscroll"), _("Allow the editor to scroll past the end of the buffer"), NULL, 20);
+ dzl_preferences_add_list_group (preferences, "editor", "text-wrapping", _("Text Wrapping"), GTK_SELECTION_NONE, 0);
+ dzl_preferences_add_radio (preferences, "editor", "text-wrapping", "org.gnome.builder.editor", "wrap-text", NULL, "\"never\"", _("Never"), NULL, NULL, 0);
+ dzl_preferences_add_radio (preferences, "editor", "text-wrapping", "org.gnome.builder.editor", "wrap-text", NULL, "\"whitespace\"", _("In Between Words"), NULL, NULL, 0);
+ dzl_preferences_add_radio (preferences, "editor", "text-wrapping", "org.gnome.builder.editor", "wrap-text", NULL, "\"always\"", _("Always"), NULL, NULL, 0);
+
dzl_preferences_add_list_group (preferences, "editor", "line", _("Line Information"), GTK_SELECTION_NONE, 50);
dzl_preferences_add_switch (preferences, "editor", "line", "org.gnome.builder.editor", "show-line-numbers", NULL, NULL, _("Line numbers"), _("Show line number at beginning of each line"), NULL, 0);
dzl_preferences_add_switch (preferences, "editor", "line", "org.gnome.builder.editor", "show-relative-line-numbers", NULL, NULL, _("Relative line numbers"), _("Show line numbers relative to the cursor line"), NULL, 0);