SF.net SVN: geany-plugins:[253] trunk/spellcheck

eht16 at users.sourceforge.net eht16 at xxxxx
Sat Oct 25 16:10:47 UTC 2008


Revision: 253
          http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=253&view=rev
Author:   eht16
Date:     2008-10-25 16:10:46 +0000 (Sat, 25 Oct 2008)

Log Message:
-----------
If showing suggestions in the messages window is disabled, don't check for suggestions at all, this heavily reduces the time needed for a full document check.

Modified Paths:
--------------
    trunk/spellcheck/ChangeLog
    trunk/spellcheck/src/speller.c
    trunk/spellcheck/src/speller.h

Modified: trunk/spellcheck/ChangeLog
===================================================================
--- trunk/spellcheck/ChangeLog	2008-10-25 15:33:03 UTC (rev 252)
+++ trunk/spellcheck/ChangeLog	2008-10-25 16:10:46 UTC (rev 253)
@@ -4,6 +4,9 @@
    Add some error checking and prevent crashes if Enchant doesn't
    provide any dictionaries.
    Plug a little memory leak.
+   If showing suggestions in the messages window is disabled, don't
+   check for suggestions at all, this heavily reduces the time needed
+   for a full document check.
  * src/gui.c:
    Ignore numbers when updating the editor menu.
    Rename the editor menu item to 'Spelling Suggestions'.

Modified: trunk/spellcheck/src/speller.c
===================================================================
--- trunk/spellcheck/src/speller.c	2008-10-25 15:33:03 UTC (rev 252)
+++ trunk/spellcheck/src/speller.c	2008-10-25 16:10:46 UTC (rev 253)
@@ -57,16 +57,16 @@
 }
 
 
-gint speller_check_word(GeanyDocument *doc, gint line_number, const gchar *word,
+static gint speller_check_word(GeanyDocument *doc, gint line_number, const gchar *word,
 					    gint start_pos, gint end_pos)
 {
-	gsize j;
 	gsize n_suggs = 0;
-	gchar **suggs;
-	GString *str;
 
 	g_return_val_if_fail(speller_dict != NULL, 0);
 
+	if (! NZV(word))
+		return 0;
+
 	/* ignore numbers or words starting with digits */
 	if (isdigit(*word))
 		return 0;
@@ -75,33 +75,39 @@
 	if (enchant_dict_check(speller_dict, word, -1) == 0)
 		return 0;
 
-	str = g_string_sized_new(256);
-	suggs = enchant_dict_suggest(speller_dict, word, -1, &n_suggs);
+	if (start_pos == -1)
+		start_pos = end_pos - strlen(word);
 
-	if (suggs != NULL)
+	p_editor->set_indicator(doc->editor, start_pos, end_pos);
+
+	if (sc->use_msgwin)
 	{
-		g_string_append_printf(str, "line %d: %s | ",  line_number + 1, word);
+		gsize j;
+		gchar **suggs;
+		GString *str;
 
-		g_string_append(str, _("Try: "));
-
-		/* Now find the misspellings in the line, limit suggestions to a maximum of 15 (for now) */
-		for (j = 0; j < MIN(n_suggs, 15); j++)
+		str = g_string_sized_new(256);
+		suggs = enchant_dict_suggest(speller_dict, word, -1, &n_suggs);
+		if (suggs != NULL)
 		{
-			g_string_append(str, suggs[j]);
-			g_string_append_c(str, ' ');
-		}
+			g_string_append_printf(str, "line %d: %s | ",  line_number + 1, word);
 
-		if (start_pos == -1)
-			start_pos = end_pos - strlen(word);
+			g_string_append(str, _("Try: "));
 
-		p_editor->set_indicator(doc->editor, start_pos, end_pos);
-		if (sc->use_msgwin)
+			/* Now find the misspellings in the line, limit suggestions to a maximum of 15 (for now) */
+			for (j = 0; j < MIN(n_suggs, 15); j++)
+			{
+				g_string_append(str, suggs[j]);
+				g_string_append_c(str, ' ');
+			}
+
 			p_msgwindow->msg_add(COLOR_RED, line_number + 1, doc, "%s", str->str);
 
-		if (suggs != NULL && n_suggs)
-			enchant_dict_free_string_list(speller_dict, suggs);
+			if (suggs != NULL && n_suggs > 0)
+				enchant_dict_free_string_list(speller_dict, suggs);
+		}
+		g_string_free(str, TRUE);
 	}
-	g_string_free(str, TRUE);
 
 	return n_suggs;
 }
@@ -194,7 +200,6 @@
 
 		g_free(line);
 	}
-
 	if (suggestions_found == 0 && sc->use_msgwin)
 		p_msgwindow->msg_add(COLOR_BLUE, -1, NULL, _("The checked text is spelled correctly."));
 }

Modified: trunk/spellcheck/src/speller.h
===================================================================
--- trunk/spellcheck/src/speller.h	2008-10-25 15:33:03 UTC (rev 252)
+++ trunk/spellcheck/src/speller.h	2008-10-25 16:10:46 UTC (rev 253)
@@ -27,9 +27,6 @@
 #define SC_SPELLER_H 1
 
 
-gint speller_check_word(GeanyDocument *doc, gint line_number, const gchar *word,
-					    gint start_pos, gint end_pos);
-
 gint speller_process_line(GeanyDocument *doc, gint line_number, const gchar *line);
 
 void speller_check_document(GeanyDocument *doc);


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Plugins-Commits mailing list