X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FAspellChecker.cpp;h=a5c54d8c74b6ae727e10526d29ef15f3d2cfddea;hb=1511516ef769cb3a11546a78cea6abd41cb91ffe;hp=61eab520e5156d17963c1a00dd6a6e6d5cf41847;hpb=75bfed55079cab6b73fbea6ce4ae3f10d1af3b91;p=lyx.git diff --git a/src/AspellChecker.cpp b/src/AspellChecker.cpp index 61eab520e5..a5c54d8c74 100644 --- a/src/AspellChecker.cpp +++ b/src/AspellChecker.cpp @@ -49,7 +49,7 @@ struct Speller { typedef std::map Spellers; typedef map LangPersonalWordList; -} // anon namespace +} // namespace struct AspellChecker::Private { @@ -124,7 +124,6 @@ struct AspellChecker::Private { return "/lib/aspell-0.60"; } - }; @@ -146,7 +145,7 @@ AspellChecker::Private::~Private() LangPersonalWordList::const_iterator pdet = personal_.end(); for (; pdit != pdet; ++pdit) { - if ( 0 == pdit->second) + if (0 == pdit->second) continue; PersonalWordList * pd = pdit->second; pd->save(); @@ -186,7 +185,7 @@ bool AspellChecker::Private::checkAspellData(AspellConfig * config, string const & lang, string const & variety) { FileName base(basepath); - bool have_dict = base.isDirectory() ; + bool have_dict = base.isDirectory(); if (have_dict) { FileName data(addPath(base.absFileName(), datapath)); @@ -200,7 +199,7 @@ bool AspellChecker::Private::checkAspellData(AspellConfig * config, have_dict = isValidDictionary(config, lang, variety); } } - return have_dict ; + return have_dict; } @@ -208,8 +207,8 @@ AspellConfig * AspellChecker::Private::getConfig(string const & lang, string con { AspellConfig * config = new_aspell_config(); bool have_dict = false; - string const sysdir = lyx::support::package().system_support().absFileName() ; - string const userdir = lyx::support::package().user_support().absFileName() ; + string const sysdir = lyx::support::package().system_support().absFileName(); + string const userdir = lyx::support::package().user_support().absFileName(); LYXERR(Debug::FILES, "aspell user dir: " << userdir); have_dict = checkAspellData(config, userdir, dataDirectory(), dictDirectory(), lang, variety); @@ -221,14 +220,14 @@ AspellConfig * AspellChecker::Private::getConfig(string const & lang, string con // check for package data of OS installation checkAspellData(config, osPackageBase(), osPackageDataDirectory(), osPackageDictDirectory(), lang, variety); } - return config ; + return config; } 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)) + 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)); } @@ -367,7 +366,7 @@ SpellChecker::Result AspellChecker::Private::check( result = (word_ok) ? WORD_OK : UNKNOWN_WORD; if (rest.empty()) break; - rest = split(rest,w1,'-'); + rest = split(rest, w1, '-'); } if (result == WORD_OK) return result; @@ -429,9 +428,9 @@ AspellChecker::~AspellChecker() } -SpellChecker::Result AspellChecker::check(WordLangTuple const & word) +SpellChecker::Result AspellChecker::check(WordLangTuple const & word, + vector const & docdict) { - AspellSpeller * m = d->speller(word.lang()); if (!m) @@ -441,6 +440,13 @@ SpellChecker::Result AspellChecker::check(WordLangTuple const & word) // MSVC compiled Aspell doesn't like it. return WORD_OK; + 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; + } SpellChecker::Result rc = d->check(m, word); return (rc == WORD_OK && d->learned(word)) ? LEARNED_WORD : rc; }