static void save_metadata (GeditDocument *doc) { const gchar *language = NULL; GtkTextIter iter; gchar *position; if (doc->priv->language_set_by_user) { language = get_language_string (doc); } gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (doc), &iter, gtk_text_buffer_get_insert (GTK_TEXT_BUFFER (doc))); position = g_strdup_printf ("%d", gtk_text_iter_get_offset (&iter)); if (language == NULL) { gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_POSITION, position, NULL); } else { gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_POSITION, position, GEDIT_METADATA_ATTRIBUTE_LANGUAGE, language, NULL); } g_free (position); }
static void set_language (GeditDocument *doc, GtkSourceLanguage *lang, gboolean set_by_user) { GeditDocumentPrivate *priv; GtkSourceLanguage *old_lang; gedit_debug (DEBUG_DOCUMENT); priv = gedit_document_get_instance_private (doc); old_lang = gtk_source_buffer_get_language (GTK_SOURCE_BUFFER (doc)); if (old_lang == lang) { return; } gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (doc), lang); if (set_by_user) { const gchar *language = get_language_string (doc); gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_LANGUAGE, language, NULL); } priv->language_set_by_user = set_by_user; }
static void auto_spell_cb (GSimpleAction *action, GVariant *state, gpointer data) { GeditSpellPlugin *plugin = GEDIT_SPELL_PLUGIN (data); GeditSpellPluginPrivate *priv = plugin->priv; GeditView *view; gboolean active; gedit_debug (DEBUG_PLUGINS); active = g_variant_get_boolean (state); gedit_debug_message (DEBUG_PLUGINS, active ? "Auto Spell activated" : "Auto Spell deactivated"); view = gedit_window_get_active_view (priv->window); if (view != NULL) { GeditDocument *doc; doc = GEDIT_DOCUMENT (gtk_text_view_get_buffer (GTK_TEXT_VIEW (view))); gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_SPELL_ENABLED, active ? "1" : NULL, NULL); set_auto_spell (priv->window, view, active); g_simple_action_set_state (action, g_variant_new_boolean (active)); } }
static void on_document_saved (GeditDocument *doc, GeditSpellPlugin *plugin) { GeditAutomaticSpellChecker *autospell; GeditSpellChecker *spell; const gchar *key; /* Make sure to save the metadata here too */ autospell = gedit_automatic_spell_checker_get_from_document (doc); spell = GEDIT_SPELL_CHECKER (g_object_get_qdata (G_OBJECT (doc), spell_checker_id)); if (spell != NULL) { key = gedit_spell_checker_language_to_key (gedit_spell_checker_get_language (spell)); } else { key = NULL; } gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_SPELL_ENABLED, autospell != NULL ? "1" : NULL, GEDIT_METADATA_ATTRIBUTE_SPELL_LANGUAGE, key, NULL); }
static void set_spell_language_cb (GeditSpellChecker *spell, const GeditSpellCheckerLanguage *lang, GeditDocument *doc) { const gchar *key; g_return_if_fail (GEDIT_IS_DOCUMENT (doc)); g_return_if_fail (lang != NULL); key = gedit_spell_checker_language_to_key (lang); g_return_if_fail (key != NULL); gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_SPELL_LANGUAGE, key, NULL); }
static void save_bookmark_metadata (GeditView *view) { GtkTextIter iter; GtkTextBuffer *buf; GString *string; gchar *val = NULL; gboolean first = TRUE; buf = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view)); gtk_text_buffer_get_start_iter (buf, &iter); string = g_string_new (NULL); while (gtk_source_buffer_forward_iter_to_source_mark (GTK_SOURCE_BUFFER (buf), &iter, BOOKMARK_CATEGORY)) { gint line; line = gtk_text_iter_get_line (&iter); if (!first) { g_string_append_printf (string, ",%d", line); } else { g_string_append_printf (string, "%d", line); first = FALSE; } } if (string->len == 0) { val = g_string_free (string, TRUE); val = NULL; } else val = g_string_free (string, FALSE); gedit_document_set_metadata (GEDIT_DOCUMENT (buf), METADATA_ATTR, val, NULL); g_free (val); }
static void set_language (GeditDocument *doc, GtkSourceLanguage *lang, gboolean set_by_user) { GtkSourceLanguage *old_lang; gedit_debug (DEBUG_DOCUMENT); old_lang = gtk_source_buffer_get_language (GTK_SOURCE_BUFFER (doc)); if (old_lang == lang) { return; } gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (doc), lang); if (lang != NULL) { gboolean syntax_hl; syntax_hl = g_settings_get_boolean (doc->priv->editor_settings, GEDIT_SETTINGS_SYNTAX_HIGHLIGHTING); gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (doc), syntax_hl); } else { gtk_source_buffer_set_highlight_syntax (GTK_SOURCE_BUFFER (doc), FALSE); } if (set_by_user) { const gchar *language = get_language_string (doc); gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_LANGUAGE, language, NULL); } doc->priv->language_set_by_user = set_by_user; }
static void save_encoding_metadata (GeditDocument *doc) { const GtkSourceEncoding *encoding; const gchar *charset; gedit_debug (DEBUG_DOCUMENT); encoding = gtk_source_file_get_encoding (doc->priv->file); if (encoding == NULL) { encoding = gtk_source_encoding_get_utf8 (); } charset = gtk_source_encoding_get_charset (encoding); gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_ENCODING, charset, NULL); }
static void auto_spell_cb (GtkAction *action, GeditWindow *window) { GeditDocument *doc; gboolean active; gedit_debug (DEBUG_PLUGINS); active = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action)); gedit_debug_message (DEBUG_PLUGINS, active ? "Auto Spell activated" : "Auto Spell deactivated"); doc = gedit_window_get_active_document (window); if (doc == NULL) return; gedit_document_set_metadata (doc, GEDIT_METADATA_ATTRIBUTE_SPELL_ENABLED, active ? "1" : NULL, NULL); set_auto_spell (window, doc, active); }