X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FHunspellChecker.cpp;h=1c2612e78e0fdc973e3e3a6302fc6e213626741e;hb=bed546d6f6aab7c32ef51d61edd120e18089da53;hp=5c179762ac6e3c6648f5a0962fdc0bb7e87b00b6;hpb=6799032e7705377b8dd154726e5be88e69252e69;p=lyx.git diff --git a/src/HunspellChecker.cpp b/src/HunspellChecker.cpp index 5c179762ac..1c2612e78e 100644 --- a/src/HunspellChecker.cpp +++ b/src/HunspellChecker.cpp @@ -47,7 +47,7 @@ typedef map LangPersonalWordList; typedef vector IgnoreList; -} // anon namespace +} // namespace struct HunspellChecker::Private @@ -86,7 +86,7 @@ struct HunspellChecker::Private const string dictDirectory(void) const { return "dicts"; } int maxLookupSelector(void) const { return 5; } const string HunspellDictionaryName(Language const * lang) { - return lang->variety().empty() + return lang->variety().empty() ? lang->code() : lang->code() + "-" + lang->variety(); } @@ -155,9 +155,9 @@ const string HunspellChecker::Private::dictPath(int selector) { switch (selector) { case 4: - return addName(hunspellPackageDictDirectory(),dictDirectory()); + return hunspellPackageDictDirectory(); case 3: - return addName(myspellPackageDictDirectory(),dictDirectory()); + return myspellPackageDictDirectory(); case 2: return addName(package().system_support().absFileName(),dictDirectory()); case 1: @@ -356,7 +356,11 @@ SpellChecker::Result HunspellChecker::check(WordLangTuple const & wl) LYXERR(Debug::GUI, "spellCheck: \"" << wl.word() << "\", lang = " << wl.lang()->lang()) ; +#ifdef HAVE_HUNSPELL_CXXABI + if (h->spell(word_to_check, &info)) +#else if (h->spell(word_to_check.c_str(), &info)) +#endif return d->learned(wl) ? LEARNED_WORD : WORD_OK; if (info & SPELL_COMPOUND) { @@ -411,6 +415,11 @@ void HunspellChecker::suggest(WordLangTuple const & wl, return; string const encoding = h->get_dic_encoding(); string const word_to_check = to_iconv_encoding(wl.word(), encoding); +#ifdef HAVE_HUNSPELL_CXXABI + vector wlst = h->suggest(word_to_check); + for (auto const s : wlst) + suggestions.push_back(from_iconv_encoding(s, encoding)); +#else char ** suggestion_list; int const suggestion_number = h->suggest(&suggestion_list, word_to_check.c_str()); if (suggestion_number <= 0) @@ -418,6 +427,7 @@ void HunspellChecker::suggest(WordLangTuple const & wl, for (int i = 0; i != suggestion_number; ++i) suggestions.push_back(from_iconv_encoding(suggestion_list[i], encoding)); h->free_list(&suggestion_list, suggestion_number); +#endif } @@ -430,6 +440,11 @@ void HunspellChecker::stem(WordLangTuple const & wl, return; string const encoding = h->get_dic_encoding(); string const word_to_check = to_iconv_encoding(wl.word(), encoding); +#ifdef HAVE_HUNSPELL_CXXABI + vector wlst = h->stem(word_to_check); + for (auto const s : wlst) + suggestions.push_back(from_iconv_encoding(s, encoding)); +#else char ** suggestion_list; int const suggestion_number = h->stem(&suggestion_list, word_to_check.c_str()); if (suggestion_number <= 0) @@ -437,6 +452,7 @@ void HunspellChecker::stem(WordLangTuple const & wl, for (int i = 0; i != suggestion_number; ++i) suggestions.push_back(from_iconv_encoding(suggestion_list[i], encoding)); h->free_list(&suggestion_list, suggestion_number); +#endif }