gedit r6932 - in trunk: . plugins/modelines



Author: pborelli
Date: Mon Mar  2 01:05:44 2009
New Revision: 6932
URL: http://svn.gnome.org/viewvc/gedit?rev=6932&view=rev

Log:
2009-03-01  Paolo Borelli  <pborelli katamail com>

	* plugins/modelines/modeline-parser.c:
	Fix logic use to select lines to scan for modelines to
	be more careful about empty lines and end of buffer.



Modified:
   trunk/ChangeLog
   trunk/plugins/modelines/modeline-parser.c

Modified: trunk/plugins/modelines/modeline-parser.c
==============================================================================
--- trunk/plugins/modelines/modeline-parser.c	(original)
+++ trunk/plugins/modelines/modeline-parser.c	Mon Mar  2 01:05:44 2009
@@ -527,7 +527,6 @@
 	ModelineOptions options;
 	GtkTextBuffer *buffer;
 	GtkTextIter iter, liter;
-	gint line_number;
 	gint line_count;
 
 	/* Default values for modeline options */
@@ -543,11 +542,12 @@
 
 	buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (view));
 	gtk_text_buffer_get_start_iter (buffer, &iter);
-	line_number = 0;
+
 	line_count = gtk_text_buffer_get_line_count (buffer);
 
 	/* Parse the modelines on the 10 first lines... */
-	while (line_number < 10 && line_number < line_count)
+	while ((gtk_text_iter_get_line (&iter) < 10) &&
+	       !gtk_text_iter_is_end (&iter))
 	{
 		gchar *line;
 
@@ -555,23 +555,30 @@
 		gtk_text_iter_forward_to_line_end (&iter);
 		line = gtk_text_buffer_get_text (buffer, &liter, &iter, TRUE);
 
-		parse_modeline (line, line_number, line_count, &options);
+		parse_modeline (line,
+				1 + gtk_text_iter_get_line (&iter),
+				line_count,
+				&options);
+
+		gtk_text_iter_forward_line (&iter);
 
 		g_free (line);
-		line_number ++;
 	}
 
 	/* ...and on the 10 last ones (modelines are not allowed in between) */
-	if (line_number < line_count - 10)
+	if (!gtk_text_iter_is_end (&iter))
 	{
-		guint remaining_lines = line_count - line_number - 1;
+		gint cur_line;
+		guint remaining_lines;
+
+		cur_line = gtk_text_iter_get_line (&iter);
+
+		remaining_lines = line_count - cur_line - 1;
 		gtk_text_buffer_get_end_iter (buffer, &iter);
-		gtk_text_iter_backward_lines (&iter,
-					      MIN (10, remaining_lines));
-		line_number = line_count - 11;
+		gtk_text_iter_backward_lines (&iter, MIN (10, remaining_lines));
 	}
 
-	while (line_number < line_count)
+	while (!gtk_text_iter_is_end (&iter))
 	{
 		gchar *line;
 
@@ -579,10 +586,14 @@
 		gtk_text_iter_forward_to_line_end (&iter);
 		line = gtk_text_buffer_get_text (buffer, &liter, &iter, TRUE);
 
-		parse_modeline (line, line_number, line_count, &options);
+		parse_modeline (line,
+				1 + gtk_text_iter_get_line (&iter),
+				line_count,
+				&options);
+
+		gtk_text_iter_forward_line (&iter);
 
 		g_free (line);
-		line_number ++;
 	}
 
 	/* Try to set language */



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