return;
// if the current buffer is not that one, switch to it.
- if (lyx_view_->buffer()->absFileName() != file) {
+ if (lyx_view_->buffer()->fileName() != bm.filename) {
if (!switchToBuffer)
return;
dispatch(FuncRequest(LFUN_BUFFER_SWITCH, file));
break;
case LFUN_VC_REGISTER:
- enable = !buf->lyxvc().inUse();
+ enable = !buf->lyxvc().inUse() && !buf->isUnnamed();
break;
case LFUN_VC_CHECK_IN:
enable = buf->lyxvc().checkInEnabled();
/*
case LFUN_BUFFER_WRITE:
case LFUN_BUFFER_WRITE_AS: {
- Buffer * b = theBufferList().getBuffer(cmd.getArg(0));
+ Buffer * b = theBufferList().getBuffer(FileName(cmd.getArg(0)));
enable = b && (b->isUnnamed() || !b->isClean());
break;
}
// --- version control -------------------------------
case LFUN_VC_REGISTER:
LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
- if (!ensureBufferClean(view()))
+ if (!ensureBufferClean(view()) || lyx_view_->buffer()->isUnnamed())
break;
if (!lyx_view_->buffer()->lyxvc().inUse()) {
lyx_view_->buffer()->lyxvc().registrer();
break;
if (lyx_view_->buffer()->lyxvc().inUse()
&& !lyx_view_->buffer()->isReadonly()) {
- lyx_view_->buffer()->lyxvc().checkIn();
+ setMessage(from_utf8(lyx_view_->buffer()->lyxvc().checkIn()));
reloadBuffer();
}
break;
if (!ensureBufferClean(view()))
break;
if (lyx_view_->buffer()->lyxvc().inUse()) {
- lyx_view_->buffer()->lyxvc().checkOut();
+ setMessage(from_utf8(lyx_view_->buffer()->lyxvc().checkOut()));
reloadBuffer();
}
break;
FileName const s = fileSearch(string(), changeExtension(file_name, ".lyx"), "lyx");
// Either change buffer or load the file
if (theBufferList().exists(s))
- buf = theBufferList().getBuffer(s.absFilename());
+ buf = theBufferList().getBuffer(s);
else {
buf = lyx_view_->loadDocument(s);
loaded = true;
Buffer * child = 0;
bool parsed = false;
if (theBufferList().exists(filename)) {
- child = theBufferList().getBuffer(filename.absFilename());
+ child = theBufferList().getBuffer(filename);
} else {
setMessage(bformat(_("Opening child document %1$s..."),
makeDisplayPath(filename.absFilename())));
}
LASSERT(lyx_view_->view(), /**/);
+
+ // Start an undo group. Normally, all the code
+ // above only invoked recordUndoFullDocument,
+ // which does not really require a group.
+ view()->cursor().beginUndoGroup();
+
// Let the current BufferView dispatch its own actions.
if (view()->dispatch(cmd)) {
// The BufferView took care of its own updates if needed.
updateFlags = Update::None;
+ view()->cursor().endUndoGroup();
break;
}
cursorPosBeforeDispatchY_);
view()->cursor().dispatch(cmd);
+ // we assume here that the buffer view has not
+ // changed since the beginUndoGroup.
+ view()->cursor().endUndoGroup();
+
// notify insets we just left
if (view()->cursor() != old) {
old.fixIfBroken();
case LyXRC::RC_FORMAT:
case LyXRC::RC_GROUP_LAYOUTS:
case LyXRC::RC_INDEX_COMMAND:
+ case LyXRC::RC_NOMENCL_COMMAND:
case LyXRC::RC_INPUT:
case LyXRC::RC_KBMAP:
case LyXRC::RC_KBMAP_PRIMARY: