#include "ParIterator.h"
#include "TextClass.h"
#include "TextMetrics.h"
-#include "VSpace.h"
#include "WordLangTuple.h"
#include "WordList.h"
// of this document. For example, when you apply class article to a beamer document,
// all unknown layouts such as frame will be added to document class article so that
// these layouts can keep their original names.
- tclass.addLayoutIfNeeded(layoutname);
+ bool const added_one = tclass.addLayoutIfNeeded(layoutname);
+ if (added_one) {
+ // Warn the user.
+ docstring const s = bformat(_("Layout `%1$s' was not found."), layoutname);
+ errorList.push_back(
+ ErrorItem(_("Layout Not Found"), s, par.id(), 0, par.size()));
+ }
par.setLayout(bp.documentClass()[layoutname]);
// needed to insert the selection
-void Text::insertStringAsLines(DocIterator const & dit, docstring const & str,
+void Text::insertStringAsLines(Cursor & cur, docstring const & str,
Font const & font)
{
BufferParams const & bparams = owner_->buffer().params();
- pit_type pit = dit.pit();
- pos_type pos = dit.pos();
+ pit_type pit = cur.pit();
+ pos_type pos = cur.pos();
// insert the string, don't insert doublespace
bool space_inserted = true;
space_inserted = (*cit == ' ');
}
}
+ setCursor(cur, pit, pos);
}
// turn double CR to single CR, others are converted into one
// blank. Then insertStringAsLines is called
-void Text::insertStringAsParagraphs(DocIterator const & dit, docstring const & str,
+void Text::insertStringAsParagraphs(Cursor & cur, docstring const & str,
Font const & font)
{
docstring linestr = str;
newline_inserted = false;
}
}
- insertStringAsLines(dit, linestr, font);
+ insertStringAsLines(cur, linestr, font);
}
pos_type left = (pit == begPit ? begPos : 0);
pos_type right = (pit == endPit ? endPos : parSize);
-
+
+ if (left == right)
+ // there is no change here
+ continue;
+
if (op == ACCEPT) {
pars_[pit].acceptChanges(left, right);
} else {
spit += cur.pit();
Buffer & b = *cur.buffer();
cur.paragraph().eraseChar(cur.pos(), b.params().trackChanges);
+
if (!plist.empty()) {
+ // see bug 7319
+ // we clear the cache so that we won't get conflicts with labels
+ // that get pasted into the buffer. we should update this before
+ // its being empty matters. if not (i.e., if we encounter bugs),
+ // then this should instead be:
+ // cur.buffer().updateBuffer();
+ // but we'll try the cheaper solution here.
+ cur.buffer()->clearReferenceCache();
+
// ERT paragraphs have the Language latex_language.
// This is invalid outside of ERT, so we need to
// change it to the buffer language.
// restore position
cur.pit() = min(cur.lastpit(), spit);
cur.pos() = min(cur.lastpos(), spos);
- } else
- cur.forceBufferUpdate();
+ }
+
+ cur.forceBufferUpdate();
// Ensure the current language is set correctly (bug 6292)
cur.text()->setCursor(cur, cur.pit(), cur.pos());
}
if (!name.empty())
- // FIXME refstyle
- // We should allow customization of the separator or else change it
text = name + ':' + text;
return text;