#7660 report failures on add-to-session with LYXERR

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@39362 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Stephan Witt 2011-07-21 19:55:10 +00:00
parent 925ae3dd10
commit 9b7b6ded7c

View File

@ -68,10 +68,13 @@ struct AspellChecker::Private
string const & lang, string const & variety);
AspellConfig * getConfig(string const & lang, string const & variety);
string toAspellWord(docstring const & word) const;
SpellChecker::Result check(AspellSpeller * m,
string const & word) const;
WordLangTuple const & word) const;
void initSessionDictionary(Speller const & speller, PersonalWordList * pd);
void addToSession(AspellCanHaveError * speller, docstring const & word);
void insert(WordLangTuple const & word);
void remove(WordLangTuple const & word);
bool learned(WordLangTuple const & word);
@ -207,6 +210,14 @@ AspellConfig * AspellChecker::Private::getConfig(string const & lang, string con
}
void AspellChecker::Private::addToSession(AspellCanHaveError * speller, docstring const & word)
{
string const word_to_add = toAspellWord(word);
if(1 != aspell_speller_add_to_session(to_aspell_speller(speller), word_to_add.c_str(), -1))
LYXERR(Debug::GUI, "aspell add to session: " << aspell_error_message(speller));
}
void AspellChecker::Private::initSessionDictionary(
Speller const & speller,
PersonalWordList * pd)
@ -216,14 +227,12 @@ void AspellChecker::Private::initSessionDictionary(
docstring_list::const_iterator it = pd->begin();
docstring_list::const_iterator et = pd->end();
for (; it != et; ++it) {
string const word_to_add = to_utf8(*it);
aspell_speller_add_to_session(aspell, word_to_add.c_str(), -1);
addToSession(speller.e_speller, *it);
}
it = speller.ignored_words_.begin();
et = speller.ignored_words_.end();
for (; it != et; ++it) {
string const word_to_add = to_utf8(*it);
aspell_speller_add_to_session(aspell, word_to_add.c_str(), -1);
addToSession(speller.e_speller, *it);
}
}
@ -284,12 +293,19 @@ AspellSpeller * AspellChecker::Private::speller(Language const * lang)
return addSpeller(lang);
}
string AspellChecker::Private::toAspellWord(docstring const & word) const
{
return to_utf8(word);
}
SpellChecker::Result AspellChecker::Private::check(
AspellSpeller * m, string const & word)
AspellSpeller * m, WordLangTuple const & word)
const
{
int const word_ok = aspell_speller_check(m, word.c_str(), -1);
string const word_str = toAspellWord(word.word());
int const word_ok = aspell_speller_check(m, word_str.c_str(), -1);
LASSERT(word_ok != -1, /**/);
return (word_ok) ? WORD_OK : UNKNOWN_WORD;
}
@ -318,8 +334,7 @@ void AspellChecker::Private::insert(WordLangTuple const & word)
{
Spellers::iterator it = spellers_.find(word.lang()->lang());
if (it != spellers_.end()) {
AspellSpeller * speller = to_aspell_speller(it->second.e_speller);
aspell_speller_add_to_session(speller, to_utf8(word.word()).c_str(), -1);
addToSession(it->second.e_speller, word.word());
PersonalWordList * pd = personal_[word.lang()->lang()];
if (!pd)
return;
@ -359,8 +374,7 @@ SpellChecker::Result AspellChecker::check(WordLangTuple const & word)
// MSVC compiled Aspell doesn't like it.
return WORD_OK;
string const word_str = to_utf8(word.word());
SpellChecker::Result rc = d->check(m, word_str);
SpellChecker::Result rc = d->check(m, word);
return (rc == WORD_OK && d->learned(word)) ? LEARNED_WORD : rc;
}
@ -382,8 +396,7 @@ void AspellChecker::accept(WordLangTuple const & word)
{
Spellers::iterator it = d->spellers_.find(word.lang()->lang());
if (it != d->spellers_.end()) {
AspellSpeller * speller = to_aspell_speller(it->second.e_speller);
aspell_speller_add_to_session(speller, to_utf8(word.word()).c_str(), -1);
d->addToSession(it->second.e_speller, word.word());
d->accept(it->second, word);
advanceChangeNumber();
}
@ -399,8 +412,9 @@ void AspellChecker::suggest(WordLangTuple const & wl,
if (!m)
return;
string const word = d->toAspellWord(wl.word());
AspellWordList const * sugs =
aspell_speller_suggest(m, to_utf8(wl.word()).c_str(), -1);
aspell_speller_suggest(m, word.c_str(), -1);
LASSERT(sugs != 0, /**/);
AspellStringEnumeration * els = aspell_word_list_elements(sugs);
if (!els || aspell_word_list_empty(sugs))