Updating branch refs/heads/master to 82b6e834ddeea4be8bf901307e6e093bde24631c (commit) from cc401c48985b9f06c855cac39175ddcbe0efe091 (commit)
commit 82b6e834ddeea4be8bf901307e6e093bde24631c Author: Matthew Brush <mbr...@codebrainz.ca> Date: Mon Oct 3 21:48:03 2011 -0700 Add initial filetype/language support and guess on file open. Still need to add UI elements to let user select language to use. mousepad/mousepad-file.c | 82 +++++++++++++++++++++++++++++++++++++++++++ mousepad/mousepad-file.h | 12 ++++++ mousepad/mousepad-private.h | 2 + 3 files changed, 96 insertions(+), 0 deletions(-) diff --git a/mousepad/mousepad-file.c b/mousepad/mousepad-file.c index b45c980..2e4a86c 100644 --- a/mousepad/mousepad-file.c +++ b/mousepad/mousepad-file.c @@ -393,6 +393,85 @@ mousepad_file_get_line_ending (MousepadFile *file) +void +mousepad_file_set_language (MousepadFile *file, + GtkSourceLanguage *language) +{ + mousepad_return_if_fail (MOUSEPAD_IS_FILE (file)); + mousepad_return_if_fail (GTK_IS_SOURCE_BUFFER (file->buffer)); + + gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (file->buffer), language); +} + + + +GtkSourceLanguage * +mousepad_file_get_language (MousepadFile *file) +{ + mousepad_return_val_if_fail (MOUSEPAD_IS_FILE (file), NULL); + mousepad_return_val_if_fail (GTK_IS_SOURCE_BUFFER (file->buffer), NULL); + + return gtk_source_buffer_get_language (GTK_SOURCE_BUFFER (file->buffer)); +} + + + +void +mousepad_file_set_language_id (MousepadFile *file, + const gchar *language_id) +{ + GtkSourceLanguage *lang; + + mousepad_return_if_fail (MOUSEPAD_IS_FILE (file)); + mousepad_return_if_fail (GTK_IS_SOURCE_BUFFER (file->buffer)); + + if (G_UNLIKELY (language_id == NULL)) + { + gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (file->buffer), NULL); + return; + } + + lang = gtk_source_language_manager_get_language (gtk_source_language_manager_get_default (), language_id); + mousepad_file_set_language (file, lang); +} + + + +const gchar * +mousepad_file_get_language_id (MousepadFile *file) +{ + GtkSourceLanguage *lang; + + lang = mousepad_file_get_language (file); + return (lang != NULL) ? gtk_source_language_get_id (lang) : NULL; +} + + + +GtkSourceLanguage * +mousepad_file_guess_language (MousepadFile *file) +{ + gchar *content_type; + gboolean result_uncertain; + GtkSourceLanguage *language = NULL; + + content_type = g_content_type_guess (file->filename, NULL, 0, &result_uncertain); + if (result_uncertain) + { + g_free (content_type); + content_type = NULL; + } + + language = gtk_source_language_manager_guess_language (gtk_source_language_manager_get_default (), + file->filename, + content_type); + g_free (content_type); + + return language; +} + + + gint mousepad_file_open (MousepadFile *file, const gchar *template_filename, @@ -604,6 +683,9 @@ mousepad_file_open (MousepadFile *file, g_mapped_file_free (mapped_file); #endif + /* guess and set the file's filetype/language */ + mousepad_file_set_language (file, mousepad_file_guess_language (file)); + /* this does not count as a modified buffer */ gtk_text_buffer_set_modified (file->buffer, FALSE); } diff --git a/mousepad/mousepad-file.h b/mousepad/mousepad-file.h index 18c5b6e..e9a8be3 100644 --- a/mousepad/mousepad-file.h +++ b/mousepad/mousepad-file.h @@ -68,6 +68,18 @@ void mousepad_file_set_line_ending (MousepadFile MousepadLineEnding mousepad_file_get_line_ending (MousepadFile *file); +void mousepad_file_set_language (MousepadFile *file, + GtkSourceLanguage *language); + +GtkSourceLanguage *mousepad_file_get_language (MousepadFile *file); + +void mousepad_file_set_language_id (MousepadFile *file, + const gchar *language_id); + +const gchar *mousepad_file_get_language_id (MousepadFile *file); + +GtkSourceLanguage *mousepad_file_guess_language (MousepadFile *file); + gint mousepad_file_open (MousepadFile *file, const gchar *template_filename, GError **error); diff --git a/mousepad/mousepad-private.h b/mousepad/mousepad-private.h index 85fae3c..921767b 100644 --- a/mousepad/mousepad-private.h +++ b/mousepad/mousepad-private.h @@ -24,6 +24,8 @@ #include <gtksourceview/gtksourceview.h> #include <gtksourceview/gtksourcestylescheme.h> #include <gtksourceview/gtksourcestyleschememanager.h> +#include <gtksourceview/gtksourcelanguage.h> +#include <gtksourceview/gtksourcelanguagemanager.h> G_BEGIN_DECLS _______________________________________________ Xfce4-commits mailing list Xfce4-commits@xfce.org https://mail.xfce.org/mailman/listinfo/xfce4-commits