X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FHunspellChecker.cpp;h=67c7e27cc422fc93fde4e1b8aaf639f8590333d4;hb=ecdeffb52b1dad2f56e0e4210d0a040e807e2caf;hp=a2d2c95e05250c6976d25bdef81f57e42faac338;hpb=a7caeda68318e91b270de43cbf5a10c6d90f0962;p=lyx.git diff --git a/src/HunspellChecker.cpp b/src/HunspellChecker.cpp index a2d2c95e05..67c7e27cc4 100644 --- a/src/HunspellChecker.cpp +++ b/src/HunspellChecker.cpp @@ -56,7 +56,7 @@ struct HunspellChecker::Private ~Private(); void cleanCache(); - void setUserPath(std::string path); + void setUserPath(std::string const & path); const string dictPath(int selector); bool haveLanguageFiles(string const & hpath); bool haveDictionary(Language const * lang, string & hpath); @@ -83,15 +83,18 @@ struct HunspellChecker::Private /// the location below system/user directory /// there the aff+dic files lookup will happen const string dictDirectory(void) const { return "dicts"; } - int maxLookupSelector(void) const { return 4; } + int maxLookupSelector(void) const { return 5; } const string HunspellDictionaryName(Language const * lang) { return lang->variety().empty() ? lang->code() : lang->code() + "-" + lang->variety(); } - const string osPackageDictDirectory(void) { + const string myspellPackageDictDirectory(void) { return "/usr/share/myspell"; } + const string hunspellPackageDictDirectory(void) { + return "/usr/share/hunspell"; + } }; @@ -107,7 +110,7 @@ HunspellChecker::Private::~Private() } -void HunspellChecker::Private::setUserPath(std::string path) +void HunspellChecker::Private::setUserPath(std::string const & path) { if (user_path_ != lyxrc.hunspelldir_path) { cleanCache(); @@ -150,15 +153,14 @@ bool HunspellChecker::Private::haveLanguageFiles(string const & hpath) const string HunspellChecker::Private::dictPath(int selector) { switch (selector) { + case 4: + return addName(hunspellPackageDictDirectory(),dictDirectory()); case 3: - return addName(osPackageDictDirectory(),dictDirectory()); - break; + return addName(myspellPackageDictDirectory(),dictDirectory()); case 2: return addName(package().system_support().absFileName(),dictDirectory()); - break; case 1: return addName(package().user_support().absFileName(),dictDirectory()); - break; default: return user_path_; } @@ -167,9 +169,8 @@ const string HunspellChecker::Private::dictPath(int selector) bool HunspellChecker::Private::haveDictionary(Language const * lang, string & hpath) { - if (hpath.empty()) { + if (hpath.empty()) return false; - } LYXERR(Debug::FILES, "check hunspell path: " << hpath << " for language " << (lang ? lang->lang() : "NULL" )); @@ -183,9 +184,8 @@ bool HunspellChecker::Private::haveDictionary(Language const * lang, string & hp } // another try with code, '_' replaced by '-' h_path = addName(hpath, subst(lang->code(), '_', '-')); - if (!haveLanguageFiles(h_path)) { + if (!haveLanguageFiles(h_path)) return false; - } LYXERR(Debug::FILES, " found " << h_path); hpath = h_path; return true; @@ -197,7 +197,7 @@ bool HunspellChecker::Private::haveDictionary(Language const * lang) bool result = false; setUserPath(lyxrc.hunspelldir_path); - for ( int p = 0; !result && p < maxLookupSelector(); p++ ) { + for (int p = 0; !result && p < maxLookupSelector(); ++p) { string lpath = dictPath(p); result = haveDictionary(lang, lpath); } @@ -213,9 +213,8 @@ Hunspell * HunspellChecker::Private::speller(Language const * lang) { setUserPath(lyxrc.hunspelldir_path); Spellers::iterator it = spellers_.find(lang->lang()); - if (it != spellers_.end()) { + if (it != spellers_.end()) return it->second; - } return addSpeller(lang); } @@ -239,11 +238,11 @@ Hunspell * HunspellChecker::Private::addSpeller(Language const * lang,string & p Hunspell * HunspellChecker::Private::addSpeller(Language const * lang) { Hunspell * h = 0; - for ( int p = 0; p < maxLookupSelector() && 0 == h; p++ ) { + for (int p = 0; p < maxLookupSelector() && 0 == h; ++p) { string lpath = dictPath(p); h = addSpeller(lang, lpath); } - if (0 != h) { + if (h) { string const encoding = h->get_dic_encoding(); PersonalWordList * pd = new PersonalWordList(lang->lang()); pd->load(); @@ -265,9 +264,8 @@ int HunspellChecker::Private::numDictionaries() const Spellers::const_iterator it = spellers_.begin(); Spellers::const_iterator et = spellers_.end(); - for (; it != et; ++it) { + for (; it != et; ++it) result += it->second != 0; - } return result; } @@ -276,9 +274,9 @@ bool HunspellChecker::Private::isIgnored(WordLangTuple const & wl) const { IgnoreList::const_iterator it = ignored_.begin(); for (; it != ignored_.end(); ++it) { - if ((*it).lang()->code() != wl.lang()->code()) + if (it->lang()->code() != wl.lang()->code()) continue; - if ((*it).word() == wl.word()) + if (it->word() == wl.word()) return true; } return false; @@ -324,9 +322,9 @@ bool HunspellChecker::Private::learned(WordLangTuple const & wl) } -HunspellChecker::HunspellChecker(): d(new Private) -{ -} +HunspellChecker::HunspellChecker() + : d(new Private) +{} HunspellChecker::~HunspellChecker() @@ -348,16 +346,18 @@ SpellChecker::Result HunspellChecker::check(WordLangTuple const & wl) string const encoding = h->get_dic_encoding(); string const word_to_check = to_iconv_encoding(wl.word(), encoding); + LYXERR(Debug::GUI, "spellCheck: \"" << + wl.word() << "\", lang = " << wl.lang()->lang()) ; if (h->spell(word_to_check.c_str(), &info)) return d->learned(wl) ? LEARNED_WORD : WORD_OK; if (info & SPELL_COMPOUND) { // FIXME: What to do with that? - LYXERR(Debug::FILES, "Hunspell compound word found " << word_to_check); + LYXERR(Debug::GUI, "Hunspell compound word found " << word_to_check); } if (info & SPELL_FORBIDDEN) { // This was removed from personal dictionary - LYXERR(Debug::FILES, "Hunspell explicit forbidden word found " << word_to_check); + LYXERR(Debug::GUI, "Hunspell explicit forbidden word found " << word_to_check); } return UNKNOWN_WORD; @@ -436,7 +436,7 @@ bool HunspellChecker::hasDictionary(Language const * lang) const { if (!lang) return false; - return (d->haveDictionary(lang)); + return d->haveDictionary(lang); }