[gitg] Take advantage of gtk_source_language_manager_guess_language
- From: Paolo Borelli <pborelli src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gitg] Take advantage of gtk_source_language_manager_guess_language
- Date: Sun, 2 Aug 2009 16:10:38 +0000 (UTC)
commit a0f147d9131b1a76ff834ea38601200b6f16267a
Author: Paolo Borelli <porelli gnome org>
Date: Sun Aug 2 13:11:35 2009 +0200
Take advantage of gtk_source_language_manager_guess_language
gitg/gitg-commit-view.c | 18 ++++++++++++------
gitg/gitg-revision-tree-view.c | 16 ++++++++++------
gitg/gitg-utils.c | 38 +++-----------------------------------
gitg/gitg-utils.h | 2 +-
4 files changed, 26 insertions(+), 48 deletions(-)
---
diff --git a/gitg/gitg-commit-view.c b/gitg/gitg-commit-view.c
index 0ee44c3..301be06 100644
--- a/gitg/gitg-commit-view.c
+++ b/gitg/gitg-commit-view.c
@@ -231,8 +231,6 @@ on_changes_update(GitgRunner *runner, gchar **buffer, GitgCommitView *view)
gtk_text_buffer_insert(buf, &iter, "\n", -1);
}
- gitg_utils_guess_content_type(GTK_TEXT_BUFFER(buf));
-
if (gtk_source_buffer_get_language(GTK_SOURCE_BUFFER(buf)) == NULL)
{
gchar *content_type = gitg_utils_guess_content_type(GTK_TEXT_BUFFER(buf));
@@ -244,7 +242,7 @@ on_changes_update(GitgRunner *runner, gchar **buffer, GitgCommitView *view)
}
else if (content_type)
{
- GtkSourceLanguage *language = gitg_utils_get_language(content_type);
+ GtkSourceLanguage *language = gitg_utils_get_language(NULL, content_type);
set_language(view, language);
gtk_widget_set_sensitive(GTK_WIDGET(view->priv->hscale_context), FALSE);
}
@@ -434,7 +432,10 @@ unstaged_selection_changed(GtkTreeSelection *selection, GitgCommitView *view)
}
else
{
- GtkSourceLanguage *language = gitg_utils_get_language(content_type);
+ gchar *basename = g_file_get_basename(f);
+ GtkSourceLanguage *language = gitg_utils_get_language(basename, content_type);
+ g_free(basename);
+
set_language(view, language);
gtk_widget_set_sensitive(GTK_WIDGET(view->priv->hscale_context), FALSE);
@@ -445,6 +446,8 @@ unstaged_selection_changed(GtkTreeSelection *selection, GitgCommitView *view)
g_object_unref(stream);
}
}
+
+ g_free(content_type);
}
else
{
@@ -486,7 +489,6 @@ staged_selection_changed(GtkTreeSelection *selection, GitgCommitView *view)
GFile *f = gitg_changed_file_get_file(file);
gchar *path = gitg_repository_relative(view->priv->repository, f);
- g_object_unref(f);
if (status == GITG_CHANGED_FILE_STATUS_NEW)
{
@@ -500,7 +502,10 @@ staged_selection_changed(GtkTreeSelection *selection, GitgCommitView *view)
}
else
{
- set_language(view, gitg_utils_get_language(content_type));
+ gchar *basename = g_file_get_basename(f);
+ GtkSourceLanguage *language = gitg_utils_get_language(basename, content_type);
+ g_free(basename);
+
gtk_widget_set_sensitive(GTK_WIDGET(view->priv->hscale_context), FALSE);
connect_update(view);
@@ -526,6 +531,7 @@ staged_selection_changed(GtkTreeSelection *selection, GitgCommitView *view)
g_free(head);
}
+ g_object_unref(f);
g_free(path);
set_current_file(view, file, GITG_CHANGED_FILE_CHANGES_CACHED);
diff --git a/gitg/gitg-revision-tree-view.c b/gitg/gitg-revision-tree-view.c
index 30d4fd1..c37ce44 100644
--- a/gitg/gitg-revision-tree-view.c
+++ b/gitg/gitg-revision-tree-view.c
@@ -208,12 +208,15 @@ on_selection_changed(GtkTreeSelection *selection, GitgRevisionTreeView *tree)
if (!path)
return;
-
+
+ gchar *name;
gchar *content_type;
gtk_tree_model_get_iter(model, &iter, path);
gtk_tree_path_free(path);
- gtk_tree_model_get(model, &iter, GITG_REVISION_TREE_STORE_CONTENT_TYPE_COLUMN, &content_type, -1);
-
+ gtk_tree_model_get(model, &iter,
+ GITG_REVISION_TREE_STORE_NAME_COLUMN, &name,
+ GITG_REVISION_TREE_STORE_CONTENT_TYPE_COLUMN, &content_type, -1);
+
if (!content_type)
return;
@@ -223,7 +226,7 @@ on_selection_changed(GtkTreeSelection *selection, GitgRevisionTreeView *tree)
}
else
{
- GtkSourceLanguage *language = gitg_utils_get_language(content_type);
+ GtkSourceLanguage *language = gitg_utils_get_language(name, content_type);
gtk_source_buffer_set_language(GTK_SOURCE_BUFFER(buffer), language);
gchar *id = node_identity(tree, &iter);
@@ -231,7 +234,8 @@ on_selection_changed(GtkTreeSelection *selection, GitgRevisionTreeView *tree)
g_free(id);
}
-
+
+ g_free(name);
g_free(content_type);
}
@@ -634,7 +638,7 @@ on_contents_update(GitgRunner *runner, gchar **buffer, GitgRevisionTreeView *tre
}
else
{
- GtkSourceLanguage *language = gitg_utils_get_language(content_type);
+ GtkSourceLanguage *language = gitg_utils_get_language(NULL, content_type);
gtk_source_buffer_set_language(GTK_SOURCE_BUFFER(buf), language);
}
diff --git a/gitg/gitg-utils.c b/gitg/gitg-utils.c
index 59e0e70..8341e15 100644
--- a/gitg/gitg-utils.c
+++ b/gitg/gitg-utils.c
@@ -286,45 +286,13 @@ gitg_utils_can_display_content_type(gchar const *content_type)
}
GtkSourceLanguage *
-gitg_utils_get_language(gchar const *content_type)
+gitg_utils_get_language(gchar const *filename, gchar const *content_type)
{
if (!gitg_utils_can_display_content_type(content_type))
return NULL;
-
- gchar *mime = g_content_type_get_mime_type(content_type);
- GtkSourceLanguageManager *manager = gtk_source_language_manager_get_default();
-
- gchar const * const *ids = gtk_source_language_manager_get_language_ids(manager);
- gchar const *ptr;
- GtkSourceLanguage *ret;
-
- while ((ptr = *ids++))
- {
- ret = gtk_source_language_manager_get_language(manager, ptr);
- gchar **mime_types = gtk_source_language_get_mime_types(ret);
- gchar **types = mime_types;
- gchar *m;
-
- if (types)
- {
- while ((m = *types++))
- {
- if (strcmp(mime, m) == 0)
- {
- g_free(mime);
- g_strfreev(mime_types);
- return ret;
- }
- }
-
- g_strfreev(mime_types);
- }
- ret = NULL;
- }
-
- g_free(mime);
- return NULL;
+ GtkSourceLanguageManager *manager = gtk_source_language_manager_get_default();
+ return gtk_source_language_manager_guess_language(manager, filename, content_type);
}
gint
diff --git a/gitg/gitg-utils.h b/gitg/gitg-utils.h
index 1dd2ad8..4cb2d16 100644
--- a/gitg/gitg-utils.h
+++ b/gitg/gitg-utils.h
@@ -49,7 +49,7 @@ gboolean gitg_utils_hash_equal(gconstpointer a, gconstpointer b);
gint gitg_utils_null_length(gconstpointer *ptr);
gchar *gitg_utils_get_content_type(GFile *file);
-GtkSourceLanguage *gitg_utils_get_language(gchar const *content_type);
+GtkSourceLanguage *gitg_utils_get_language(gchar const *filename, gchar const *content_type);
gboolean gitg_utils_can_display_content_type(gchar const *content_type);
gchar *gitg_utils_guess_content_type(GtkTextBuffer *buffer);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]