gedit r6707 - in branches/win32: . gedit plugin-loaders/python/bindings
- From: pborelli svn gnome org
- To: svn-commits-list gnome org
- Subject: gedit r6707 - in branches/win32: . gedit plugin-loaders/python/bindings
- Date: Wed, 24 Dec 2008 09:18:00 +0000 (UTC)
Author: pborelli
Date: Wed Dec 24 09:18:00 2008
New Revision: 6707
URL: http://svn.gnome.org/viewvc/gedit?rev=6707&view=rev
Log:
2008-12-24 Paolo Borelli <pborelli katamail com>
* gedit-language-manager.[ch]:
* gedit-documemt.c:
Use gtk_source_language_manager_guess_language instead of
scanning mime types manually.
Modified:
branches/win32/ChangeLog
branches/win32/gedit/gedit-document.c
branches/win32/gedit/gedit-language-manager.c
branches/win32/gedit/gedit-language-manager.h
branches/win32/plugin-loaders/python/bindings/gedit.defs
Modified: branches/win32/gedit/gedit-document.c
==============================================================================
--- branches/win32/gedit/gedit-document.c (original)
+++ branches/win32/gedit/gedit-document.c Wed Dec 24 09:18:00 2008
@@ -739,6 +739,54 @@
return GEDIT_DOCUMENT (g_object_new (GEDIT_TYPE_DOCUMENT, NULL));
}
+static GtkSourceLanguage *
+guess_language (const gchar *uri,
+ const gchar *mime_type)
+
+{
+ gchar *data;
+ GtkSourceLanguage *language = NULL;
+
+ data = gedit_metadata_manager_get (uri, "language");
+
+ if (data != NULL)
+ {
+ gedit_debug_message (DEBUG_DOCUMENT, "Language from metadata: %s", data);
+
+ if (strcmp (data, "_NORMAL_") != 0)
+ {
+ language = gtk_source_language_manager_get_language (
+ gedit_get_language_manager (),
+ data);
+ }
+
+ g_free (data);
+ }
+ else
+ {
+ gedit_debug_message (DEBUG_DOCUMENT, "Sniffing Language");
+
+ if (strcmp (mime_type, "text/plain") != 0)
+ {
+ GFile *file;
+ gchar *basename;
+
+ file = g_file_new_for_uri (uri);
+ basename = g_file_get_basename (file);
+
+ language = gtk_source_language_manager_guess_language (
+ gedit_get_language_manager (),
+ basename,
+ mime_type);
+
+ g_free (basename);
+ g_object_unref (file);
+ }
+ }
+
+ return language;
+}
+
/* If mime type is null, we guess from the filename */
/* If uri is null, we only set the mime-type */
static void
@@ -796,35 +844,12 @@
if (!doc->priv->language_set_by_user)
{
- gchar *data;
- GtkSourceLanguage *language = NULL;
+ GtkSourceLanguage *language;
- data = gedit_metadata_manager_get (doc->priv->uri, "language");
+ language = guess_language (doc->priv->uri, doc->priv->mime_type);
- if (data != NULL)
- {
- gedit_debug_message (DEBUG_DOCUMENT, "Language: %s", data);
-
- if (strcmp (data, "_NORMAL_") != 0)
- {
- language = gtk_source_language_manager_get_language (
- gedit_get_language_manager (),
- data);
- }
-
- g_free (data);
- }
- else
- {
- gedit_debug_message (DEBUG_DOCUMENT, "Language Normal");
-
- if (strcmp (doc->priv->mime_type, "text/plain") != 0)
- {
- language = gedit_language_manager_get_language_from_mime_type (
- gedit_get_language_manager (),
- doc->priv->mime_type);
- }
- }
+ gedit_debug_message (DEBUG_DOCUMENT, "Language: %s",
+ language != NULL ? gtk_source_language_get_name (language) : "None");
set_language (doc, language, FALSE);
}
@@ -1226,7 +1251,7 @@
size = gedit_document_saver_get_file_size (saver);
written = gedit_document_saver_get_bytes_written (saver);
- gedit_debug_message (DEBUG_DOCUMENT, "save progress: %Lu of %Lu", written, size);
+ gedit_debug_message (DEBUG_DOCUMENT, "save progress: %" G_GINT64_FORMAT " of %" G_GINT64_FORMAT, written, size);
g_signal_emit (doc,
document_signals[SAVING],
Modified: branches/win32/gedit/gedit-language-manager.c
==============================================================================
--- branches/win32/gedit/gedit-language-manager.c (original)
+++ branches/win32/gedit/gedit-language-manager.c Wed Dec 24 09:18:00 2008
@@ -88,135 +88,3 @@
return g_slist_sort (languages, (GCompareFunc)language_compare);
}
-/* Returns a hash table that is used as a cache of already matched mime-types */
-static GHashTable *
-get_languages_cache (GtkSourceLanguageManager *lm)
-{
- static GQuark id = 0;
- GHashTable *res;
-
- if (id == 0)
- id = g_quark_from_static_string ("gedit_languages_manager_cache");
-
- res = (GHashTable *)g_object_get_qdata (G_OBJECT (lm), id);
- if (res == NULL)
- {
- res = g_hash_table_new_full (g_str_hash,
- g_str_equal,
- g_free,
- NULL);
-
- g_object_set_qdata_full (G_OBJECT (lm),
- id,
- res,
- (GDestroyNotify)g_hash_table_unref);
- }
-
- return res;
-}
-
-static GtkSourceLanguage *
-get_language_from_cache (GtkSourceLanguageManager *lm,
- const gchar *mime_type)
-{
- GHashTable *cache;
-
- cache = get_languages_cache (lm);
-
- return g_hash_table_lookup (cache, mime_type);
-}
-
-static void
-add_language_to_cache (GtkSourceLanguageManager *lm,
- const gchar *mime_type,
- GtkSourceLanguage *lang)
-{
- GHashTable *cache;
-
- cache = get_languages_cache (lm);
- g_hash_table_replace (cache, g_strdup (mime_type), lang);
-}
-
-GtkSourceLanguage *
-gedit_language_manager_get_language_from_mime_type (GtkSourceLanguageManager *lm,
- const gchar *mime_type)
-{
- const gchar* const *languages;
- GtkSourceLanguage *lang;
- GtkSourceLanguage *parent = NULL;
-
- g_return_val_if_fail (mime_type != NULL, NULL);
-
- lang = get_language_from_cache (lm, mime_type);
- if (lang != NULL)
- {
- gedit_debug_message (DEBUG_DOCUMENT,
- "Cache hit for %s", mime_type);
- return lang;
- }
- gedit_debug_message (DEBUG_DOCUMENT,
- "Cache miss for %s", mime_type);
-
- languages = gtk_source_language_manager_get_language_ids (lm);
- if (languages == NULL)
- return NULL;
-
- while (*languages != NULL)
- {
- gchar **mime_types;
- gchar *found = NULL;
- gint i;
-
- lang = gtk_source_language_manager_get_language (lm, *languages);
- g_return_val_if_fail (GTK_IS_SOURCE_LANGUAGE (lang), NULL);
- ++languages;
-
- mime_types = gtk_source_language_get_mime_types (lang);
- if (mime_types == NULL)
- continue;
-
- for (i = 0; mime_types[i] != NULL; ++i)
- {
- if (g_content_type_equals(mime_type, mime_types[i]))
- {
- /* If the mime-type of lang is identical to "mime-type" then
- return lang */
- gedit_debug_message (DEBUG_DOCUMENT,
- "%s is indentical to %s\n",
- mime_types[i], mime_type);
-
- found = mime_types[i];
-
- break;
- }
- else if (parent == NULL && g_content_type_is_a (mime_type, mime_types[i]))
- {
- /* If the mime-type of lang is a parent of "mime-type" then
- remember it. We will return it if we don't find
- an exact match. The first "parent" wins */
- parent = lang;
-
- gedit_debug_message (DEBUG_DOCUMENT,
- "%s is a parent of %s\n",
- mime_types[i], mime_type);
- }
- }
-
- if (found != NULL)
- {
- add_language_to_cache (lm, mime_type, lang);
-
- g_strfreev (mime_types);
-
- return lang;
- }
-
- g_strfreev (mime_types);
- }
-
- if (parent != NULL)
- add_language_to_cache (lm, mime_type, parent);
-
- return parent;
-}
-
Modified: branches/win32/gedit/gedit-language-manager.h
==============================================================================
--- branches/win32/gedit/gedit-language-manager.h (original)
+++ branches/win32/gedit/gedit-language-manager.h Wed Dec 24 09:18:00 2008
@@ -42,10 +42,6 @@
(GtkSourceLanguageManager *lm,
gboolean include_hidden);
-GtkSourceLanguage *gedit_language_manager_get_language_from_mime_type
- (GtkSourceLanguageManager *lm,
- const gchar *mime_type);
-
G_END_DECLS
#endif /* __GEDIT_LANGUAGES_MANAGER_H__ */
Modified: branches/win32/plugin-loaders/python/bindings/gedit.defs
==============================================================================
--- branches/win32/plugin-loaders/python/bindings/gedit.defs (original)
+++ branches/win32/plugin-loaders/python/bindings/gedit.defs Wed Dec 24 09:18:00 2008
@@ -988,15 +988,6 @@
)
)
-(define-function language_manager_get_language_from_mime_type
- (c-name "gedit_language_manager_get_language_from_mime_type")
- (return-type "GtkSourceLanguage*")
- (parameters
- '("GtkSourceLanguageManager*" "lm")
- '("const-gchar*" "mime_type")
- )
-)
-
;; From ../../gedit/gedit-debug.h
(define-function debug
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]