X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FASpell.cpp;h=c99ff0498c6eef8117285c5eea6a5b318b390c0f;hb=04a171cac68cded95b1c4018d26ca50cb191ffa4;hp=ef7b806b708dd47d4869f15b8385f0e274260c4e;hpb=9d0ea8aeff32833a90b3fe64df0c5518a9e241be;p=lyx.git diff --git a/src/ASpell.cpp b/src/ASpell.cpp index ef7b806b70..c99ff0498c 100644 --- a/src/ASpell.cpp +++ b/src/ASpell.cpp @@ -16,18 +16,17 @@ #include #include "ASpell_local.h" +#include "LyXRC.h" #include "WordLangTuple.h" -#include +#include "support/lassert.h" -using std::string; +using namespace std; namespace lyx { -ASpell::ASpell(BufferParams const &, string const & lang) - : els(0), spell_error_object(0) +ASpell::ASpell(): els(0), spell_error_object(0) { - addSpeller(lang); } @@ -65,6 +64,12 @@ void ASpell::addSpeller(string const & lang) // platforms (cygwin, OS X). Therefore we use utf-8, that does // always work. aspell_config_replace(config, "encoding", "utf-8"); + if (lyxrc.spellchecker_accept_compound) + // Consider run-together words as legal compounds + aspell_config_replace(config, "run-together", "true"); + else + // Report run-together words as errors + aspell_config_replace(config, "run-together", "false"); AspellCanHaveError * err = new_aspell_speller(config); if (spell_error_object) delete_aspell_can_have_error(spell_error_object); @@ -97,20 +102,20 @@ ASpell::Result ASpell::check(WordLangTuple const & word) AspellSpeller * m = it->second.speller; int const word_ok = aspell_speller_check(m, to_utf8(word.word()).c_str(), -1); - BOOST_ASSERT(word_ok != -1); + LASSERT(word_ok != -1, /**/); + + if (word_ok) + return OK; + + AspellWordList const * sugs = + aspell_speller_suggest(m, to_utf8(word.word()).c_str(), -1); + LASSERT(sugs != 0, /**/); + els = aspell_word_list_elements(sugs); + if (aspell_word_list_empty(sugs)) + res = UNKNOWN_WORD; + else + res = SUGGESTED_WORDS; - if (word_ok) { - res = OK; - } else { - AspellWordList const * sugs = - aspell_speller_suggest(m, to_utf8(word.word()).c_str(), -1); - BOOST_ASSERT(sugs != 0); - els = aspell_word_list_elements(sugs); - if (aspell_word_list_empty(sugs)) - res = UNKNOWN_WORD; - else - res = SUGGESTED_WORDS; - } return res; } @@ -146,9 +151,8 @@ docstring const ASpell::error() { char const * err = 0; - if (spell_error_object && aspell_error_number(spell_error_object) != 0) { + if (spell_error_object && aspell_error_number(spell_error_object) != 0) err = aspell_error_message(spell_error_object); - } // FIXME UNICODE: err is not in UTF8, but probably the locale encoding return (err ? from_utf8(err) : docstring());