Revision: 298 http://geany-plugins.svn.sourceforge.net/geany-plugins/?rev=298&view=rev Author: eht16 Date: 2008-11-15 17:17:33 +0000 (Sat, 15 Nov 2008)
Log Message: ----------- When replacing a misspelled word with a suggestion, add this replacement to the spell checker to remember it in further checks.
Modified Paths: -------------- trunk/spellcheck/src/gui.c trunk/spellcheck/src/speller.c trunk/spellcheck/src/speller.h
Modified: trunk/spellcheck/src/gui.c =================================================================== --- trunk/spellcheck/src/gui.c 2008-11-14 01:37:06 UTC (rev 297) +++ trunk/spellcheck/src/gui.c 2008-11-15 17:17:33 UTC (rev 298) @@ -139,6 +139,7 @@ { gchar *sugg = gdata; gint startword, endword; + ScintillaObject *sci = clickinfo.doc->editor->sci;
if (clickinfo.doc == NULL || clickinfo.pos == -1) { @@ -146,20 +147,30 @@ return; }
- startword = p_sci->send_message( - clickinfo.doc->editor->sci, SCI_WORDSTARTPOSITION, clickinfo.pos, 0); - endword = p_sci->send_message( - clickinfo.doc->editor->sci, SCI_WORDENDPOSITION, clickinfo.pos, 0); + startword = p_sci->send_message(sci, SCI_WORDSTARTPOSITION, clickinfo.pos, 0); + endword = p_sci->send_message(sci, SCI_WORDENDPOSITION, clickinfo.pos, 0);
if (startword != endword) { - p_sci->set_selection_start(clickinfo.doc->editor->sci, startword); - p_sci->set_selection_end(clickinfo.doc->editor->sci, endword); - p_sci->replace_sel(clickinfo.doc->editor->sci, sugg); + gchar *word; + + p_sci->set_selection_start(sci, startword); + p_sci->set_selection_end(sci, endword); + + /* retrieve the old text */ + word = g_malloc(p_sci->get_selected_text_length(sci) + 1); + p_sci->get_selected_text(sci, word); + + /* replace the misspelled word with the chosen suggestion */ + p_sci->replace_sel(sci, sugg);
- /** TODO replace word */ + /* store the replacement for future checks */ + speller_store_replacement(word, sugg);
- p_sci->indicator_clear(clickinfo.doc->editor->sci, startword, endword - startword); + /* remove indicator */ + p_sci->indicator_clear(sci, startword, endword - startword); + + g_free(word); } }
Modified: trunk/spellcheck/src/speller.c =================================================================== --- trunk/spellcheck/src/speller.c 2008-11-14 01:37:06 UTC (rev 297) +++ trunk/spellcheck/src/speller.c 2008-11-15 17:17:33 UTC (rev 298) @@ -122,10 +122,16 @@ { gint pos_start, pos_end; gint wstart, wend; - GString *str = g_string_sized_new(256); + GString *str; gint suggestions_found = 0; gchar c;
+ g_return_val_if_fail(speller_dict != NULL, 0); + g_return_val_if_fail(doc != NULL, 0); + g_return_val_if_fail(line != NULL, 0); + + str = g_string_sized_new(256); + pos_start = p_sci->get_position_from_line(doc->editor->sci, line_number); /* TODO use SCI_GETLINEENDPOSITION */ pos_end = p_sci->get_position_from_line(doc->editor->sci, line_number + 1); @@ -169,6 +175,7 @@ gint suggestions_found = 0;
g_return_if_fail(speller_dict != NULL); + g_return_if_fail(doc != NULL);
enchant_dict_describe(speller_dict, dict_describe, &dict_string);
@@ -349,12 +356,16 @@
void speller_add_word(const gchar *word) { + g_return_if_fail(speller_dict != NULL); + g_return_if_fail(word != NULL); + enchant_dict_add_to_pwl(speller_dict, clickinfo.word, -1); }
gboolean speller_dict_check(const gchar *word) { g_return_val_if_fail(speller_dict != NULL, FALSE); + g_return_val_if_fail(word != NULL, FALSE);
return enchant_dict_check(speller_dict, word, -1); } @@ -363,6 +374,7 @@ gchar **speller_dict_suggest(const gchar *word, gsize *n_suggs) { g_return_val_if_fail(speller_dict != NULL, NULL); + g_return_val_if_fail(word != NULL, NULL);
return enchant_dict_suggest(speller_dict, word, -1, n_suggs); } @@ -371,11 +383,22 @@ void speller_add_word_to_session(const gchar *word) { g_return_if_fail(speller_dict != NULL); + g_return_if_fail(word != NULL);
enchant_dict_add_to_session(speller_dict, word, -1); }
+void speller_store_replacement(const gchar *old_word, const gchar *new_word) +{ + g_return_if_fail(speller_dict != NULL); + g_return_if_fail(old_word != NULL); + g_return_if_fail(new_word != NULL); + + enchant_dict_store_replacement(speller_dict, old_word, -1, new_word, -1); +} + + void speller_init(void) { speller_broker = enchant_broker_init();
Modified: trunk/spellcheck/src/speller.h =================================================================== --- trunk/spellcheck/src/speller.h 2008-11-14 01:37:06 UTC (rev 297) +++ trunk/spellcheck/src/speller.h 2008-11-15 17:17:33 UTC (rev 298) @@ -47,6 +47,8 @@
void speller_add_word_to_session(const gchar *word);
+void speller_store_replacement(const gchar *old_word, const gchar *new_word); + void speller_init(void);
void speller_free(void);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
plugins-commits@lists.geany.org