namespace {
/// Inset identifier (above 0x10ffff, for ucs-4)
char_type const META_INSET = 0x200001;
-};
+}
/////////////////////////////////////////////////////////////////////
return result;
}
+ FontSpan const & getRange(pos_type pos) const
+ {
+ /// empty span to indicate mismatch
+ static FontSpan empty_;
+ RangesIterator et = ranges_.end();
+ RangesIterator it = ranges_.begin();
+ for (; it != et; ++it) {
+ if(it->inside(pos)) {
+ return it->range();
+ }
+ }
+ return empty_;
+ }
+
bool needsRefresh() const {
return needs_refresh_;
}
}
+bool Paragraph::isSameSpellRange(pos_type pos1, pos_type pos2) const
+{
+ return pos1 == pos2
+ || d->speller_state_.getRange(pos1) == d->speller_state_.getRange(pos2);
+}
+
+
bool Paragraph::isChar(pos_type pos) const
{
if (Inset const * inset = getInset(pos))
|| (c == '\n' && (options & AS_STR_NEWLINES)))
os.put(c);
else if (c == META_INSET && (options & AS_STR_INSETS)) {
- getInset(i)->tocString(os);
+ getInset(i)->toString(os);
if (getInset(i)->asInsetMath())
os << " ";
}
}
+void Paragraph::forToc(docstring & os, size_t maxlen) const
+{
+ if (!d->params_.labelString().empty())
+ os += d->params_.labelString() + ' ';
+ for (pos_type i = 0; i < size() && os.length() < maxlen; ++i) {
+ if (isDeleted(i))
+ continue;
+ char_type const c = d->text_[i];
+ if (isPrintable(c))
+ os += c;
+ else if (c == '\t' || c == '\n')
+ os += ' ';
+ else if (c == META_INSET)
+ getInset(i)->forToc(os, maxlen);
+ }
+}
+
+
docstring Paragraph::stringify(pos_type beg, pos_type end, int options, OutputParams & runparams) const
{
odocstringstream os;
if (from == to || from >= size())
return result;
- docstring word = asString(from, to, AS_STR_INSETS + AS_STR_SKIPDELETE);
+ docstring word = asString(from, to, AS_STR_INSETS | AS_STR_SKIPDELETE);
Language * lang = d->getSpellLanguage(from);
wl = WordLangTuple(word, lang);
LYXERR(Debug::GUI, "misspelled word is correct with dot: \"" <<
word << "\" [" <<
from << ".." << to << "]");
+ } else {
+ // spell check with dot appended failed
+ // restore original word/lang value
+ word = asString(from, to, AS_STR_INSETS | AS_STR_SKIPDELETE);
+ wl = WordLangTuple(word, lang);
}
}
}