From: Juergen Spitzmueller Date: Tue, 2 Jun 2015 15:28:44 +0000 (+0200) Subject: Make Thesaurus check for more general dictionaries (en-v2.idx) X-Git-Tag: 2.2.0alpha1~569 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=77ab3017d0bc759ff8f69cec5cb5b7d9eae122c6;p=features.git Make Thesaurus check for more general dictionaries (en-v2.idx) if a specific one (such as en_NZ-v2.idx) is not found. If someone can replace the rather clumsy code by an elegant regexp (I failed to find one), this is most welcome! --- diff --git a/src/Thesaurus.cpp b/src/Thesaurus.cpp index b4655ac27f..4f4ad64d14 100644 --- a/src/Thesaurus.cpp +++ b/src/Thesaurus.cpp @@ -107,6 +107,11 @@ pair Thesaurus::Private::getThesaurus(string const & path, docstr for (FileNameList::const_iterator it = idx_files.begin(); it != idx_files.end(); ++it) { basename = it->onlyFileNameWithoutExt(); if (contains(basename, to_ascii(lang))) { + // do not use more specific dicts. + if (contains(basename, '_') && !contains(lang, '_')) + continue; + if (contains(basename, '-') && !contains(lang, '-')) + continue; ifstream ifs(it->absFileName().c_str()); if (ifs) { // check for appropriate version of index file @@ -128,8 +133,23 @@ pair Thesaurus::Private::getThesaurus(string const & path, docstr break; } } - if (idx.empty()) + if (idx.empty()) { + // try with a more general dictionary + docstring shortcode; + if (contains(lang, '_')) { + split(lang, shortcode, '_'); + LYXERR(Debug::FILES, "Did not find thesaurus for LANG code " + << lang << ". Trying with " << shortcode); + return getThesaurus(path, shortcode); + } + else if (contains(lang, '-')) { + split(lang, shortcode, '-'); + LYXERR(Debug::FILES, "Did not find thesaurus for LANG code " + << lang << ". Trying with " << shortcode); + return getThesaurus(path, shortcode); + } return make_pair(string(), string()); + } for (support::FileNameList::const_iterator it = data_files.begin(); it != data_files.end(); ++it) { if (contains(it->onlyFileName(), basename)) { data = it->absFileName();