gboolean ide_editor_spell_utils_text_iter_inside_word (const GtkTextIter *iter) { g_return_val_if_fail (iter != NULL, FALSE); if (gtk_text_iter_inside_word (iter)) return TRUE; if (gtk_text_iter_ends_word (iter) && is__text_iter_apostrophe_or_dash (iter)) { GtkTextIter next_char = *iter; gtk_text_iter_forward_char (&next_char); return gtk_text_iter_starts_word (&next_char); } return FALSE; }
gboolean ide_editor_spell_utils_text_iter_backward_word_start (GtkTextIter *iter) { g_return_val_if_fail (iter != NULL, FALSE); while (gtk_text_iter_backward_word_start (iter)) { GtkTextIter prev_char = *iter; if (!gtk_text_iter_backward_char (&prev_char) || !is__text_iter_apostrophe_or_dash (&prev_char) || !gtk_text_iter_ends_word (&prev_char)) return TRUE; *iter = prev_char; } return FALSE; }
gboolean ide_editor_spell_utils_text_iter_starts_word (const GtkTextIter *iter) { GtkTextIter prev_char; g_return_val_if_fail (iter != NULL, FALSE); if (!gtk_text_iter_starts_word (iter)) return FALSE; prev_char = *iter; if (!gtk_text_iter_backward_char (&prev_char)) return TRUE; if (is__text_iter_apostrophe_or_dash (&prev_char) && gtk_text_iter_ends_word (&prev_char)) return FALSE; return TRUE; }
gboolean ide_editor_spell_utils_text_iter_forward_word_end (GtkTextIter *iter) { g_return_val_if_fail (iter != NULL, FALSE); while (gtk_text_iter_forward_word_end (iter)) { GtkTextIter next_char; if (!is__text_iter_apostrophe_or_dash (iter)) return TRUE; next_char = *iter; gtk_text_iter_forward_char (&next_char); if (!gtk_text_iter_starts_word (&next_char)) return TRUE; *iter = next_char; } return FALSE; }
gboolean gbp_spell_utils_text_iter_ends_word (const GtkTextIter *iter) { GtkTextIter next_char; g_return_val_if_fail (iter != NULL, FALSE); if (!gtk_text_iter_ends_word (iter)) return FALSE; if (gtk_text_iter_is_end (iter)) return TRUE; next_char = *iter; gtk_text_iter_forward_char (&next_char); if (is__text_iter_apostrophe_or_dash (iter) && gtk_text_iter_starts_word (&next_char)) return FALSE; return TRUE; }