anjuta r4565 - in trunk: . plugins/sourceview



Author: jhs
Date: Sat Jan 10 22:22:04 2009
New Revision: 4565
URL: http://svn.gnome.org/viewvc/anjuta?rev=4565&view=rev

Log:
2009-01-10  Carl-Anton Ingmarsson <ca ingmarsson gmail com>

	reviewed by: Johannes Schmid  <jhs gnome org>

	* plugins/sourceview/sourceview.c (autodetect_language):
	#567156 â better autodetection of language

Modified:
   trunk/ChangeLog
   trunk/plugins/sourceview/sourceview.c

Modified: trunk/plugins/sourceview/sourceview.c
==============================================================================
--- trunk/plugins/sourceview/sourceview.c	(original)
+++ trunk/plugins/sourceview/sourceview.c	Sat Jan 10 22:22:04 2009
@@ -1825,42 +1825,24 @@
 static const gchar*
 autodetect_language (Sourceview* sv)
 {
-	GStrv languages;
-	GStrv cur_lang;
-	const gchar* detected_language = NULL;
-	g_object_get (G_OBJECT (gtk_source_language_manager_get_default ()), "language-ids",
-							&languages, NULL);
 	gchar* io_mime_type = sourceview_io_get_mime_type (sv->priv->io);
+	gchar* filename = sourceview_io_get_filename (sv->priv->io);
+	GtkSourceLanguage *language;
+	const gchar* detected_language = NULL;
 	
-	if (!io_mime_type)
-		return NULL;
+	language = gtk_source_language_manager_guess_language (gtk_source_language_manager_get_default (), filename, io_mime_type);
+	if (!language)
+		goto out;
 	
-	for (cur_lang = languages; *cur_lang != NULL; cur_lang++)
-	{
-		GtkSourceLanguage* language = 
-			gtk_source_language_manager_get_language (gtk_source_language_manager_get_default(),
-													  *cur_lang);
-		GStrv mime_types = gtk_source_language_get_mime_types (language);
-		if (!mime_types)
-			continue;
-		GStrv mime_type;
-		for (mime_type = mime_types; *mime_type != NULL; mime_type++)
-		{
-			if (g_str_equal (*mime_type, io_mime_type))
-			{
-				detected_language = gtk_source_language_get_id (language);				
-				g_signal_emit_by_name (G_OBJECT(sv), "language-changed", 
-									   detected_language);
-				gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (sv->priv->document), language);
-				g_strfreev (mime_types);
-				goto out;
-			}
-		}
-		g_strfreev (mime_types);
-	}
-	out:
-		g_strfreev(languages);
+	detected_language = gtk_source_language_get_id (language);	
+	
+	g_signal_emit_by_name (sv, "language-changed", detected_language);
+	gtk_source_buffer_set_language (GTK_SOURCE_BUFFER (sv->priv->document), language);
+	
+out:
+	if (io_mime_type)
 		g_free (io_mime_type);
+	g_free (filename);
 	
 	return detected_language;
 }



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]