#include "insets/InsetERT.h"
#include "insets/InsetExternal.h"
#include "insets/InsetFloat.h"
-#include "insets/InsetListings.h"
#include "insets/InsetGraphics.h"
#include "insets/InsetInclude.h"
+#include "insets/InsetListings.h"
#include "insets/InsetNote.h"
#include "insets/InsetSpace.h"
#include "insets/InsetTabular.h"
bool res = false;
for ( ; cursor.depth(); cursor.pop()) {
//lyxerr << "\nCursor::getStatus: cmd: " << cmd << endl << *this << endl;
- BOOST_ASSERT(cursor.idx() <= cursor.lastidx());
- BOOST_ASSERT(cursor.pit() <= cursor.lastpit());
- BOOST_ASSERT(cursor.pos() <= cursor.lastpos());
+ LASSERT(cursor.idx() <= cursor.lastidx(), /**/);
+ LASSERT(cursor.pit() <= cursor.lastpit(), /**/);
+ LASSERT(cursor.pos() <= cursor.lastpos(), /**/);
// The inset's getStatus() will return 'true' if it made
// a definitive decision on whether it want to handle the
if (keyseq.length())
c = 0;
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().getTransManager().deadkey(
c, get_accent(action).accent, view()->cursor().innerText(), view()->cursor());
// Need to clear, in case the minibuffer calls these
// to GuiView and be GuiView and be window dependent.
void LyXFunc::gotoBookmark(unsigned int idx, bool openFile, bool switchToBuffer)
{
- BOOST_ASSERT(lyx_view_);
- if (!LyX::ref().session().bookmarks().isValid(idx))
+ LASSERT(lyx_view_, /**/);
+ if (!theSession().bookmarks().isValid(idx))
return;
- BookmarksSection::Bookmark const & bm = LyX::ref().session().bookmarks().bookmark(idx);
- BOOST_ASSERT(!bm.filename.empty());
+ BookmarksSection::Bookmark const & bm = theSession().bookmarks().bookmark(idx);
+ LASSERT(!bm.filename.empty(), /**/);
string const file = bm.filename.absFilename();
// if the file is not opened, open it.
- if (!theBufferList().exists(file)) {
+ if (!theBufferList().exists(bm.filename)) {
if (openFile)
dispatch(FuncRequest(LFUN_FILE_OPEN, file));
else
return;
}
// open may fail, so we need to test it again
- if (!theBufferList().exists(file))
+ if (!theBufferList().exists(bm.filename))
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));
if (!lyx_view_)
return;
}
-
- if (lyx_view_)
- lyx_view_->restartCursor();
}
if (cmd.action == LFUN_NOACTION) {
flag.message(from_utf8(N_("Nothing to do")));
- flag.enabled(false);
+ flag.setEnabled(false);
return flag;
}
case LFUN_THESAURUS_ENTRY:
#endif
flag.unknown(true);
- flag.enabled(false);
+ flag.setEnabled(false);
break;
default:
// no, exit directly
flag.message(from_utf8(N_("Command not allowed with"
"out any document open")));
- flag.enabled(false);
+ flag.setEnabled(false);
return flag;
}
bool enable = true;
switch (cmd.action) {
- // FIXME: these cases should be hidden in GuiApplication::getStatus().
- case LFUN_WINDOW_CLOSE:
- if (theApp())
- return theApp()->getStatus(cmd);
- enable = false;
- break;
-
- // FIXME: these cases should be hidden in GuiView::getStatus().
- case LFUN_DIALOG_TOGGLE:
- case LFUN_DIALOG_SHOW:
- case LFUN_UI_TOGGLE:
- case LFUN_DIALOG_UPDATE:
- // FIXME: add special handling for about and prefs dialogs here
- // which do not depend on GuiView.
- if (lyx_view_)
- return lyx_view_->getStatus(cmd);
- else
- enable = false;
- break;
-
- case LFUN_TOOLBAR_TOGGLE:
- case LFUN_INSET_APPLY:
- case LFUN_BUFFER_WRITE:
- case LFUN_BUFFER_WRITE_AS:
- case LFUN_SPLIT_VIEW:
- case LFUN_CLOSE_TAB_GROUP:
- case LFUN_COMPLETION_POPUP:
- case LFUN_COMPLETION_INLINE:
- case LFUN_COMPLETION_COMPLETE:
- if (lyx_view_)
- return lyx_view_->getStatus(cmd);
- enable = false;
- break;
-
case LFUN_BUFFER_TOGGLE_READ_ONLY:
flag.setOnOff(buf->isReadonly());
break;
break;
case LFUN_VC_REGISTER:
- enable = !buf->lyxvc().inUse();
+ enable = !buf->lyxvc().inUse() && !buf->isUnnamed();
break;
case LFUN_VC_CHECK_IN:
- enable = buf->lyxvc().inUse() && !buf->isReadonly();
+ enable = buf->lyxvc().checkInEnabled();
break;
case LFUN_VC_CHECK_OUT:
- enable = buf->lyxvc().inUse() && buf->isReadonly();
+ enable = buf->lyxvc().checkOutEnabled();
break;
case LFUN_VC_REVERT:
- case LFUN_VC_UNDO_LAST:
enable = buf->lyxvc().inUse();
break;
+ case LFUN_VC_UNDO_LAST:
+ enable = buf->lyxvc().undoLastEnabled();
+ break;
case LFUN_BUFFER_RELOAD:
enable = !buf->isUnnamed() && buf->fileName().exists()
&& (!buf->isClean() || buf->isExternallyModified(Buffer::timestamp_method));
/*
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;
}
case LFUN_BOOKMARK_GOTO: {
const unsigned int num = convert<unsigned int>(to_utf8(cmd.argument()));
- enable = LyX::ref().session().bookmarks().isValid(num);
+ enable = theSession().bookmarks().isValid(num);
break;
}
case LFUN_BOOKMARK_CLEAR:
- enable = LyX::ref().session().bookmarks().size() > 0;
+ enable = theSession().bookmarks().size() > 0;
break;
// this one is difficult to get right. As a half-baked
break;
}
+ // we want to check if at least one of these is enabled
+ case LFUN_COMMAND_ALTERNATIVES: {
+ // argument contains ';'-terminated commands
+ string arg = to_utf8(cmd.argument());
+ while (!arg.empty()) {
+ string first;
+ arg = split(arg, first, ';');
+ FuncRequest func(lyxaction.lookupFunc(first));
+ func.origin = cmd.origin;
+ flag = getStatus(func);
+ // if this one is enabled, the whole thing is
+ if (flag.enabled())
+ break;
+ }
+ break;
+ }
+
case LFUN_CALL: {
FuncRequest func;
string name = to_utf8(cmd.argument());
- if (LyX::ref().topLevelCmdDef().lock(name, func)) {
+ if (theTopLevelCmdDef().lock(name, func)) {
func.origin = cmd.origin;
flag = getStatus(func);
- LyX::ref().topLevelCmdDef().release(name);
+ theTopLevelCmdDef().release(name);
} else {
// catch recursion or unknown command definiton
// all operations until the recursion or unknown command
break;
}
- case LFUN_BUFFER_NEW:
- case LFUN_BUFFER_NEW_TEMPLATE:
case LFUN_WORD_FIND_FORWARD:
case LFUN_WORD_FIND_BACKWARD:
case LFUN_COMMAND_PREFIX:
case LFUN_BUFFER_AUTO_SAVE:
case LFUN_RECONFIGURE:
case LFUN_HELP_OPEN:
- case LFUN_FILE_OPEN:
case LFUN_DROP_LAYOUTS_CHOICE:
case LFUN_MENU_OPEN:
- case LFUN_SERVER_GET_NAME:
+ case LFUN_SERVER_GET_FILENAME:
case LFUN_SERVER_NOTIFY:
case LFUN_SERVER_GOTO_FILE_ROW:
case LFUN_DIALOG_HIDE:
case LFUN_BUFFER_EXPORT_CUSTOM:
case LFUN_BUFFER_PRINT:
case LFUN_PREFERENCES_SAVE:
- case LFUN_SCREEN_FONT_UPDATE:
- case LFUN_SET_COLOR:
case LFUN_MESSAGE:
- case LFUN_EXTERNAL_EDIT:
- case LFUN_GRAPHICS_EDIT:
- case LFUN_ALL_INSETS_TOGGLE:
+ case LFUN_INSET_EDIT:
case LFUN_BUFFER_LANGUAGE:
case LFUN_TEXTCLASS_APPLY:
case LFUN_TEXTCLASS_LOAD:
case LFUN_LYXRC_APPLY:
case LFUN_BUFFER_NEXT:
case LFUN_BUFFER_PREVIOUS:
- case LFUN_WINDOW_NEW:
- case LFUN_LYX_QUIT:
// these are handled in our dispatch()
break;
default:
+ if (!theApp()) {
+ enable = false;
+ break;
+ }
+ if (theApp()->getStatus(cmd, flag))
+ break;
+
+ // Does the view know something?
+ if (!lyx_view_) {
+ enable = false;
+ break;
+ }
+ if (lyx_view_->getStatus(cmd, flag))
+ break;
+
+ // If we have a BufferView, try cursor position and
+ // then the BufferView.
if (!view()) {
enable = false;
break;
}
if (!enable)
- flag.enabled(false);
+ flag.setEnabled(false);
// Can we use a readonly buffer?
if (buf && buf->isReadonly()
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly)
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)) {
flag.message(from_utf8(N_("Document is read-only")));
- flag.enabled(false);
+ flag.setEnabled(false);
}
// Are we in a DELETED change-tracking region?
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::ReadOnly)
&& !lyxaction.funcHasFlag(cmd.action, LyXAction::NoBuffer)) {
flag.message(from_utf8(N_("This portion of the document is deleted.")));
- flag.enabled(false);
+ flag.setEnabled(false);
}
// the default error message if we disable the command
case LFUN_WORD_FIND_FORWARD:
case LFUN_WORD_FIND_BACKWARD: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
static docstring last_search;
docstring searched_string;
}
case LFUN_COMMAND_PREFIX:
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
lyx_view_->message(keyseq.printOptions(true));
break;
case LFUN_CANCEL:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
keyseq.reset();
meta_fake_bit = NoModifier;
if (lyx_view_->buffer())
break;
case LFUN_BUFFER_TOGGLE_READ_ONLY: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->view() && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->view() && lyx_view_->buffer(), /**/);
Buffer * buf = lyx_view_->buffer();
if (buf->lyxvc().inUse())
buf->lyxvc().toggleReadOnly();
break;
case LFUN_BUFFER_RELOAD: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
docstring const file = makeDisplayPath(lyx_view_->buffer()->absFileName(), 20);
docstring text = bformat(_("Any changes will be lost. Are you sure "
"you want to revert to the saved version of the document %1$s?"), file);
}
case LFUN_BUFFER_UPDATE:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->doExport(argument, true);
break;
case LFUN_BUFFER_VIEW:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->preview(argument);
break;
case LFUN_MASTER_BUFFER_UPDATE:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer(), /**/);
lyx_view_->buffer()->masterBuffer()->doExport(argument, true);
break;
case LFUN_MASTER_BUFFER_VIEW:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer(), /**/);
lyx_view_->buffer()->masterBuffer()->preview(argument);
break;
case LFUN_BUILD_PROGRAM:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->doExport("program", true);
break;
case LFUN_BUFFER_CHKTEX:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->runChktex();
break;
case LFUN_BUFFER_EXPORT:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
if (argument == "custom")
dispatch(FuncRequest(LFUN_DIALOG_SHOW, "sendto"));
else
break;
case LFUN_BUFFER_EXPORT_CUSTOM: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
string format_name;
string command = split(argument, format_name, ' ');
Format const * format = formats.getFormat(format_name);
}
case LFUN_BUFFER_PRINT: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
// FIXME: cmd.getArg() might fail if one of the arguments
// contains double quotes
string target = cmd.getArg(0);
break;
case LFUN_HELP_OPEN: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
string const arg = argument;
if (arg.empty()) {
setErrorMessage(from_ascii(N_("Missing argument")));
// --- version control -------------------------------
case LFUN_VC_REGISTER:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
- if (!ensureBufferClean(view()))
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
+ if (!ensureBufferClean(view()) || lyx_view_->buffer()->isUnnamed())
break;
if (!lyx_view_->buffer()->lyxvc().inUse()) {
lyx_view_->buffer()->lyxvc().registrer();
break;
case LFUN_VC_CHECK_IN:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
if (!ensureBufferClean(view()))
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;
case LFUN_VC_CHECK_OUT:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
if (!ensureBufferClean(view()))
break;
- if (lyx_view_->buffer()->lyxvc().inUse()
- && lyx_view_->buffer()->isReadonly()) {
- lyx_view_->buffer()->lyxvc().checkOut();
+ if (lyx_view_->buffer()->lyxvc().inUse()) {
+ setMessage(from_utf8(lyx_view_->buffer()->lyxvc().checkOut()));
reloadBuffer();
}
break;
case LFUN_VC_REVERT:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->lyxvc().revert();
reloadBuffer();
break;
case LFUN_VC_UNDO_LAST:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
lyx_view_->buffer()->lyxvc().undoLast();
reloadBuffer();
break;
// --- lyxserver commands ----------------------------
- case LFUN_SERVER_GET_NAME:
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ case LFUN_SERVER_GET_FILENAME:
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
setMessage(from_utf8(lyx_view_->buffer()->absFileName()));
LYXERR(Debug::INFO, "FNAME["
<< lyx_view_->buffer()->absFileName() << ']');
break;
case LFUN_SERVER_GOTO_FILE_ROW: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
string file_name;
int row;
istringstream is(argument);
// and get full path
FileName const s = fileSearch(string(), changeExtension(file_name, ".lyx"), "lyx");
// Either change buffer or load the file
- if (theBufferList().exists(s.absFilename()))
- buf = theBufferList().getBuffer(s.absFilename());
+ if (theBufferList().exists(s))
+ buf = theBufferList().getBuffer(s);
else {
buf = lyx_view_->loadDocument(s);
loaded = true;
case LFUN_DIALOG_SHOW_NEW_INSET: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
string const name = cmd.getArg(0);
InsetCode code = insetCode(name);
string data = trim(to_utf8(cmd.argument()).substr(name.size()));
}
case LFUN_CITATION_INSERT: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
if (!argument.empty()) {
// we can have one optional argument, delimited by '|'
// citation-insert <key>|<text_before>
}
case LFUN_BUFFER_CHILD_OPEN: {
- BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
+ LASSERT(lyx_view_ && lyx_view_->buffer(), /**/);
Buffer * parent = lyx_view_->buffer();
FileName filename = makeAbsPath(argument, parent->filePath());
view()->saveBookmark(false);
Buffer * child = 0;
bool parsed = false;
- if (theBufferList().exists(filename.absFilename())) {
- child = theBufferList().getBuffer(filename.absFilename());
+ if (theBufferList().exists(filename)) {
+ child = theBufferList().getBuffer(filename);
} else {
setMessage(bformat(_("Opening child document %1$s..."),
makeDisplayPath(filename.absFilename())));
}
case LFUN_CURSOR_FOLLOWS_SCROLLBAR_TOGGLE:
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
lyxrc.cursor_follows_scrollbar = !lyxrc.cursor_follows_scrollbar;
break;
case LFUN_KEYMAP_OFF:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().keyMapOn(false);
break;
case LFUN_KEYMAP_PRIMARY:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().keyMapPrim();
break;
case LFUN_KEYMAP_SECONDARY:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().keyMapSec();
break;
case LFUN_KEYMAP_TOGGLE:
- BOOST_ASSERT(lyx_view_ && lyx_view_->view());
+ LASSERT(lyx_view_ && lyx_view_->view(), /**/);
lyx_view_->view()->getIntl().toggleKeyMap();
break;
break;
}
+ case LFUN_COMMAND_ALTERNATIVES: {
+ // argument contains ';'-terminated commands
+ string arg = argument;
+ while (!arg.empty()) {
+ string first;
+ arg = split(arg, first, ';');
+ FuncRequest func(lyxaction.lookupFunc(first));
+ func.origin = cmd.origin;
+ FuncStatus stat = getStatus(func);
+ if (stat.enabled()) {
+ dispatch(func);
+ break;
+ }
+ }
+ break;
+ }
+
case LFUN_CALL: {
FuncRequest func;
- if (LyX::ref().topLevelCmdDef().lock(argument, func)) {
+ if (theTopLevelCmdDef().lock(argument, func)) {
func.origin = cmd.origin;
dispatch(func);
- LyX::ref().topLevelCmdDef().release(argument);
+ theTopLevelCmdDef().release(argument);
} else {
if (func.action == LFUN_UNKNOWN_ACTION) {
// unknown command definition
break;
}
- case LFUN_SET_COLOR: {
- string lyx_name;
- string const x11_name = split(argument, lyx_name, ' ');
- if (lyx_name.empty() || x11_name.empty()) {
- setErrorMessage(from_ascii(N_(
- "Syntax: set-color <lyx_name>"
- " <x11_name>")));
- break;
- }
-
- bool const graphicsbg_changed =
- (lyx_name == lcolor.getLyXName(Color_graphicsbg) &&
- x11_name != lcolor.getX11Name(Color_graphicsbg));
-
- if (!lcolor.setColor(lyx_name, x11_name)) {
- setErrorMessage(
- bformat(_("Set-color \"%1$s\" failed "
- "- color is undefined or "
- "may not be redefined"),
- from_utf8(lyx_name)));
- break;
- }
-
- theApp()->updateColor(lcolor.getFromLyXName(lyx_name));
-
- if (graphicsbg_changed) {
- // FIXME: The graphics cache no longer has a changeDisplay method.
-#if 0
- graphics::GCache::get().changeDisplay(true);
-#endif
- }
- break;
- }
-
case LFUN_MESSAGE:
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
lyx_view_->message(from_utf8(argument));
break;
-
- case LFUN_ALL_INSETS_TOGGLE: {
- BOOST_ASSERT(lyx_view_);
- string action;
- string const name = split(argument, action, ' ');
- InsetCode const inset_code = insetCode(name);
-
- Cursor & cur = view()->cursor();
- FuncRequest fr(LFUN_INSET_TOGGLE, action);
-
- Inset & inset = lyx_view_->buffer()->inset();
- InsetIterator it = inset_iterator_begin(inset);
- InsetIterator const end = inset_iterator_end(inset);
- for (; it != end; ++it) {
- if (!it->asInsetMath()
- && (inset_code == NO_CODE
- || inset_code == it->lyxCode())) {
- Cursor tmpcur = cur;
- tmpcur.pushBackward(*it);
- it->dispatch(tmpcur, fr);
- }
- }
- updateFlags = Update::Force | Update::FitCursor;
- break;
- }
-
case LFUN_BUFFER_LANGUAGE: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer & buffer = *lyx_view_->buffer();
Language const * oldL = buffer.params().language;
Language const * newL = languages.getLanguage(argument);
}
case LFUN_BUFFER_PARAMS_APPLY: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- DocumentClass * oldClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldClass = buffer->params().documentClassPtr();
Cursor & cur = view()->cursor();
cur.recordUndoFullDocument();
}
case LFUN_LAYOUT_MODULES_CLEAR: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- DocumentClass * oldClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().clearLayoutModules();
buffer->params().makeDocumentClass();
}
case LFUN_LAYOUT_MODULE_ADD: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- DocumentClass * oldClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().addLayoutModule(argument);
buffer->params().makeDocumentClass();
}
case LFUN_TEXTCLASS_APPLY: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
if (!loadLayoutFile(argument, buffer->temppath()) &&
break;
//Save the old, possibly modular, layout for use in conversion.
- DocumentClass * oldDocClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldDocClass = buffer->params().documentClassPtr();
view()->cursor().recordUndoFullDocument();
buffer->params().setBaseClass(argument);
buffer->params().makeDocumentClass();
}
case LFUN_LAYOUT_RELOAD: {
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
Buffer * buffer = lyx_view_->buffer();
- DocumentClass * oldClass = buffer->params().documentClassPtr();
+ DocumentClass const * const oldClass = buffer->params().documentClassPtr();
LayoutFileIndex bc = buffer->params().baseClassID();
LayoutFileList::get().reset(bc);
buffer->params().setBaseClass(bc);
break;
case LFUN_BOOKMARK_CLEAR:
- LyX::ref().session().bookmarks().clear();
+ theSession().bookmarks().clear();
break;
default:
- BOOST_ASSERT(theApp());
+ LASSERT(theApp(), /**/);
// Let the frontend dispatch its own actions.
if (theApp()->dispatch(cmd))
// Nothing more to do.
if (lyx_view_ == 0)
break;
+ // Start an undo group. This may be needed for
+ // some stuff like inset-apply on labels.
+ if (lyx_view_->view())
+ view()->cursor().beginUndoGroup();
+
// Let the current LyXView dispatch its own actions.
if (lyx_view_->dispatch(cmd)) {
- if (lyx_view_->view())
+ if (lyx_view_->view()) {
updateFlags = lyx_view_->view()->cursor().result().update();
+ view()->cursor().endUndoGroup();
+ }
break;
}
- BOOST_ASSERT(lyx_view_->view());
+ LASSERT(lyx_view_->view(), /**/);
+
// 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;
}
view()->cursor().fixIfBroken();
}
+ // we assume here that the buffer view has not
+ // changed since the beginUndoGroup.
+ view()->cursor().endUndoGroup();
+
// update completion. We do it here and not in
// processKeySym to avoid another redraw just for a
// changed inline completion
if (keyseq.length() > 0 && !keyseq.deleted())
return keyseq.printOptions(true);
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
if (!lyx_view_->buffer())
return _("Welcome to LyX!");
BufferView * LyXFunc::view() const
{
- BOOST_ASSERT(lyx_view_);
+ LASSERT(lyx_view_, /**/);
return lyx_view_->view();
}
}
-void LyXFunc::updateLayout(DocumentClass * oldlayout,Buffer * buffer)
+void LyXFunc::updateLayout(DocumentClass const * const oldlayout, Buffer * buffer)
{
lyx_view_->message(_("Converting document to new document class..."));
case LyXRC::RC_CUSTOM_EXPORT_FORMAT:
case LyXRC::RC_DATE_INSERT_FORMAT:
case LyXRC::RC_DEFAULT_LANGUAGE:
+ case LyXRC::RC_GUI_LANGUAGE:
case LyXRC::RC_DEFAULT_PAPERSIZE:
case LyXRC::RC_DEFFILE:
case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
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:
case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
case LyXRC::RC_LANGUAGE_PACKAGE:
case LyXRC::RC_LANGUAGE_USE_BABEL:
+ case LyXRC::RC_MAC_LIKE_WORD_MOVEMENT:
case LyXRC::RC_MACRO_EDIT_STYLE:
case LyXRC::RC_MAKE_BACKUP:
case LyXRC::RC_MARK_FOREIGN_LANGUAGE: