[gspell/wip/current-word: 1/2] inline-checker-gtv: don't check neighbors words



commit 188ff31f7636c625f0f02ab63b8d6eb1a1866ede
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Fri Dec 11 15:35:55 2015 +0100

    inline-checker-gtv: don't check neighbors words
    
    And add many more assertions.

 gspell/gspell-inline-checker-gtv.c |   43 +++++++++++++++++++++++++++++------
 1 files changed, 35 insertions(+), 8 deletions(-)
---
diff --git a/gspell/gspell-inline-checker-gtv.c b/gspell/gspell-inline-checker-gtv.c
index 421ded1..a232d7f 100644
--- a/gspell/gspell-inline-checker-gtv.c
+++ b/gspell/gspell-inline-checker-gtv.c
@@ -169,9 +169,22 @@ check_subregion (GspellInlineCheckerGtv *spell,
        GtkTextIter end_adjusted;
        GtkTextIter word_start;
 
+       g_assert_cmpint (gtk_text_iter_compare (start, end), <=, 0);
+
        start_adjusted = *start;
        end_adjusted = *end;
-       adjust_iters (&start_adjusted, &end_adjusted);
+
+       if (gtk_text_iter_inside_word (&start_adjusted) &&
+           !gtk_text_iter_starts_word (&start_adjusted))
+       {
+               gtk_text_iter_backward_word_start (&start_adjusted);
+       }
+
+       if (gtk_text_iter_inside_word (&end_adjusted) &&
+           !gtk_text_iter_starts_word (&end_adjusted))
+       {
+               gtk_text_iter_forward_word_end (&end_adjusted);
+       }
 
        gtk_text_buffer_remove_tag (spell->buffer,
                                    spell->tag_highlight,
@@ -179,6 +192,20 @@ check_subregion (GspellInlineCheckerGtv *spell,
                                    &end_adjusted);
 
        word_start = start_adjusted;
+       if (!gtk_text_iter_starts_word (&word_start))
+       {
+               gtk_text_iter_forward_word_end (&word_start);
+
+               /* Didn't move, there is no words after @start_adjusted. */
+               if (gtk_text_iter_equal (&word_start, &start_adjusted))
+               {
+                       return;
+               }
+
+               gtk_text_iter_backward_word_start (&word_start);
+               g_assert (gtk_text_iter_starts_word (&word_start));
+               g_assert_cmpint (gtk_text_iter_compare (&start_adjusted, &word_start), <, 0);
+       }
 
        while (_gspell_utils_skip_no_spell_check (&word_start, &end_adjusted) &&
               gtk_text_iter_compare (&word_start, &end_adjusted) < 0)
@@ -186,21 +213,21 @@ check_subregion (GspellInlineCheckerGtv *spell,
                GtkTextIter word_end;
                GtkTextIter next_word_start;
 
+               g_assert (gtk_text_iter_starts_word (&word_start));
+
                word_end = word_start;
                gtk_text_iter_forward_word_end (&word_end);
 
-               if (gtk_text_iter_starts_word (&word_start) &&
-                   gtk_text_iter_ends_word (&word_end))
-               {
-                       check_word (spell, &word_start, &word_end);
-               }
+               g_assert_cmpint (gtk_text_iter_compare (&word_end, &end_adjusted), <=, 0);
+
+               check_word (spell, &word_start, &word_end);
 
                next_word_start = word_end;
                gtk_text_iter_forward_word_end (&next_word_start);
                gtk_text_iter_backward_word_start (&next_word_start);
 
-               /* Make sure we've actually advanced (we don't advance if we are
-                * at the end of the buffer).
+               /* Make sure we've actually advanced (we don't advance if we
+                * have just checked the last word of the buffer).
                 */
                if (gtk_text_iter_compare (&next_word_start, &word_start) <= 0)
                {


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