]> git.lyx.org Git - lyx.git/blobdiff - src/AspellChecker.cpp
Document NeedCProtect -1
[lyx.git] / src / AspellChecker.cpp
index 61eab520e5156d17963c1a00dd6a6e6d5cf41847..a5c54d8c74b6ae727e10526d29ef15f3d2cfddea 100644 (file)
@@ -49,7 +49,7 @@ struct Speller {
 typedef std::map<std::string, Speller> Spellers;
 typedef map<std::string, PersonalWordList *> 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<WordLangTuple> 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<WordLangTuple>::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;
 }