enchant::Dict * EnchantChecker::Private::addSpeller(string const & lang)
{
enchant::Broker * instance = enchant::Broker::instance();
+ Speller m;
- if (!instance->dict_exists(lang))
+ try {
+ LYXERR(Debug::FILES, "request enchant speller for language " << lang);
+ m.speller = instance->request_dict(lang);
+ }
+ catch (enchant::Exception & e) {
// FIXME error handling?
- return 0;
-
- enchant::Dict * dict = instance->request_dict(lang);
-
- if (dict) {
- Speller m;
- m.speller = dict;
- spellers_[lang] = m;
- return m.speller;
+ const char * what = e.what();
+ LYXERR(Debug::FILES, "cannot add enchant speller: " <<
+ ((what && *what) ? what : "unspecified enchant exception in request_dict()"));
+ m.speller = 0;
}
- // FIXME error handling?
- return 0;
+ spellers_[lang] = m;
+ return m.speller;
}
void EnchantChecker::insert(WordLangTuple const & word)
{
- Spellers::iterator it = d->spellers_.find(word.lang()->code());
- if (it != d->spellers_.end()) {
- it->second.speller->add(to_utf8(word.word()));
+ enchant::Dict * m = d->speller(word.lang()->code());
+ if (m) {
+ m->add(to_utf8(word.word()));
advanceChangeNumber();
}
}
void EnchantChecker::remove(WordLangTuple const & word)
{
- Spellers::iterator it = d->spellers_.find(word.lang()->code());
- if (it != d->spellers_.end()) {
- it->second.speller->remove(to_utf8(word.word()));
+ enchant::Dict * m = d->speller(word.lang()->code());
+ if (m) {
+ m->remove(to_utf8(word.word()));
advanceChangeNumber();
}
}
void EnchantChecker::accept(WordLangTuple const & word)
{
- Spellers::iterator it = d->spellers_.find(word.lang()->code());
- if (it != d->spellers_.end()) {
- it->second.speller->add_to_session(to_utf8(word.word()));
+ enchant::Dict * m = d->speller(word.lang()->code());
+ if (m) {
+ m->add_to_session(to_utf8(word.word()));
advanceChangeNumber();
}
}