#include "BufferList.h"
#include "BufferParams.h"
#include "BufferView.h"
+#include "CmdDef.h"
#include "Color.h"
#include "Cursor.h"
#include "CutAndPaste.h"
#include "DispatchResult.h"
#include "Encoding.h"
#include "ErrorList.h"
-#include "Exporter.h"
#include "Format.h"
#include "FuncRequest.h"
#include "FuncStatus.h"
LYXERR(Debug::KEY) << BOOST_CURRENT_FUNCTION
<< " Key [action="
<< func.action << "]["
- << to_utf8(keyseq.print(false)) << ']'
+ << to_utf8(keyseq.print(KeySequence::Portable)) << ']'
<< endl;
// already here we know if it any point in going further
// num_bytes == 0? (Lgb)
if (keyseq.length() > 1)
- lyx_view_->message(keyseq.print(true));
+ lyx_view_->message(keyseq.print(KeySequence::ForGui));
// Maybe user can only reach the key via holding down shift.
case LFUN_BUFFER_EXPORT:
enable = cmd.argument() == "custom"
- || Exporter::isExportable(*buf, to_utf8(cmd.argument()));
+ || buf->isExportable(to_utf8(cmd.argument()));
break;
case LFUN_BUFFER_CHKTEX:
break;
case LFUN_BUILD_PROGRAM:
- enable = Exporter::isExportable(*buf, "program");
+ enable = buf->isExportable("program");
break;
case LFUN_VC_REGISTER:
|| name == "prefs"
|| name == "texinfo";
else if (name == "print")
- enable = Exporter::isExportable(*buf, "dvi")
+ enable = buf->isExportable("dvi")
&& lyxrc.print_command != "none";
else if (name == "character") {
if (!view())
FuncRequest func(lyxaction.lookupFunc(firstcmd));
func.origin = cmd.origin;
flag = getStatus(func);
+ break;
+ }
+
+ case LFUN_CALL: {
+ FuncRequest func;
+ std::string name(to_utf8(cmd.argument()));
+ if (LyX::ref().topLevelCmdDef().lock(name, func)) {
+ func.origin = cmd.origin;
+ flag = getStatus(func);
+ LyX::ref().topLevelCmdDef().release(name);
+ } else {
+ // catch recursion or unknown command definiton
+ // all operations until the recursion or unknown command
+ // definiton occures are performed, so set the state to enabled
+ enable = true;
+ }
+ break;
}
case LFUN_BUFFER_NEW:
case LFUN_META_PREFIX:
meta_fake_bit = AltModifier;
- setMessage(keyseq.print(true));
+ setMessage(keyseq.print(KeySequence::ForGui));
break;
case LFUN_BUFFER_TOGGLE_READ_ONLY: {
case LFUN_BUFFER_UPDATE:
BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
- Exporter::Export(lyx_view_->buffer(), argument, true);
+ lyx_view_->buffer()->doExport(argument, true);
break;
case LFUN_BUFFER_VIEW:
BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
- Exporter::preview(lyx_view_->buffer(), argument);
+ lyx_view_->buffer()->preview(argument);
break;
case LFUN_MASTER_BUFFER_UPDATE:
BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer());
- Exporter::Export(lyx_view_->buffer()->masterBuffer(), argument, true);
+ lyx_view_->buffer()->masterBuffer()->doExport(argument, true);
break;
case LFUN_MASTER_BUFFER_VIEW:
BOOST_ASSERT(lyx_view_ && lyx_view_->buffer() && lyx_view_->buffer()->masterBuffer());
- Exporter::preview(lyx_view_->buffer()->masterBuffer(), argument);
+ lyx_view_->buffer()->masterBuffer()->preview(argument);
break;
case LFUN_BUILD_PROGRAM:
BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
- Exporter::Export(lyx_view_->buffer(), "program", true);
+ lyx_view_->buffer()->doExport("program", true);
break;
case LFUN_BUFFER_CHKTEX:
BOOST_ASSERT(lyx_view_ && lyx_view_->buffer());
if (argument == "custom")
lyx_view_->getDialogs().show("sendto");
- else {
- Exporter::Export(lyx_view_->buffer(), argument, false);
- }
+ else
+ lyx_view_->buffer()->doExport(argument, false);
break;
case LFUN_BUFFER_EXPORT_CUSTOM: {
break;
} else {
- Exporter::Export(buffer, format_name, true, filename);
+ buffer->doExport(format_name, true, filename);
}
// Substitute $$FName for filename
Buffer * buffer = lyx_view_->buffer();
- if (!Exporter::Export(buffer, "dvi", true)) {
+ if (!buffer->doExport("dvi", true)) {
showPrintError(buffer->absFileName());
break;
}
break;
case LFUN_SERVER_NOTIFY:
- dispatch_buffer = keyseq.print(false);
+ dispatch_buffer = keyseq.print(KeySequence::Portable);
theServer().notifyClient(to_utf8(dispatch_buffer));
break;
break;
}
+ case LFUN_CALL: {
+ FuncRequest func;
+ if (LyX::ref().topLevelCmdDef().lock(argument, func)) {
+ func.origin = cmd.origin;
+ dispatch(func);
+ LyX::ref().topLevelCmdDef().release(argument);
+ } else {
+ if (func.action == LFUN_UNKNOWN_ACTION) {
+ // unknown command definition
+ lyxerr << "Warning: unknown command definition `"
+ << argument << "'"
+ << endl;
+ } else {
+ // recursion detected
+ lyxerr << "Warning: Recursion in the command definition `"
+ << argument << "' detected"
+ << endl;
+ }
+ }
+ break;
+ }
+
case LFUN_PREFERENCES_SAVE: {
lyxrc.write(makeAbsPath("preferences",
package().user_support().absFilename()),
{
// When meta-fake key is pressed, show the key sequence so far + "M-".
if (wasMetaKey())
- return keyseq.print(true) + "M-";
+ return keyseq.print(KeySequence::ForGui) + "M-";
// Else, when a non-complete key sequence is pressed,
// show the available options.