]> git.lyx.org Git - lyx.git/blobdiff - src/Text3.cpp
* do not lookup the same macro all the time
[lyx.git] / src / Text3.cpp
index e53afea82d8b1da713034643691d9b583762738c..4085b75a89116948b541cae7345c57dcd8b3b639 100644 (file)
@@ -244,6 +244,7 @@ namespace {
 
 void specialChar(Cursor & cur, InsetSpecialChar::Kind kind)
 {
+       recordUndo(cur);
        cap::replaceSelection(cur);
        cur.insert(new InsetSpecialChar(kind));
        cur.posRight();
@@ -433,7 +434,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
                //lyxerr << BOOST_CURRENT_FUNCTION
                //       << " LFUN_CHAR_FORWARD[SEL]:\n" << cur << endl;
                needsUpdate |= cur.selHandle(cmd.action == LFUN_CHAR_FORWARD_SELECT);
-               if (isRTL(*cur.bv().buffer(), cur.paragraph()))
+               if (reverseDirectionNeeded(cur))
                        needsUpdate |= cursorLeft(cur);
                else
                        needsUpdate |= cursorRight(cur);
@@ -451,7 +452,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_CHAR_BACKWARD_SELECT:
                //lyxerr << "handle LFUN_CHAR_BACKWARD[_SELECT]:\n" << cur << endl;
                needsUpdate |= cur.selHandle(cmd.action == LFUN_CHAR_BACKWARD_SELECT);
-               if (isRTL(*cur.bv().buffer(), cur.paragraph()))
+               if (reverseDirectionNeeded(cur))
                        needsUpdate |= cursorRight(cur);
                else
                        needsUpdate |= cursorLeft(cur);
@@ -557,7 +558,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_WORD_FORWARD:
        case LFUN_WORD_FORWARD_SELECT:
                needsUpdate |= cur.selHandle(cmd.action == LFUN_WORD_FORWARD_SELECT);
-               if (isRTL(*cur.bv().buffer(), cur.paragraph()))
+               if (reverseDirectionNeeded(cur))
                        needsUpdate |= cursorLeftOneWord(cur);
                else
                        needsUpdate |= cursorRightOneWord(cur);
@@ -568,7 +569,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_WORD_BACKWARD:
        case LFUN_WORD_BACKWARD_SELECT:
                needsUpdate |= cur.selHandle(cmd.action == LFUN_WORD_BACKWARD_SELECT);
-               if (isRTL(*cur.bv().buffer(), cur.paragraph()))
+               if (reverseDirectionNeeded(cur))
                        needsUpdate |= cursorRightOneWord(cur);
                else
                        needsUpdate |= cursorLeftOneWord(cur);
@@ -1336,6 +1337,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
        case LFUN_MATH_BIGDELIM: {
                cur.insert(new InsetMathHull(hullSimple));
                cur.dispatch(FuncRequest(LFUN_CHAR_FORWARD));
+               BOOST_ASSERT(cur.inMathed());
                cur.dispatch(cmd);
                break;
        }
@@ -1434,11 +1436,14 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
 
        case LFUN_FINISHED_LEFT:
                LYXERR(Debug::DEBUG) << "handle LFUN_FINISHED_LEFT:\n" << cur << endl;
+               if (reverseDirectionNeeded(cur))
+                       ++cur.pos();
                break;
 
        case LFUN_FINISHED_RIGHT:
                LYXERR(Debug::DEBUG) << "handle LFUN_FINISHED_RIGHT:\n" << cur << endl;
-               ++cur.pos();
+               if (!reverseDirectionNeeded(cur))
+                       ++cur.pos();
                break;
 
        case LFUN_FINISHED_UP: