+ speller.ignored_words_.push_back(word.word());
+}
+
+
+/// personal word list interface
+void AspellChecker::Private::remove(WordLangTuple const & word)
+{
+ PersonalWordList * pd = personal_[word.lang()->lang()];
+ if (!pd)
+ return;
+ pd->remove(word.word());
+ Spellers::iterator it = spellers_.find(spellerID(word.lang()));
+ if (it != spellers_.end()) {
+ initSessionDictionary(it->second, pd);
+ }
+}
+
+
+void AspellChecker::Private::insert(WordLangTuple const & word)
+{
+ Spellers::iterator it = spellers_.find(spellerID(word.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);
+ PersonalWordList * pd = personal_[word.lang()->lang()];
+ if (!pd)
+ return;
+ pd->insert(word.word());
+ }
+}
+
+bool AspellChecker::Private::learned(WordLangTuple const & word)
+{
+ PersonalWordList * pd = personal_[word.lang()->lang()];
+ if (!pd)
+ return false;
+ return pd->exists(word.word());