X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FHunspellChecker.cpp;h=01ec19498b70e28075db5e5b8a9c6bb8c4c77e49;hb=d79637a88e368d8e67e4b38ddcf25a4b7f40176e;hp=918d4f8f3893d3d291f13b7af58b0497a4e6d8d6;hpb=9ffba4b72d1841a43a98007e385243bb04bdd178;p=lyx.git diff --git a/src/HunspellChecker.cpp b/src/HunspellChecker.cpp index 918d4f8f38..01ec19498b 100644 --- a/src/HunspellChecker.cpp +++ b/src/HunspellChecker.cpp @@ -41,8 +41,6 @@ namespace { typedef map Spellers; typedef map LangPersonalWordList; -typedef vector IgnoreList; - docstring remap_result(docstring const & s) { // substitute RIGHT SINGLE QUOTATION MARK @@ -78,7 +76,7 @@ struct HunspellChecker::Private /// the spellers Spellers spellers_; /// - IgnoreList ignored_; + WordLangTable ignored_; /// LangPersonalWordList personal_; /// @@ -283,7 +281,7 @@ int HunspellChecker::Private::numDictionaries() const bool HunspellChecker::Private::isIgnored(WordLangTuple const & wl) const { - IgnoreList::const_iterator it = ignored_.begin(); + WordLangTable::const_iterator it = ignored_.begin(); for (; it != ignored_.end(); ++it) { if (it->lang()->code() != wl.lang()->code()) continue; @@ -344,11 +342,20 @@ HunspellChecker::~HunspellChecker() } -SpellChecker::Result HunspellChecker::check(WordLangTuple const & wl) +SpellChecker::Result HunspellChecker::check(WordLangTuple const & wl, + vector const & docdict) { if (d->isIgnored(wl)) return WORD_OK; + WordLangTable::const_iterator it = docdict.begin(); + for (; it != docdict.end(); ++it) { + if (it->lang()->code() != wl.lang()->code()) + continue; + if (it->word() == wl.word()) + return DOCUMENT_LEARNED_WORD; + } + Hunspell * h = d->speller(wl.lang()); if (!h) return NO_DICTIONARY;