]> git.lyx.org Git - features.git/commitdiff
#7660 with aspell backend split words on hard hyphens to check parts separately becau...
authorStephan Witt <switt@lyx.org>
Sun, 31 Jul 2011 13:27:39 +0000 (13:27 +0000)
committerStephan Witt <switt@lyx.org>
Sun, 31 Jul 2011 13:27:39 +0000 (13:27 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39395 a592a061-630c-0410-9148-cb99ea01b6c8

src/AspellChecker.cpp

index 16bc5802113061c1142628e609c6f5c6bf21d5ad..c549980e0378b42a3b33ad65a260eb793a0d5440 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "support/lassert.h"
 #include "support/debug.h"
+#include "support/lstrings.h"
 #include "support/docstring_list.h"
 
 #include "support/filetools.h"
@@ -311,17 +312,36 @@ AspellSpeller * AspellChecker::Private::speller(Language const * lang)
        return addSpeller(lang);
 }
 
+
 string AspellChecker::Private::toAspellWord(docstring const & word) const
 {
-       return to_utf8(word);
+       size_t mpos;
+       string word_str = to_utf8(word);
+       while ((mpos = word_str.find('-')) != word_str.npos) {
+               word_str.erase(mpos, 1);
+       }
+       return word_str;
 }
 
+
 SpellChecker::Result AspellChecker::Private::check(
        AspellSpeller * m, WordLangTuple const & word) 
        const
 {
+       SpellChecker::Result result = WORD_OK;
+       docstring w1;
+       docstring rest = split(word.word(), w1, '-');
+       for (; result == WORD_OK;) {
+               string const word_str = toAspellWord(w1);
+               int const word_ok = aspell_speller_check(m, word_str.c_str(), -1);
+               LASSERT(word_ok != -1, /**/);
+               result = (word_ok) ? WORD_OK : UNKNOWN_WORD;
+               if (rest.empty())
+                       break;
+               rest = split(rest,w1,'-');
+       }
+       if (result == WORD_OK)
+               return result;
        string const word_str = toAspellWord(word.word());
        int const word_ok = aspell_speller_check(m, word_str.c_str(), -1);
        LASSERT(word_ok != -1, /**/);