tmp.setInsetOwner(&par.inInset());
tmp.makeSameLayout(par);
- LASSERT(pos <= par.size(), /**/);
+ LASSERT(pos <= par.size(), return);
if (pos < par.size()) {
// move everything behind the break position to the new paragraph
public:
///
TextCompletionList(Cursor const & cur, WordList const * list)
- : buffer_(cur.buffer()), pos_(0), list_(list)
+ : buffer_(cur.buffer()), list_(list)
{}
///
virtual ~TextCompletionList() {}
///
Buffer const * buffer_;
///
- size_t pos_;
- ///
WordList const * list_;
};
void Text::breakParagraph(Cursor & cur, bool inverse_logic)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
Paragraph & cpar = cur.paragraph();
pit_type cpit = cur.pit();
// same Paragraph one to the right and make a rebreak
void Text::insertChar(Cursor & cur, char_type c)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
cur.recordUndo(INSERT_UNDO);
"beginning of a paragraph. Please read the Tutorial."));
return;
}
+ // LASSERT: Is it safe to continue here?
LASSERT(cur.pos() > 0, /**/);
if ((par.isLineSeparator(cur.pos() - 1) || par.isNewline(cur.pos() - 1))
&& !par.isDeleted(cur.pos() - 1)) {
&& !par.isWordSeparator(cur.pos() - 2)
&& par.isWordSeparator(cur.pos() - 1)) {
// get the word in front of cursor
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
cur.paragraph().updateWords();
}
}
bool Text::cursorForwardOneWord(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
pos_type const lastpos = cur.lastpos();
pit_type pit = cur.pit();
return false;
}
- if (lyxrc.mac_like_word_movement) {
+ if (lyxrc.mac_like_cursor_movement) {
// Skip through trailing punctuation and spaces.
while (pos != lastpos && (par.isChar(pos) || par.isSpace(pos)))
++pos;
else while (pos != lastpos && !par.isWordSeparator(pos))
++pos;
} else {
- LASSERT(pos < lastpos, /**/); // see above
+ LASSERT(pos < lastpos, return false); // see above
if (!par.isWordSeparator(pos))
while (pos != lastpos && !par.isWordSeparator(pos))
++pos;
bool Text::cursorBackwardOneWord(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
pit_type pit = cur.pit();
pos_type pos = cur.pos();
if (pos == 0 && pit != 0)
return setCursor(cur, pit - 1, getPar(pit - 1).size());
- if (lyxrc.mac_like_word_movement) {
+ if (lyxrc.mac_like_cursor_movement) {
// Skip through punctuation and spaces.
while (pos != 0 && (par.isChar(pos - 1) || par.isSpace(pos - 1)))
--pos;
bool Text::cursorVisLeftOneWord(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
pos_type left_pos, right_pos;
bool left_is_letter, right_is_letter;
bool Text::cursorVisRightOneWord(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
pos_type left_pos, right_pos;
bool left_is_letter, right_is_letter;
void Text::selectWord(Cursor & cur, word_location loc)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
CursorSlice from = cur.top();
CursorSlice to = cur.top();
getWord(from, to, loc);
void Text::selectAll(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
if (cur.lastpos() == 0 && cur.lastpit() == 0)
return;
// If the cursor is at the beginning, make sure the cursor ends there
// selection is currently set
bool Text::selectWordWhenUnderCursor(Cursor & cur, word_location loc)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
if (cur.selection())
return false;
selectWord(cur, loc);
void Text::acceptOrRejectChanges(Cursor & cur, ChangeOp op)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
if (!cur.selection()) {
bool const changed = cur.paragraph().isChanged(cur.pos());
void Text::deleteWordForward(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
if (cur.lastpos() == 0)
cursorForward(cur);
else {
void Text::deleteWordBackward(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
if (cur.lastpos() == 0)
cursorBackward(cur);
else {
// Kill to end of line.
void Text::changeCase(Cursor & cur, TextCase action)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
CursorSlice from;
CursorSlice to;
bool Text::backspacePos0(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
if (cur.pit() == 0)
return false;
bool Text::backspace(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
bool needsUpdate = false;
if (cur.pos() == 0) {
if (cur.pit() == 0)
return dissolveInset(cur);
- Paragraph & prev_par = pars_[cur.pit() - 1];
+ Cursor prev_cur = cur;
+ --prev_cur.pit();
- if (!prev_par.isMergedOnEndOfParDeletion(cur.buffer()->params().trackChanges)) {
- prev_par.setChange(prev_par.size(), Change(Change::DELETED));
- setCursorIntern(cur, cur.pit() - 1, prev_par.size());
+ if (!prev_cur.paragraph().isMergedOnEndOfParDeletion(cur.buffer()->params().trackChanges)) {
+ cur.recordUndo(ATOMIC_UNDO, prev_cur.pit(), prev_cur.pit());
+ prev_cur.paragraph().setChange(prev_cur.lastpos(), Change(Change::DELETED));
+ setCursorIntern(cur, prev_cur.pit(), prev_cur.lastpos());
return true;
}
// The cursor is at the beginning of a paragraph, so
// Returns the current font and depth as a message.
docstring Text::currentState(Cursor const & cur) const
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
Buffer & buf = *cur.buffer();
Paragraph const & par = cur.paragraph();
odocstringstream os;
// For captions, we just take the caption type
Inset * caption_inset = cur.innerInsetOfType(CAPTION_CODE);
if (caption_inset) {
- string const & ftype = static_cast<InsetCaption *>(caption_inset)->type();
+ string const & ftype = static_cast<InsetCaption *>(caption_inset)->floattype();
FloatList const & fl = cur.buffer()->params().documentClass().floats();
if (fl.typeExist(ftype)) {
Floating const & flt = fl.getType(ftype);
void Text::charsTranspose(Cursor & cur)
{
- LASSERT(this == cur.text(), /**/);
+ LBUFERR(this == cur.text());
pos_type pos = cur.pos();
bool Text::insertCompletion(Cursor & cur, docstring const & s, bool /*finished*/)
{
- LASSERT(cur.bv().cursor() == cur, /**/);
+ LBUFERR(cur.bv().cursor() == cur);
cur.insert(s);
cur.bv().cursor() = cur;
if (!(cur.result().screenUpdate() & Update::Force))