#include "insets/InsetGraphics.h"
#include "insets/InsetGraphicsParams.h"
#include "insets/InsetInfo.h"
+#include "insets/InsetIndexMacro.h"
#include "insets/InsetIPAMacro.h"
#include "insets/InsetNewline.h"
#include "insets/InsetQuotes.h"
if (cur.selection())
cutSelection(cur, false);
else
- deleteWordForward(cur, cmd.getArg(0) == "force");
+ deleteWordForward(cur, cmd.getArg(0) != "confirm");
finishChange(cur, false);
break;
if (cur.selection())
cutSelection(cur, false);
else
- deleteWordBackward(cur, cmd.getArg(0) == "force");
+ deleteWordBackward(cur, cmd.getArg(0) != "confirm");
finishChange(cur, false);
break;
case LFUN_UP:
case LFUN_DOWN: {
// stop/start the selection
- bool const select = cmd.action() == LFUN_DOWN_SELECT
- || cmd.action() == LFUN_UP_SELECT;
+ bool select = cmd.action() == LFUN_DOWN_SELECT ||
+ cmd.action() == LFUN_UP_SELECT;
+
// move cursor up/down
- bool const up = cmd.action() == LFUN_UP_SELECT || cmd.action() == LFUN_UP;
+ bool up = cmd.action() == LFUN_UP_SELECT || cmd.action() == LFUN_UP;
+ bool const atFirstOrLastRow = cur.atFirstOrLastRow(up);
- if (!cur.atFirstOrLastRow(up)) {
+ if (!atFirstOrLastRow) {
needsUpdate |= cur.selHandle(select);
cur.upDownInText(up, needsUpdate);
needsUpdate |= cur.beforeDispatchCursor().inMathed();
cur.forceBufferUpdate();
break;
}
- needsUpdate |= cur.selHandle(select);
- bool const can_move = cur.upDownInText(up, needsUpdate);
- // if the cursor can be moved up or down at an upper level,
- // delegate the dispatch to next level. Otherwise, we are
- // done.
- if (can_move) {
- cmd = FuncRequest(up ? LFUN_FINISHED_UP : LFUN_FINISHED_DOWN);
- cur.undispatched();
- }
- }
-
- break;
- }
-
- case LFUN_FINISHED_UP:
- case LFUN_FINISHED_DOWN: {
- // move cursor up/down
- bool const up = cmd.action() == LFUN_FINISHED_UP;
- if (!cur.atFirstOrLastRow(up)) {
+ // if the cursor cannot be moved up or down do not remove
+ // the selection right now, but wait for the next dispatch.
+ if (select)
+ needsUpdate |= cur.selHandle(select);
cur.upDownInText(up, needsUpdate);
- needsUpdate |= cur.beforeDispatchCursor().inMathed();
- } else {
- bool const can_move = cur.upDownInText(up, needsUpdate);
- // if the cursor can be moved up or down and we are not
- // moving cusor at top level, wait for the next dispatch.
- // Otherwise, we are done.
- if (can_move)
- cur.undispatched();
+ cur.undispatched();
}
break;
if (cur.pos() == cur.paragraph().size())
// Par boundary, force full-screen update
singleParUpdate = false;
- else if (cmd.getArg(0) != "force" && cur.confirmDeletion()) {
+ else if (cmd.getArg(0) == "confirm" && cur.confirmDeletion()) {
cur.resetAnchor();
cur.selection(true);
cur.posForward();
// Par boundary, full-screen update
if (par_boundary)
singleParUpdate = false;
- else if (cmd.getArg(0) != "force" && cur.confirmDeletion(true)) {
+ else if (cmd.getArg(0) == "confirm" && cur.confirmDeletion(true)) {
cur.resetAnchor();
cur.selection(true);
cur.posBackward();
case LFUN_BRANCH_INSERT:
case LFUN_PHANTOM_INSERT:
case LFUN_ERT_INSERT:
+ case LFUN_INDEXMACRO_INSERT:
case LFUN_LISTING_INSERT:
case LFUN_MARGINALNOTE_INSERT:
case LFUN_ARGUMENT_INSERT:
string const lang_arg = cmd.getArg(0);
bool const reset = (lang_arg.empty() || lang_arg == "reset");
Language const * lang =
- reset ? reset_language
+ reset ? cur.bv().buffer().params().language
: languages.getLanguage(lang_arg);
// we allow reset_language, which is 0, but only if it
// was requested via empty or "reset" arg.
break;
case LFUN_FLEX_INSERT: {
code = FLEX_CODE;
- docstring s = from_ascii("Flex:") + from_utf8(cmd.getArg(0));
+ docstring s = from_utf8(cmd.getArg(0));
+ // Prepend "Flex:" prefix if not there
+ if (!prefixIs(s, from_ascii("Flex:")))
+ s = from_ascii("Flex:") + s;
if (!cur.buffer()->params().documentClass().hasInsetLayout(s))
enable = false;
else {
}
code = HYPERLINK_CODE;
break;
+ case LFUN_INDEXMACRO_INSERT: {
+ string const arg = cmd.getArg(0);
+ if (arg == "sortkey")
+ code = INDEXMACRO_SORTKEY_CODE;
+ else
+ code = INDEXMACRO_CODE;
+ break;
+ }
case LFUN_IPAMACRO_INSERT: {
string const arg = cmd.getArg(0);
if (arg == "deco")