X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FAppleSpellChecker.cpp;h=0a82d38b3228f04ee27ad3e45bbd889e6947690d;hb=b08a653f3549e08fffc5318c87da305651ecc197;hp=f5bfe2314396dbf0065a6b5fa089c710a7eee659;hpb=75bfed55079cab6b73fbea6ce4ae3f10d1af3b91;p=lyx.git diff --git a/src/AppleSpellChecker.cpp b/src/AppleSpellChecker.cpp index f5bfe23143..0a82d38b32 100644 --- a/src/AppleSpellChecker.cpp +++ b/src/AppleSpellChecker.cpp @@ -37,7 +37,6 @@ struct AppleSpellChecker::Private /// language map map languageMap; - }; @@ -79,13 +78,23 @@ string AppleSpellChecker::Private::toString(SpellCheckResult status) } -SpellChecker::Result AppleSpellChecker::check(WordLangTuple const & word) +SpellChecker::Result AppleSpellChecker::check(WordLangTuple const & word, + std::vector const & docdict) { if (!hasDictionary(word.lang())) return NO_DICTIONARY; string const word_str = to_utf8(word.word()); string const lang = d->languageMap[word.lang()->lang()]; + + vector::const_iterator it = docdict.begin(); + for (; it != docdict.end(); ++it) { + if (it->lang()->code() != word.lang()->code()) + continue; + if (it->word() == word.word()) + return DOCUMENT_LEARNED_WORD; + } + SpellCheckResult result = AppleSpeller_check(d->speller, word_str.c_str(), lang.c_str()); @@ -107,7 +116,7 @@ void AppleSpellChecker::insert(WordLangTuple const & word) { string const word_str = to_utf8(word.word()); AppleSpeller_learn(d->speller, word_str.c_str()); - LYXERR(Debug::GUI, "learn word: \"" << word.word() << "\"") ; + LYXERR(Debug::GUI, "learn word: \"" << word.word() << "\""); advanceChangeNumber(); } @@ -117,7 +126,7 @@ void AppleSpellChecker::remove(WordLangTuple const & word) { string const word_str = to_utf8(word.word()); AppleSpeller_unlearn(d->speller, word_str.c_str()); - LYXERR(Debug::GUI, "unlearn word: \"" << word.word() << "\"") ; + LYXERR(Debug::GUI, "unlearn word: \"" << word.word() << "\""); advanceChangeNumber(); } @@ -127,7 +136,7 @@ void AppleSpellChecker::accept(WordLangTuple const & word) { string const word_str = to_utf8(word.word()); AppleSpeller_ignore(d->speller, word_str.c_str()); - LYXERR(Debug::GUI, "ignore word: \"" << word.word() << "\"") ; + LYXERR(Debug::GUI, "ignore word: \"" << word.word() << "\""); advanceChangeNumber(); } @@ -155,15 +164,15 @@ bool AppleSpellChecker::hasDictionary(Language const * lang) const if (result) return result; - result = AppleSpeller_hasLanguage(d->speller,lang->code().c_str()); + result = AppleSpeller_hasLanguage(d->speller, lang->code().c_str()); if (result) { d->languageMap[lang->lang()] = lang->code(); } else { - result = AppleSpeller_hasLanguage(d->speller,lang->lang().c_str()); + result = AppleSpeller_hasLanguage(d->speller, lang->lang().c_str()); if (result) d->languageMap[lang->lang()] = lang->lang(); } - LYXERR(Debug::GUI, "has dictionary: " << lang->lang() << " = " << result) ; + LYXERR(Debug::GUI, "has dictionary: " << lang->lang() << " = " << result); return result; }