--- C:\deántús\córais\aspell-0.60.5\modules\tokenizer\basic.cpp 2004-04-13 08:13:40 +0100 +++ C:\deántús\córais\aspell-0.60.5-msvc\modules\tokenizer\basic.cpp 2013-06-23 21:58:57 +0100 @@ -41,6 +41,7 @@ if (is_begin(*cur) && is_word(cur[1])) { + word.append(*cur); cur_pos += cur->width; ++cur; } --- C:\deántús\córais\aspell-0.60.5\modules\speller\default\language.cpp 2005-02-20 21:47:08 +0000 +++ C:\deántús\córais\aspell-0.60.5-msvc\modules\speller\default\language.cpp 2013-06-23 22:01:18 +0100 @@ -441,7 +441,6 @@ } while (*word && *inlist && *word == *inlist) ++word, ++inlist; if (*inlist) goto try_upper; - if (end && lang->special(*word).end) ++word; if (*word) goto try_upper; return true; try_upper: @@ -449,7 +448,6 @@ inlist = inlist0; while (*word && *inlist && *word == lang->to_upper(*inlist)) ++word, ++inlist; if (*inlist) goto fail; - if (end && lang->special(*word).end) ++word; if (*word) goto fail; } else { // case_insensitive @@ -457,14 +455,12 @@ while (*word && *inlist && lang->to_upper(*word) == lang->to_upper(*inlist)) ++word, ++inlist; if (*inlist) goto fail; - if (end && lang->special(*word).end) ++word; if (*word) goto fail; } return true; fail: - if (begin && lang->special(*word0).begin) {++word0; goto try_again;} return false; } --- C:\deántús\córais\aspell-0.60.5\modules\speller\default\speller_impl.cpp 2005-01-17 10:19:16 +0000 +++ C:\deántús\córais\aspell-0.60.5-msvc\modules\speller\default\speller_impl.cpp 2013-06-23 21:54:26 +0100 @@ -181,6 +181,39 @@ clear_check_info(*ci); bool res = check2(word, try_uppercase, *ci, gi); if (res) return true; + unsigned i=0; + while (*(word+i)!= 0) { + if ((i > 0) && (i < word_end-word-1) && (*(word+i)=='-')) { + if (lang_->special('-').end) { /* test up to hyphen as prefix, test remainder recursively as word */ + char t = *(word+i+1); + *(word+i+1) = (char) 0; + if (check2(word, try_uppercase, *ci, gi)) { + *(word+i+1) = t; + if (check(word+i+1, word_end, try_uppercase, run_together_limit, ci, gi)) + return true; + } + else + *(word+i+1) = t; + } + if (lang_->special('-').middle) { /* test up to hyphen as word, test remainder recursively as word, then as suffix */ + *(word+i) = (char) 0; + if (check2(word, try_uppercase, *ci, gi)) { + *(word+i) = '-'; + if (check(word+i+1, word_end, try_uppercase, run_together_limit, ci, gi)) + return true; + else { + if (lang_->special('-').begin) { + if (check(word+i, word_end, try_uppercase, run_together_limit, ci, gi)) + return true; + } + } + } + else + *(word+i) = '-'; + } + } + ++i; + } if (run_together_limit <= 1) return false; enum {Yes, No, Unknown} is_title = try_uppercase ? Yes : Unknown; for (char * i = word + run_together_min_;