]> git.lyx.org Git - lyx.git/blobdiff - src/ASpell.cpp
add onoff support for "inset-modify changetype xxx" in include inset
[lyx.git] / src / ASpell.cpp
index 51d1ed4bf9315a740280eda2974744c37959af24..b4a8bdb173f5536313c7f82332646a9846de0229 100644 (file)
 
 #include <config.h>
 
-#include "debug.h"
+#include "support/debug.h"
 
 #include <aspell.h>
 
 #include "ASpell_local.h"
+#include "LyXRC.h"
 #include "WordLangTuple.h"
 
-#include <boost/assert.hpp>
+#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);
@@ -96,21 +101,25 @@ ASpell::Result ASpell::check(WordLangTuple const & word)
 
        AspellSpeller * m = it->second.speller;
 
+       if (word.word().empty())
+               // MSVC compiled Aspell doesn't like it.
+               return OK;
+
        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 +155,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());