Mercurial > pidgin
comparison plugins/spellchk.c @ 11150:0ef4fbeeefaf
[gaim-migrate @ 13230]
1. Hack around the case where period is being used as an abbreviation instead of as a full stop.
2. Fix a couple memory leaks.
3. Commit some additions to the correction list that have been building up since the big patch to this file was accepted.
committer: Tailor Script <tailor@pidgin.im>
| author | Richard Laager <rlaager@wiktel.com> |
|---|---|
| date | Sun, 24 Jul 2005 08:15:55 +0000 |
| parents | 2714b51a0dad |
| children | a4ce03725025 |
comparison
equal
deleted
inserted
replaced
| 11149:239918d22c5f | 11150:0ef4fbeeefaf |
|---|---|
| 210 | 210 |
| 211 /* Pango doesn't know about the "'" character. Let's fix that. */ | 211 /* Pango doesn't know about the "'" character. Let's fix that. */ |
| 212 static gboolean | 212 static gboolean |
| 213 spellchk_inside_word(GtkTextIter *iter) | 213 spellchk_inside_word(GtkTextIter *iter) |
| 214 { | 214 { |
| 215 gunichar ucs4_char = gtk_text_iter_get_char(iter); | |
| 216 gchar *utf8_str; | |
| 217 gchar c = 0; | |
| 215 gboolean result; | 218 gboolean result; |
| 216 gboolean output; | 219 gboolean output; |
| 217 | 220 |
| 221 utf8_str = g_ucs4_to_utf8(&ucs4_char, 1, NULL, NULL, NULL); | |
| 222 if (utf8_str != NULL) | |
| 223 { | |
| 224 c = utf8_str[0]; | |
| 225 g_free(utf8_str); | |
| 226 } | |
| 227 | |
| 228 /* Hack because otherwise typing things like U.S. gets difficult | |
| 229 * if you have 'u' -> 'you' set as a correction... | |
| 230 * | |
| 231 * Part 1 of 2: This marks . as being an inside-word character. */ | |
| 232 if (c == '.') | |
| 233 return TRUE; | |
| 234 | |
| 218 if (gtk_text_iter_inside_word (iter) == TRUE) | 235 if (gtk_text_iter_inside_word (iter) == TRUE) |
| 219 return TRUE; | 236 return TRUE; |
| 220 | 237 |
| 221 if (gtk_text_iter_get_char(iter) == '\'') { | 238 if (c == '\'') { |
| 222 result = gtk_text_iter_backward_char(iter); | 239 result = gtk_text_iter_backward_char(iter); |
| 223 output = gtk_text_iter_inside_word(iter); | 240 output = gtk_text_iter_inside_word(iter); |
| 224 | 241 |
| 225 if (result) | 242 if (result) |
| 226 gtk_text_iter_forward_char(iter); | 243 gtk_text_iter_forward_char(iter); |
| 267 static void | 284 static void |
| 268 check_range(spellchk *spell, GtkTextBuffer *buffer, | 285 check_range(spellchk *spell, GtkTextBuffer *buffer, |
| 269 GtkTextIter start, GtkTextIter end) { | 286 GtkTextIter start, GtkTextIter end) { |
| 270 | 287 |
| 271 gboolean result; | 288 gboolean result; |
| 289 gchar *tmp; | |
| 290 int period_count = 0; | |
| 272 gchar *word; | 291 gchar *word; |
| 273 | 292 |
| 274 /* We need to go backwords to find out if we are inside a word or not. */ | 293 /* We need to go backwords to find out if we are inside a word or not. */ |
| 275 gtk_text_iter_backward_char(&end); | 294 gtk_text_iter_backward_char(&end); |
| 276 | 295 |
| 292 gtk_text_iter_forward_char(&end); | 311 gtk_text_iter_forward_char(&end); |
| 293 | 312 |
| 294 /* Move backwards to the beginning of the word. */ | 313 /* Move backwards to the beginning of the word. */ |
| 295 spellchk_backward_word_start(&start); | 314 spellchk_backward_word_start(&start); |
| 296 | 315 |
| 297 spell->word = g_strdup(gtk_text_iter_get_text(&start, &end)); | 316 spell->word = gtk_text_iter_get_text(&start, &end); |
| 298 if ((word = substitute_word(gtk_text_iter_get_text(&start, &end)))) { | 317 |
| 318 /* Hack because otherwise typing things like U.S. gets difficult | |
| 319 * if you have 'u' -> 'you' set as a correction... | |
| 320 * | |
| 321 * Part 2 of 2: This chops periods off the end of the word so | |
| 322 * the right substitution entry is found. */ | |
| 323 tmp = g_strdup(spell->word); | |
| 324 if (tmp != NULL && *tmp != '\0') { | |
| 325 gchar *c; | |
| 326 for (c = tmp + strlen(tmp) - 1 ; c != tmp ; c--) { | |
| 327 if (*c == '.') { | |
| 328 *c = '\0'; | |
| 329 period_count++; | |
| 330 } else | |
| 331 break; | |
| 332 } | |
| 333 } | |
| 334 | |
| 335 if ((word = substitute_word(tmp))) { | |
| 299 GtkTextMark *mark; | 336 GtkTextMark *mark; |
| 300 GtkTextIter pos; | 337 GtkTextIter pos; |
| 338 gchar *tmp2; | |
| 339 int i; | |
| 340 | |
| 341 for (i = 1 ; i <= period_count ; i++) { | |
| 342 tmp2 = g_strconcat(word, ".", NULL); | |
| 343 g_free(word); | |
| 344 word = tmp2; | |
| 345 } | |
| 301 | 346 |
| 302 gtk_text_buffer_delete(buffer, &start, &end); | 347 gtk_text_buffer_delete(buffer, &start, &end); |
| 303 gtk_text_buffer_insert(buffer, &start, word, -1); | 348 gtk_text_buffer_insert(buffer, &start, word, -1); |
| 304 | 349 |
| 305 mark = gtk_text_buffer_get_insert(buffer); | 350 mark = gtk_text_buffer_get_insert(buffer); |
| 306 gtk_text_buffer_get_iter_at_mark(buffer, &pos, mark); | 351 gtk_text_buffer_get_iter_at_mark(buffer, &pos, mark); |
| 307 spell->pos = gtk_text_iter_get_offset(&pos); | 352 spell->pos = gtk_text_iter_get_offset(&pos); |
| 308 | 353 |
| 354 g_free(word); | |
| 355 g_free(tmp); | |
| 309 return; | 356 return; |
| 310 } | 357 } |
| 358 g_free(tmp); | |
| 311 | 359 |
| 312 /* g_free(spell->word); */ | 360 /* g_free(spell->word); */ |
| 313 spell->word = NULL; | 361 spell->word = NULL; |
| 314 | 362 |
| 315 } | 363 } |
| 524 "BAD agreemnet\nGOOD agreement\n" | 572 "BAD agreemnet\nGOOD agreement\n" |
| 525 "BAD agreemnets\nGOOD agreements\n" | 573 "BAD agreemnets\nGOOD agreements\n" |
| 526 "BAD agressive\nGOOD aggressive\n" | 574 "BAD agressive\nGOOD aggressive\n" |
| 527 "BAD agressiveness\nGOOD aggressiveness\n" | 575 "BAD agressiveness\nGOOD aggressiveness\n" |
| 528 "BAD ahd\nGOOD had\n" | 576 "BAD ahd\nGOOD had\n" |
| 577 "BAD ahold\nGOOD a hold\n" | |
| 529 "BAD ahppen\nGOOD happen\n" | 578 "BAD ahppen\nGOOD happen\n" |
| 530 "BAD ahve\nGOOD have\n" | 579 "BAD ahve\nGOOD have\n" |
| 531 "BAD allready\nGOOD already\n" | 580 "BAD allready\nGOOD already\n" |
| 532 "BAD allwasy\nGOOD always\n" | 581 "BAD allwasy\nGOOD always\n" |
| 533 "BAD allwyas\nGOOD always\n" | 582 "BAD allwyas\nGOOD always\n" |
| 695 "BAD comunity\nGOOD community\n" | 744 "BAD comunity\nGOOD community\n" |
| 696 "BAD condolances\nGOOD condolences\n" | 745 "BAD condolances\nGOOD condolences\n" |
| 697 "BAD conected\nGOOD connected\n" | 746 "BAD conected\nGOOD connected\n" |
| 698 "BAD conferance\nGOOD conference\n" | 747 "BAD conferance\nGOOD conference\n" |
| 699 "BAD confirmmation\nGOOD confirmation\n" | 748 "BAD confirmmation\nGOOD confirmation\n" |
| 749 "BAD congradulations\nGOOD congratulations\n" | |
| 700 "BAD considerit\nGOOD considerate\n" | 750 "BAD considerit\nGOOD considerate\n" |
| 701 "BAD considerite\nGOOD considerate\n" | 751 "BAD considerite\nGOOD considerate\n" |
| 702 "BAD consonent\nGOOD consonant\n" | 752 "BAD consonent\nGOOD consonant\n" |
| 703 "BAD conspiricy\nGOOD conspiracy\n" | 753 "BAD conspiricy\nGOOD conspiracy\n" |
| 704 "BAD consultent\nGOOD consultant\n" | 754 "BAD consultent\nGOOD consultant\n" |
| 719 "BAD couldthe\nGOOD could the\n" | 769 "BAD couldthe\nGOOD could the\n" |
| 720 "BAD couldve\nGOOD could've\n" | 770 "BAD couldve\nGOOD could've\n" |
| 721 "BAD cpoy\nGOOD copy\n" | 771 "BAD cpoy\nGOOD copy\n" |
| 722 "BAD creme\nGOOD crème\n" | 772 "BAD creme\nGOOD crème\n" |
| 723 "BAD ctaegory\nGOOD category\n" | 773 "BAD ctaegory\nGOOD category\n" |
| 774 "BAD cu\nGOOD see you\n" | |
| 724 "BAD cusotmer\nGOOD customer\n" | 775 "BAD cusotmer\nGOOD customer\n" |
| 725 "BAD cusotmers\nGOOD customers\n" | 776 "BAD cusotmers\nGOOD customers\n" |
| 726 "BAD cutsomer\nGOOD customer\n" | 777 "BAD cutsomer\nGOOD customer\n" |
| 727 "BAD cutsomers\nGOOD customer\n" | 778 "BAD cutsomers\nGOOD customer\n" |
| 728 "BAD cuz\nGOOD because\n" | 779 "BAD cuz\nGOOD because\n" |
| 793 "BAD doign\nGOOD doing\n" | 844 "BAD doign\nGOOD doing\n" |
| 794 "BAD doimg\nGOOD doing\n" | 845 "BAD doimg\nGOOD doing\n" |
| 795 "BAD doind\nGOOD doing\n" | 846 "BAD doind\nGOOD doing\n" |
| 796 "BAD dollers\nGOOD dollars\n" | 847 "BAD dollers\nGOOD dollars\n" |
| 797 "BAD donig\nGOOD doing\n" | 848 "BAD donig\nGOOD doing\n" |
| 849 "BAD donno\nGOOD don't know\n" | |
| 798 "BAD dont\nGOOD don't\n" | 850 "BAD dont\nGOOD don't\n" |
| 799 "BAD do'nt\nGOOD don't\n" | 851 "BAD do'nt\nGOOD don't\n" |
| 800 "BAD don;t\nGOOD don't\n" | 852 "BAD don;t\nGOOD don't\n" |
| 801 "BAD don't no\nGOOD don't know\n" | 853 "BAD don't no\nGOOD don't know\n" |
| 802 "BAD dosn't\nGOOD doesn't\n" | 854 "BAD dosn't\nGOOD doesn't\n" |
| 803 "BAD driveing\nGOOD driving\n" | 855 "BAD driveing\nGOOD driving\n" |
| 804 "BAD drnik\nGOOD drink\n" | 856 "BAD drnik\nGOOD drink\n" |
| 857 "BAD dunno\nGOOD don't know\n" | |
| 805 "BAD eclair\nGOOD éclair\n" | 858 "BAD eclair\nGOOD éclair\n" |
| 806 "BAD efel\nGOOD feel\n" | 859 "BAD efel\nGOOD feel\n" |
| 807 "BAD effecient\nGOOD efficient\n" | 860 "BAD effecient\nGOOD efficient\n" |
| 808 "BAD efort\nGOOD effort\n" | 861 "BAD efort\nGOOD effort\n" |
| 809 "BAD eforts\nGOOD efforts\n" | 862 "BAD eforts\nGOOD efforts\n" |
| 811 "BAD eligable\nGOOD eligible\n" | 864 "BAD eligable\nGOOD eligible\n" |
| 812 "BAD embarass\nGOOD embarrass\n" | 865 "BAD embarass\nGOOD embarrass\n" |
| 813 "BAD emigre\nGOOD émigré\n" | 866 "BAD emigre\nGOOD émigré\n" |
| 814 "BAD enought\nGOOD enough\n" | 867 "BAD enought\nGOOD enough\n" |
| 815 "BAD entree\nGOOD entrée\n" | 868 "BAD entree\nGOOD entrée\n" |
| 869 "BAD enuf\nGOOD enough\n" | |
| 816 "BAD equippment\nGOOD equipment\n" | 870 "BAD equippment\nGOOD equipment\n" |
| 817 "BAD equivalant\nGOOD equivalent\n" | 871 "BAD equivalant\nGOOD equivalent\n" |
| 818 "BAD esle\nGOOD else\n" | 872 "BAD esle\nGOOD else\n" |
| 819 "BAD especally\nGOOD especially\n" | 873 "BAD especally\nGOOD especially\n" |
| 820 "BAD especialyl\nGOOD especially\n" | 874 "BAD especialyl\nGOOD especially\n" |
| 913 "BAD hesaid\nGOOD he said\n" | 967 "BAD hesaid\nGOOD he said\n" |
| 914 "BAD hewas\nGOOD he was\n" | 968 "BAD hewas\nGOOD he was\n" |
| 915 "BAD hge\nGOOD he\n" | 969 "BAD hge\nGOOD he\n" |
| 916 "BAD hismelf\nGOOD himself\n" | 970 "BAD hismelf\nGOOD himself\n" |
| 917 "BAD hlep\nGOOD help\n" | 971 "BAD hlep\nGOOD help\n" |
| 972 "BAD hott\nGOOD hot\n" | |
| 918 "BAD hows\nGOOD how's\n" | 973 "BAD hows\nGOOD how's\n" |
| 919 "BAD hsa\nGOOD has\n" | 974 "BAD hsa\nGOOD has\n" |
| 920 "BAD hse\nGOOD she\n" | 975 "BAD hse\nGOOD she\n" |
| 921 "BAD hsi\nGOOD his\n" | 976 "BAD hsi\nGOOD his\n" |
| 922 "BAD hte\nGOOD the\n" | 977 "BAD hte\nGOOD the\n" |
| 931 "BAD httpL\nGOOD http:\n" | 986 "BAD httpL\nGOOD http:\n" |
| 932 "BAD hvae\nGOOD have\n" | 987 "BAD hvae\nGOOD have\n" |
| 933 "BAD hvaing\nGOOD having\n" | 988 "BAD hvaing\nGOOD having\n" |
| 934 "BAD hwich\nGOOD which\n" | 989 "BAD hwich\nGOOD which\n" |
| 935 "BAD i\nGOOD I\n" | 990 "BAD i\nGOOD I\n" |
| 991 "BAD i c\nGOOD I see\n" | |
| 936 "BAD i;d\nGOOD I'd\n" | 992 "BAD i;d\nGOOD I'd\n" |
| 937 "BAD i'd\nGOOD I'd\n" | 993 "BAD i'd\nGOOD I'd\n" |
| 938 "BAD I;d\nGOOD I'd\n" | 994 "BAD I;d\nGOOD I'd\n" |
| 939 "BAD idae\nGOOD idea\n" | 995 "BAD idae\nGOOD idea\n" |
| 940 "BAD idaes\nGOOD ideas\n" | 996 "BAD idaes\nGOOD ideas\n" |
| 1012 "BAD konw\nGOOD know\n" | 1068 "BAD konw\nGOOD know\n" |
| 1013 "BAD konwn\nGOOD known\n" | 1069 "BAD konwn\nGOOD known\n" |
| 1014 "BAD konws\nGOOD knows\n" | 1070 "BAD konws\nGOOD knows\n" |
| 1015 "BAD labratory\nGOOD laboratory\n" | 1071 "BAD labratory\nGOOD laboratory\n" |
| 1016 "BAD lastyear\nGOOD last year\n" | 1072 "BAD lastyear\nGOOD last year\n" |
| 1073 "BAD laterz\nGOOD later\n" | |
| 1017 "BAD learnign\nGOOD learning\n" | 1074 "BAD learnign\nGOOD learning\n" |
| 1018 "BAD lenght\nGOOD length\n" | 1075 "BAD lenght\nGOOD length\n" |
| 1019 "BAD let;s\nGOOD let's\n" | 1076 "BAD let;s\nGOOD let's\n" |
| 1020 "BAD let's him\nGOOD lets him\n" | 1077 "BAD let's him\nGOOD lets him\n" |
| 1021 "BAD let's it\nGOOD lets it\n" | 1078 "BAD let's it\nGOOD lets it\n" |
| 1064 "BAD must of been\nGOOD must have been\n" | 1121 "BAD must of been\nGOOD must have been\n" |
| 1065 "BAD must of had\nGOOD must have had\n" | 1122 "BAD must of had\nGOOD must have had\n" |
| 1066 "BAD mysefl\nGOOD myself\n" | 1123 "BAD mysefl\nGOOD myself\n" |
| 1067 "BAD myu\nGOOD my\n" | 1124 "BAD myu\nGOOD my\n" |
| 1068 "BAD naive\nGOOD naïve\n" | 1125 "BAD naive\nGOOD naïve\n" |
| 1126 "BAD ne way\nGOOD anyway\n" | |
| 1127 "BAD ne ways\nGOOD anyways\n" | |
| 1069 "BAD ne1\nGOOD anyone\n" | 1128 "BAD ne1\nGOOD anyone\n" |
| 1129 "BAD neway\nGOOD anyway\n" | |
| 1130 "BAD neways\nGOOD anyways\n" | |
| 1070 "BAD necassarily\nGOOD necessarily\n" | 1131 "BAD necassarily\nGOOD necessarily\n" |
| 1071 "BAD necassary\nGOOD necessary\n" | 1132 "BAD necassary\nGOOD necessary\n" |
| 1072 "BAD neccessarily\nGOOD necessarily\n" | 1133 "BAD neccessarily\nGOOD necessarily\n" |
| 1073 "BAD neccessary\nGOOD necessary\n" | 1134 "BAD neccessary\nGOOD necessary\n" |
| 1074 "BAD necesarily\nGOOD necessarily\n" | 1135 "BAD necesarily\nGOOD necessarily\n" |
| 1081 "BAD nwe\nGOOD new\n" | 1142 "BAD nwe\nGOOD new\n" |
| 1082 "BAD nwo\nGOOD now\n" | 1143 "BAD nwo\nGOOD now\n" |
| 1083 "BAD obediant\nGOOD obedient\n" | 1144 "BAD obediant\nGOOD obedient\n" |
| 1084 "BAD ocasion\nGOOD occasion\n" | 1145 "BAD ocasion\nGOOD occasion\n" |
| 1085 "BAD occassion\nGOOD occasion\n" | 1146 "BAD occassion\nGOOD occasion\n" |
| 1147 "BAD occurance\nGOOD occurrence\n" | |
| 1086 "BAD occured\nGOOD occurred\n" | 1148 "BAD occured\nGOOD occurred\n" |
| 1087 "BAD occurence\nGOOD occurrence\n" | 1149 "BAD occurence\nGOOD occurrence\n" |
| 1088 "BAD occurrance\nGOOD occurrence\n" | 1150 "BAD occurrance\nGOOD occurrence\n" |
| 1089 "BAD oclock\nGOOD o'clock\n" | 1151 "BAD oclock\nGOOD o'clock\n" |
| 1090 "BAD oculd\nGOOD could\n" | 1152 "BAD oculd\nGOOD could\n" |
| 1143 "BAD porblem\nGOOD problem\n" | 1205 "BAD porblem\nGOOD problem\n" |
| 1144 "BAD porblems\nGOOD problems\n" | 1206 "BAD porblems\nGOOD problems\n" |
| 1145 "BAD porvide\nGOOD provide\n" | 1207 "BAD porvide\nGOOD provide\n" |
| 1146 "BAD possable\nGOOD possible\n" | 1208 "BAD possable\nGOOD possible\n" |
| 1147 "BAD postition\nGOOD position\n" | 1209 "BAD postition\nGOOD position\n" |
| 1210 "BAD potatoe\nGOOD potato\n" | |
| 1211 "BAD potatos\nGOOD potatoes\n" | |
| 1148 "BAD potentialy\nGOOD potentially\n" | 1212 "BAD potentialy\nGOOD potentially\n" |
| 1149 "BAD ppl\nGOOD people\n" | 1213 "BAD ppl\nGOOD people\n" |
| 1150 "BAD pregnent\nGOOD pregnant\n" | 1214 "BAD pregnent\nGOOD pregnant\n" |
| 1151 "BAD presance\nGOOD presence\n" | 1215 "BAD presance\nGOOD presence\n" |
| 1216 "BAD primative\nGOOD primitive\n" | |
| 1152 "BAD probelm\nGOOD problem\n" | 1217 "BAD probelm\nGOOD problem\n" |
| 1153 "BAD probelms\nGOOD problems\n" | 1218 "BAD probelms\nGOOD problems\n" |
| 1219 "BAD probly\nGOOD probably\n" | |
| 1154 "BAD prominant\nGOOD prominent\n" | 1220 "BAD prominant\nGOOD prominent\n" |
| 1155 "BAD protege\nGOOD protégé\n" | 1221 "BAD protege\nGOOD protégé\n" |
| 1156 "BAD protoge\nGOOD protégé\n" | 1222 "BAD protoge\nGOOD protégé\n" |
| 1157 "BAD psoition\nGOOD position\n" | 1223 "BAD psoition\nGOOD position\n" |
| 1158 "BAD ptogress\nGOOD progress\n" | 1224 "BAD ptogress\nGOOD progress\n" |
| 1167 "BAD questiosn\nGOOD questions\n" | 1233 "BAD questiosn\nGOOD questions\n" |
| 1168 "BAD questoin\nGOOD question\n" | 1234 "BAD questoin\nGOOD question\n" |
| 1169 "BAD quetion\nGOOD question\n" | 1235 "BAD quetion\nGOOD question\n" |
| 1170 "BAD quetions\nGOOD questions\n" | 1236 "BAD quetions\nGOOD questions\n" |
| 1171 "BAD r\nGOOD are\n" | 1237 "BAD r\nGOOD are\n" |
| 1238 "BAD raeson\nGOOD reason\n" | |
| 1172 "BAD realyl\nGOOD really\n" | 1239 "BAD realyl\nGOOD really\n" |
| 1173 "BAD reccomend\nGOOD recommend\n" | 1240 "BAD reccomend\nGOOD recommend\n" |
| 1174 "BAD reccommend\nGOOD recommend\n" | 1241 "BAD reccommend\nGOOD recommend\n" |
| 1175 "BAD receieve\nGOOD receive\n" | 1242 "BAD receieve\nGOOD receive\n" |
| 1176 "BAD recieve\nGOOD receive\n" | 1243 "BAD recieve\nGOOD receive\n" |
| 1181 "BAD recomendations\nGOOD recommendations\n" | 1248 "BAD recomendations\nGOOD recommendations\n" |
| 1182 "BAD recomended\nGOOD recommended\n" | 1249 "BAD recomended\nGOOD recommended\n" |
| 1183 "BAD reconize\nGOOD recognize\n" | 1250 "BAD reconize\nGOOD recognize\n" |
| 1184 "BAD recrod\nGOOD record\n" | 1251 "BAD recrod\nGOOD record\n" |
| 1185 "BAD rediculous\nGOOD ridiculous\n" | 1252 "BAD rediculous\nGOOD ridiculous\n" |
| 1253 "BAD reguard\nGOOD regard\n" | |
| 1186 "BAD religous\nGOOD religious\n" | 1254 "BAD religous\nGOOD religious\n" |
| 1187 "BAD reluctent\nGOOD reluctant\n" | 1255 "BAD reluctent\nGOOD reluctant\n" |
| 1188 "BAD remeber\nGOOD remember\n" | 1256 "BAD remeber\nGOOD remember\n" |
| 1189 "BAD reommend\nGOOD recommend\n" | 1257 "BAD reommend\nGOOD recommend\n" |
| 1190 "BAD representativs\nGOOD representatives\n" | 1258 "BAD representativs\nGOOD representatives\n" |
| 1212 "BAD saidhe\nGOOD said he\n" | 1280 "BAD saidhe\nGOOD said he\n" |
| 1213 "BAD saidit\nGOOD said it\n" | 1281 "BAD saidit\nGOOD said it\n" |
| 1214 "BAD saidthat\nGOOD said that\n" | 1282 "BAD saidthat\nGOOD said that\n" |
| 1215 "BAD saidthe\nGOOD said the\n" | 1283 "BAD saidthe\nGOOD said the\n" |
| 1216 "BAD saidt he\nGOOD said the\n" | 1284 "BAD saidt he\nGOOD said the\n" |
| 1285 "BAD sandwhich\nGOOD sandwich\n" | |
| 1286 "BAD sandwitch\nGOOD sandwich\n" | |
| 1217 "BAD saturday\nGOOD Saturday\n" | 1287 "BAD saturday\nGOOD Saturday\n" |
| 1218 "BAD scedule\nGOOD schedule\n" | 1288 "BAD scedule\nGOOD schedule\n" |
| 1219 "BAD sceduled\nGOOD scheduled\n" | 1289 "BAD sceduled\nGOOD scheduled\n" |
| 1220 "BAD seance\nGOOD séance\n" | 1290 "BAD seance\nGOOD séance\n" |
| 1221 "BAD secratary\nGOOD secretary\n" | 1291 "BAD secratary\nGOOD secretary\n" |
| 1266 "BAD soudn\nGOOD sound\n" | 1336 "BAD soudn\nGOOD sound\n" |
| 1267 "BAD soudns\nGOOD sounds\n" | 1337 "BAD soudns\nGOOD sounds\n" |
| 1268 "BAD speach\nGOOD speech\n" | 1338 "BAD speach\nGOOD speech\n" |
| 1269 "BAD specificaly\nGOOD specifically\n" | 1339 "BAD specificaly\nGOOD specifically\n" |
| 1270 "BAD specificalyl\nGOOD specifically\n" | 1340 "BAD specificalyl\nGOOD specifically\n" |
| 1341 "BAD spelt\nGOOD spelled\n" | |
| 1271 "BAD sry\nGOOD sorry\n" | 1342 "BAD sry\nGOOD sorry\n" |
| 1272 "BAD statment\nGOOD statement\n" | 1343 "BAD statment\nGOOD statement\n" |
| 1273 "BAD statments\nGOOD statements\n" | 1344 "BAD statments\nGOOD statements\n" |
| 1274 "BAD stnad\nGOOD stand\n" | 1345 "BAD stnad\nGOOD stand\n" |
| 1275 "BAD stopry\nGOOD story\n" | 1346 "BAD stopry\nGOOD story\n" |
| 1290 "BAD sunday\nGOOD Sunday\n" | 1361 "BAD sunday\nGOOD Sunday\n" |
| 1291 "BAD suposed\nGOOD supposed\n" | 1362 "BAD suposed\nGOOD supposed\n" |
| 1292 "BAD suppossed\nGOOD supposed\n" | 1363 "BAD suppossed\nGOOD supposed\n" |
| 1293 "BAD suprise\nGOOD surprise\n" | 1364 "BAD suprise\nGOOD surprise\n" |
| 1294 "BAD suprised\nGOOD surprised\n" | 1365 "BAD suprised\nGOOD surprised\n" |
| 1366 "BAD sux\nGOOD sucks\n" | |
| 1295 "BAD swiming\nGOOD swimming\n" | 1367 "BAD swiming\nGOOD swimming\n" |
| 1296 "BAD tahn\nGOOD than\n" | 1368 "BAD tahn\nGOOD than\n" |
| 1297 "BAD taht\nGOOD that\n" | 1369 "BAD taht\nGOOD that\n" |
| 1298 "BAD talekd\nGOOD talked\n" | 1370 "BAD talekd\nGOOD talked\n" |
| 1299 "BAD talkign\nGOOD talking\n" | 1371 "BAD talkign\nGOOD talking\n" |
| 1305 "BAD termoil\nGOOD turmoil\n" | 1377 "BAD termoil\nGOOD turmoil\n" |
| 1306 "BAD tets\nGOOD test\n" | 1378 "BAD tets\nGOOD test\n" |
| 1307 "BAD tghe\nGOOD the\n" | 1379 "BAD tghe\nGOOD the\n" |
| 1308 "BAD tghis\nGOOD this\n" | 1380 "BAD tghis\nGOOD this\n" |
| 1309 "BAD thansk\nGOOD thanks\n" | 1381 "BAD thansk\nGOOD thanks\n" |
| 1382 "BAD thanx\nGOOD thanks\n" | |
| 1310 "BAD thats\nGOOD that's\n" | 1383 "BAD thats\nGOOD that's\n" |
| 1311 "BAD thatthe\nGOOD that the\n" | 1384 "BAD thatthe\nGOOD that the\n" |
| 1312 "BAD thatt he\nGOOD that the\n" | 1385 "BAD thatt he\nGOOD that the\n" |
| 1313 "BAD thecompany\nGOOD the company\n" | 1386 "BAD thecompany\nGOOD the company\n" |
| 1314 "BAD thefirst\nGOOD the first\n" | 1387 "BAD thefirst\nGOOD the first\n" |
| 1344 "BAD thme\nGOOD them\n" | 1417 "BAD thme\nGOOD them\n" |
| 1345 "BAD thna\nGOOD than\n" | 1418 "BAD thna\nGOOD than\n" |
| 1346 "BAD thne\nGOOD then\n" | 1419 "BAD thne\nGOOD then\n" |
| 1347 "BAD thnig\nGOOD thing\n" | 1420 "BAD thnig\nGOOD thing\n" |
| 1348 "BAD thnigs\nGOOD things\n" | 1421 "BAD thnigs\nGOOD things\n" |
| 1422 "BAD tho\nGOOD though\n" | |
| 1349 "BAD threatend\nGOOD threatened\n" | 1423 "BAD threatend\nGOOD threatened\n" |
| 1350 "BAD thsi\nGOOD this\n" | 1424 "BAD thsi\nGOOD this\n" |
| 1351 "BAD thsoe\nGOOD those\n" | 1425 "BAD thsoe\nGOOD those\n" |
| 1352 "BAD thta\nGOOD that\n" | 1426 "BAD thta\nGOOD that\n" |
| 1353 "BAD thursday\nGOOD Thursday\n" | 1427 "BAD thursday\nGOOD Thursday\n" |
| 1366 "BAD togehter\nGOOD together\n" | 1440 "BAD togehter\nGOOD together\n" |
| 1367 "BAD toldt he\nGOOD told the\n" | 1441 "BAD toldt he\nGOOD told the\n" |
| 1368 "BAD tomorow\nGOOD tomorrow\n" | 1442 "BAD tomorow\nGOOD tomorrow\n" |
| 1369 "BAD tongiht\nGOOD tonight\n" | 1443 "BAD tongiht\nGOOD tonight\n" |
| 1370 "BAD tonihgt\nGOOD tonight\n" | 1444 "BAD tonihgt\nGOOD tonight\n" |
| 1445 "BAD tonite\nGOOD tonight\n" | |
| 1371 "BAD totaly\nGOOD totally\n" | 1446 "BAD totaly\nGOOD totally\n" |
| 1372 "BAD totalyl\nGOOD totally\n" | 1447 "BAD totalyl\nGOOD totally\n" |
| 1373 "BAD tothe\nGOOD to the\n" | 1448 "BAD tothe\nGOOD to the\n" |
| 1374 "BAD tot he\nGOOD to the\n" | 1449 "BAD tot he\nGOOD to the\n" |
| 1375 "BAD towrad\nGOOD toward\n" | 1450 "BAD towrad\nGOOD toward\n" |
| 1404 "BAD waht\nGOOD what\n" | 1479 "BAD waht\nGOOD what\n" |
| 1405 "BAD warrent\nGOOD warrant\n" | 1480 "BAD warrent\nGOOD warrant\n" |
| 1406 "BAD wa snot\nGOOD was not\n" | 1481 "BAD wa snot\nGOOD was not\n" |
| 1407 "BAD wasnt\nGOOD wasn't\n" | 1482 "BAD wasnt\nGOOD wasn't\n" |
| 1408 "BAD wasn;t\nGOOD wasn't\n" | 1483 "BAD wasn;t\nGOOD wasn't\n" |
| 1484 "BAD wat\nGOOD what\n" | |
| 1409 "BAD watn\nGOOD want\n" | 1485 "BAD watn\nGOOD want\n" |
| 1410 "BAD we;d\nGOOD we'd\n" | 1486 "BAD we;d\nGOOD we'd\n" |
| 1411 "BAD wednesday\nGOOD Wednesday\n" | 1487 "BAD wednesday\nGOOD Wednesday\n" |
| 1488 "BAD wel\nGOOD we'll\n" | |
| 1412 "BAD wehn\nGOOD when\n" | 1489 "BAD wehn\nGOOD when\n" |
| 1413 "BAD wel\nGOOD we'll\n" | 1490 "BAD we'l\nGOOD we'll\n" |
| 1414 "BAD we;ll\nGOOD we'll\n" | 1491 "BAD we;ll\nGOOD we'll\n" |
| 1415 "BAD we;re\nGOOD we're\n" | 1492 "BAD we;re\nGOOD we're\n" |
| 1416 "BAD werent\nGOOD weren't\n" | 1493 "BAD werent\nGOOD weren't\n" |
| 1417 "BAD weren;t\nGOOD weren't\n" | 1494 "BAD weren;t\nGOOD weren't\n" |
| 1418 "BAD wern't\nGOOD weren't\n" | 1495 "BAD wern't\nGOOD weren't\n" |
| 1474 "BAD wtih\nGOOD with\n" | 1551 "BAD wtih\nGOOD with\n" |
| 1475 "BAD wuould\nGOOD would\n" | 1552 "BAD wuould\nGOOD would\n" |
| 1476 "BAD wut\nGOOD what\n" | 1553 "BAD wut\nGOOD what\n" |
| 1477 "BAD wya\nGOOD way\n" | 1554 "BAD wya\nGOOD way\n" |
| 1478 "BAD y\nGOOD why\n" | 1555 "BAD y\nGOOD why\n" |
| 1556 "BAD yeh\nGOOD yeah\n" | |
| 1479 "BAD yera\nGOOD year\n" | 1557 "BAD yera\nGOOD year\n" |
| 1480 "BAD yeras\nGOOD years\n" | 1558 "BAD yeras\nGOOD years\n" |
| 1481 "BAD yersa\nGOOD years\n" | 1559 "BAD yersa\nGOOD years\n" |
| 1482 "BAD yoiu\nGOOD you\n" | 1560 "BAD yoiu\nGOOD you\n" |
| 1483 "BAD youare\nGOOD you are\n" | 1561 "BAD youare\nGOOD you are\n" |
