IDE_FILE_SETTINGS_PROPERTY (ENCODING, encoding,
                            gchar *, const gchar *,
                            "encoding",
                            g_param_spec_string ("encoding",
                                                 "Encoding",
                                                 "The character encoding.",
                                                 NULL,
                                                 (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            g_free (priv->encoding); priv->encoding = g_strdup (encoding);,
                            string)

IDE_FILE_SETTINGS_PROPERTY (INDENT_STYLE, indent_style,
                            IdeIndentStyle, IdeIndentStyle,
                            "indent-style",
                            g_param_spec_enum ("indent-style",
                                               "Indent Style",
                                               "The indentation style.",
                                               IDE_TYPE_INDENT_STYLE,
                                               IDE_INDENT_STYLE_TABS,
                                               (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->indent_style = indent_style;,
                            enum)

IDE_FILE_SETTINGS_PROPERTY (INDENT_WIDTH, indent_width,
                            gint, gint,
                            "indent-width",
                            g_param_spec_int ("indent-width",
                                              "Indent Width",
                                              "The indentation width, or -1 to use tab-width.",
                                              -1,
                                              32,
                                              -1,
                                              (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->indent_width = indent_width;,
                            int)

IDE_FILE_SETTINGS_PROPERTY (AUTO_INDENT, auto_indent,
                            gboolean, gboolean,
                            "auto-indent",
                            g_param_spec_boolean ("auto-indent",
                                                  "Auto Indent",
                                                  "If the the auto-indenter should be enabled",
                                                  FALSE,
                                                  (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->auto_indent = !!auto_indent;,
                            boolean)

IDE_FILE_SETTINGS_PROPERTY (INSERT_TRAILING_NEWLINE, insert_trailing_newline,
                            gboolean, gboolean,
                            "insert-trailing-newline",
                            g_param_spec_boolean ("insert-trailing-newline",
                                                  "Insert Trailing Newline",
                                                  "If a trailing newline should be added when saving.",
                                                  FALSE,
                                                  (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->insert_trailing_newline = !!insert_trailing_newline;,
                            boolean)

IDE_FILE_SETTINGS_PROPERTY (INSERT_MATCHING_BRACE, insert_matching_brace,
                            gboolean, gboolean,
                            "insert-matching-brace",
                            g_param_spec_boolean ("insert-matching-brace",
                                                  "Insert Matching Brace",
                                                  "Insert Matching Brace",
                                                  FALSE,
                                                  (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->insert_matching_brace = !!insert_matching_brace;,
                            boolean)

IDE_FILE_SETTINGS_PROPERTY (OVERWRITE_BRACES, overwrite_braces,
                            gboolean, gboolean,
                            "overwrite-braces",
                            g_param_spec_boolean ("overwrite-braces",
                                                  "Overwrite Braces",
                                                  "Type over existing braces",
                                                  FALSE,
                                                  (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->overwrite_braces = !!overwrite_braces;,
                            boolean)

IDE_FILE_SETTINGS_PROPERTY (NEWLINE_TYPE, newline_type,
                            GtkSourceNewlineType, GtkSourceNewlineType,
                            "newline-type",
                            g_param_spec_enum ("newline-type",
                                               "Newline Type",
                                               "The type of newline to use at the end of each line.",
                                               GTK_SOURCE_TYPE_NEWLINE_TYPE,
                                               GTK_SOURCE_NEWLINE_TYPE_DEFAULT,
                                               (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->newline_type = newline_type;,
                            enum)

IDE_FILE_SETTINGS_PROPERTY (RIGHT_MARGIN_POSITION, right_margin_position,
                            guint, guint,
                            "right-margin-position",
                            g_param_spec_uint ("right-margin-position",
                                               "Right Margin Position",
                                               "The position to draw the right margin, in characters.",
                                               1,
                                               1000,
                                               80,
                                               (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->right_margin_position = right_margin_position;,
                            uint)

IDE_FILE_SETTINGS_PROPERTY (SHOW_RIGHT_MARGIN, show_right_margin,
                            gboolean, gboolean,
                            "show-right-margin",
                            g_param_spec_boolean ("show-right-margin",
                                                  "Show Right Margin",
                                                  "If the right margin line should be shown in the editor.",
                                                  FALSE,
                                                  (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            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",
                            g_param_spec_uint ("tab-width",
                                               "Tab Width",
                                               "The width of a tab in characters",
                                               1,
                                               32,
                                               8,
                                               (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->tab_width = tab_width;,
                            uint)

IDE_FILE_SETTINGS_PROPERTY (TRIM_TRAILING_WHITESPACE, trim_trailing_whitespace,
                            gboolean, gboolean,
                            "trim-trailing-whitespace",
                            g_param_spec_boolean ("trim-trailing-whitespace",
                                                  "Trim Trailing Whitespace",
                                                  "If trailing whitespace should be trimmed from lines.",
                                                  FALSE,
                                                  (G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS)),
                            priv->trim_trailing_whitespace = !!trim_trailing_whitespace;,
                            boolean)
