]> git.lyx.org Git - lyx.git/blobdiff - src/Paragraph.cpp
* src/LaTeXFeatures.cpp: simplify greektext definition. Patch by G. Milde (bug #6458)
[lyx.git] / src / Paragraph.cpp
index a45e71b52be3ea74a6843fab0d94e6db308ebc04..c47718c3d5a8eedf9d14d8040b1d10769600465a 100644 (file)
@@ -2641,8 +2641,8 @@ docstring Paragraph::asString(pos_type beg, pos_type end, int options) const
        odocstringstream os;
 
        if (beg == 0 
-               && options & AS_STR_LABEL
-               && !d->params_.labelString().empty())
+           && options & AS_STR_LABEL
+           && !d->params_.labelString().empty())
                os << d->params_.labelString() << ' ';
 
        for (pos_type i = beg; i < end; ++i) {
@@ -3165,28 +3165,40 @@ bool Paragraph::spellCheck(pos_type & from, pos_type & to, WordLangTuple & wl,
        if (!speller)
                return false;
 
+       if (!d->layout_->spellcheck || !inInset().allowSpellCheck())
+               return false;
+
        locateWord(from, to, WHOLE_WORD);
        if (from == to || from >= pos_type(d->text_.size()))
                return false;
 
        docstring word = asString(from, to, AS_STR_INSETS);
-       string lang_code;
-       string lang_variety;
-       if (!lyxrc.spellchecker_alt_lang.empty())
-               lang_variety = split(lyxrc.spellchecker_alt_lang, lang_code, '-');
-       else {
-             lang_code = getFontSettings(
-                   d->inset_owner_->buffer().params(), from).language()->code();
-             lang_variety = getFontSettings(
-                   d->inset_owner_->buffer().params(), from).language()->variety();
-       }
-       wl = WordLangTuple(word, lang_code, lang_variety);
-       SpellChecker::Result res = speller->check(wl);
+       // Ignore words with digits
+       // FIXME: make this customizable
+       // (note that hunspell ignores words with digits by default)
+       bool const ignored = hasDigit(word);
+       Language * lang = const_cast<Language *>(getFontSettings(
+                   d->inset_owner_->buffer().params(), from).language());
+       if (lang == d->inset_owner_->buffer().params().language
+           && !lyxrc.spellchecker_alt_lang.empty()) {
+               string lang_code;
+               string const lang_variety =
+                       split(lyxrc.spellchecker_alt_lang, lang_code, '-');
+               lang->setCode(lang_code);
+               lang->setVariety(lang_variety);
+       }
+       wl = WordLangTuple(word, lang);
+       SpellChecker::Result res = ignored ?
+               SpellChecker::OK : speller->check(wl);
+#if 0
+// FIXME: the code below makes aspell abort if a word in an unknown
+//       language is checked.
        // Just ignore any error that the spellchecker reports.
        // FIXME: we should through out an exception and catch it in the GUI to
        // display the error.
        if (!speller->error().empty())
                return false;
+#endif
 
        bool const misspelled = res != SpellChecker::OK
                && res != SpellChecker::IGNORED_WORD;