///
virtual size_t size() const
{
- return buf_.registeredWords().size();
+ return theWordList().size();
}
///
- virtual docstring data(size_t idx) const
+ virtual docstring const & data(size_t idx) const
{
- return buf_.registeredWords().word(idx);
+ return theWordList().word(idx);
}
private:
+ ///
Buffer const & buf_;
+ ///
size_t pos_;
};
{
paragraphs().push_back(Paragraph());
Paragraph & ourpar = paragraphs().back();
- ourpar.setEmptyOrDefaultLayout(bp.textClass());
+ ourpar.setEmptyOrDefaultLayout(bp.documentClass());
ourpar.setInsetOwner(this);
}
}
-void InsetText::write(Buffer const & buf, ostream & os) const
+void InsetText::write(ostream & os) const
{
os << "Text\n";
- text_.write(buf, os);
+ text_.write(buffer(), os);
}
-void InsetText::read(Buffer const & buf, Lexer & lex)
+void InsetText::read(Lexer & lex)
{
clear();
Paragraph oldpar = *paragraphs().begin();
paragraphs().clear();
ErrorList errorList;
- bool res = text_.read(buf, lex, errorList, this);
+ bool res = text_.read(buffer(), lex, errorList, this);
if (!res) {
lex.printError("Missing \\end_inset at this point. "
}
-docstring const InsetText::editMessage() const
+docstring InsetText::editMessage() const
{
return _("Opened Text Inset");
}
}
-int InsetText::latex(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+int InsetText::latex(odocstream & os, OutputParams const & runparams) const
{
TexRow texrow;
- latexParagraphs(buf, text_, os, texrow, runparams);
+ latexParagraphs(buffer(), text_, os, texrow, runparams);
return texrow.rows();
}
-int InsetText::plaintext(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+int InsetText::plaintext(odocstream & os, OutputParams const & runparams) const
{
ParagraphList::const_iterator beg = paragraphs().begin();
ParagraphList::const_iterator end = paragraphs().end();
os << '\n';
}
odocstringstream oss;
- writePlaintextParagraph(buf, *it, oss, runparams, ref_printed);
+ writePlaintextParagraph(buffer(), *it, oss, runparams, ref_printed);
docstring const str = oss.str();
os << str;
// FIXME: len is not computed fully correctly; in principle,
}
-int InsetText::docbook(Buffer const & buf, odocstream & os,
- OutputParams const & runparams) const
+int InsetText::docbook(odocstream & os, OutputParams const & runparams) const
{
- docbookParagraphs(paragraphs(), buf, os, runparams);
+ docbookParagraphs(paragraphs(), buffer(), os, runparams);
return 0;
}
}
-void InsetText::appendParagraphs(Buffer * buffer, ParagraphList & plist)
+void InsetText::appendParagraphs(ParagraphList & plist)
{
// There is little we can do here to keep track of changes.
// As of 2006/10/20, appendParagraphs is used exclusively by
ParagraphList::iterator pit = plist.begin();
ParagraphList::iterator ins = pl.insert(pl.end(), *pit);
++pit;
- mergeParagraph(buffer->params(), pl,
+ mergeParagraph(buffer().params(), pl,
distance(pl.begin(), ins) - 1);
for_each(pit, plist.end(),
}
-//FIXME: instead of this hack, which only works by chance,
+// FIXME: instead of this hack, which only works by chance,
// cells should have their own insetcell type, which returns CELL_CODE!
-bool InsetText::neverIndent(Buffer const & buffer) const
+bool InsetText::neverIndent() const
{
// this is only true for tabular cells
- return !text_.isMainText(buffer) && lyxCode() == TEXT_CODE;
+ return !text_.isMainText(buffer()) && lyxCode() == TEXT_CODE;
}
}
-void InsetText::updateLabels(Buffer const & buf, ParIterator const & it)
+void InsetText::updateLabels(ParIterator const & it)
{
ParIterator it2 = it;
it2.forwardPos();
BOOST_ASSERT(&it2.inset() == this && it2.pit() == 0);
- lyx::updateLabels(buf, it2);
+ lyx::updateLabels(buffer(), it2);
+}
+
+
+bool InsetText::notifyCursorLeaves(Cursor const & old, Cursor & cur)
+{
+ if (cur.buffer().isClean())
+ return Inset::notifyCursorLeaves(old, cur);
+
+ // find text inset in old cursor
+ Cursor insetCur = old;
+ int scriptSlice = insetCur.find(this);
+ BOOST_ASSERT(scriptSlice != -1);
+ insetCur.cutOff(scriptSlice);
+ BOOST_ASSERT(&insetCur.inset() == this);
+
+ // update the old paragraph's words
+ insetCur.paragraph().updateWords(insetCur.buffer(), insetCur.top());
+
+ return Inset::notifyCursorLeaves(old, cur);
}
}
-docstring InsetText::previousWord(Buffer const & buffer,
- CursorSlice const & sl) const
+docstring InsetText::previousWord(CursorSlice const & sl) const
{
CursorSlice from = sl;
CursorSlice to = sl;
return docstring();
Paragraph const & par = sl.paragraph();
- return par.asString(buffer, from.pos(), to.pos(), false);
+ return par.asString(from.pos(), to.pos(), false);
}
{
if (!completionSupported(cur))
return docstring();
-
- return previousWord(cur.buffer(), cur.top());
+ return previousWord(cur.top());
}
BOOST_ASSERT(cur.bv().cursor() == cur);
cur.insert(s);
cur.bv().cursor() = cur;
+ if (!(cur.disp_.update() & Update::Force))
+ cur.updateFlags(cur.disp_.update() | Update::SinglePar);
return true;
}
Cursor const & bvcur = cur.bv().cursor();
// get word in front of cursor
- docstring word = previousWord(cur.buffer(), bvcur.top());
+ docstring word = previousWord(bvcur.top());
DocIterator wordStart = bvcur;
wordStart.pos() -= word.length();