> I'll wait for others to comment, but surely there is a style problem in your > patch. > Some lines of new code are indented with spaces. I think tabs should be used > here.
Sorry about that. I've replaced the offending spaces with tabs now. Punya
Index: src/insets/InsetTabular.cpp =================================================================== --- src/insets/InsetTabular.cpp (revision 35182) +++ src/insets/InsetTabular.cpp (working copy) @@ -3773,7 +3773,15 @@ case LFUN_CHAR_RIGHT_SELECT: case LFUN_CHAR_RIGHT: case LFUN_CHAR_LEFT_SELECT: - case LFUN_CHAR_LEFT: { + case LFUN_CHAR_LEFT: + case LFUN_WORD_FORWARD_SELECT: + case LFUN_WORD_FORWARD: + case LFUN_WORD_BACKWARD_SELECT: + case LFUN_WORD_BACKWARD: + case LFUN_WORD_LEFT_SELECT: + case LFUN_WORD_LEFT: + case LFUN_WORD_RIGHT_SELECT: + case LFUN_WORD_RIGHT: { // determine whether we move to next or previous cell, where to enter // the new cell from, and which command to "finish" (i.e., exit the // inset) with: @@ -3782,12 +3790,16 @@ FuncCode finish_lfun; if (act == LFUN_CHAR_FORWARD - || act == LFUN_CHAR_FORWARD_SELECT) { + || act == LFUN_CHAR_FORWARD_SELECT + || act == LFUN_WORD_FORWARD + || act == LFUN_WORD_FORWARD_SELECT) { next_cell = true; finish_lfun = LFUN_FINISHED_FORWARD; } else if (act == LFUN_CHAR_BACKWARD - || act == LFUN_CHAR_BACKWARD_SELECT) { + || act == LFUN_CHAR_BACKWARD_SELECT + || act == LFUN_WORD_BACKWARD + || act == LFUN_WORD_BACKWARD_SELECT) { next_cell = false; finish_lfun = LFUN_FINISHED_BACKWARD; } @@ -3795,7 +3807,9 @@ // table's direction. else { bool const right = act == LFUN_CHAR_RIGHT - || act == LFUN_CHAR_RIGHT_SELECT; + || act == LFUN_CHAR_RIGHT_SELECT + || act == LFUN_WORD_RIGHT + || act == LFUN_WORD_RIGHT_SELECT; next_cell = isRightToLeft(cur) != right; if (lyxrc.visual_cursor) @@ -3807,7 +3821,11 @@ bool const select = act == LFUN_CHAR_FORWARD_SELECT || act == LFUN_CHAR_BACKWARD_SELECT || act == LFUN_CHAR_RIGHT_SELECT || - act == LFUN_CHAR_LEFT_SELECT; + act == LFUN_CHAR_LEFT_SELECT || + act == LFUN_WORD_FORWARD_SELECT || + act == LFUN_WORD_BACKWARD_SELECT || + act == LFUN_WORD_RIGHT_SELECT || + act == LFUN_WORD_LEFT_SELECT; // If we have a multicell selection or we're // not doing some LFUN_*_SELECT thing anyway... Index: src/Text3.cpp =================================================================== --- src/Text3.cpp (revision 35182) +++ src/Text3.cpp (working copy) @@ -819,6 +819,11 @@ case LFUN_WORD_FORWARD_SELECT: needsUpdate |= cur.selHandle(cmd.action() == LFUN_WORD_FORWARD_SELECT); needsUpdate |= cursorForwardOneWord(cur); + if (!needsUpdate && oldTopSlice == cur.top() + && cur.boundary() == oldBoundary) { + cur.undispatched(); + cmd = FuncRequest(LFUN_FINISHED_FORWARD); + } break; case LFUN_WORD_LEFT: @@ -848,6 +853,11 @@ case LFUN_WORD_BACKWARD_SELECT: needsUpdate |= cur.selHandle(cmd.action() == LFUN_WORD_BACKWARD_SELECT); needsUpdate |= cursorBackwardOneWord(cur); + if (!needsUpdate && oldTopSlice == cur.top() + && cur.boundary() == oldBoundary) { + cur.undispatched(); + cmd = FuncRequest(LFUN_FINISHED_BACKWARD); + } break; case LFUN_WORD_SELECT: {