]> git.lyx.org Git - lyx.git/blobdiff - src/Text.cpp
LogUi.ui: string redundancy.
[lyx.git] / src / Text.cpp
index b9bc20f621e511a487565e6c7c3df9a5eb21378d..7cc44d990126ca274339e85a52dd186330b5ef27 100644 (file)
@@ -37,6 +37,7 @@
 #include "Language.h"
 #include "Length.h"
 #include "Lexer.h"
+#include "lyxfind.h"
 #include "LyXRC.h"
 #include "Paragraph.h"
 #include "paragraph_funcs.h"
@@ -59,7 +60,6 @@
 #include "insets/InsetSpecialChar.h"
 #include "insets/InsetTabular.h"
 
-#include "support/convert.h"
 #include "support/debug.h"
 #include "support/docstream.h"
 #include "support/gettext.h"
@@ -187,6 +187,15 @@ void readParToken(Buffer const & buf, Paragraph & par, Lexer & lex,
                else
                        lex.printError("Unknown bar font flag "
                                       "`$$Token'");
+       } else if (token == "\\strikeout") {
+               lex.next();
+               font.fontInfo().setStrikeout(font.setLyXMisc(lex.getString()));
+       } else if (token == "\\uuline") {
+               lex.next();
+               font.fontInfo().setUuline(font.setLyXMisc(lex.getString()));
+       } else if (token == "\\uwave") {
+               lex.next();
+               font.fontInfo().setUwave(font.setLyXMisc(lex.getString()));
        } else if (token == "\\noun") {
                lex.next();
                font.fontInfo().setNoun(font.setLyXMisc(lex.getString()));
@@ -565,8 +574,8 @@ void Text::charInserted(Cursor & cur)
 
        // register word if a non-letter was entered
        if (cur.pos() > 1
-           && par.isLetter(cur.pos() - 2)
-           && !par.isLetter(cur.pos() - 1)) {
+           && !par.isWordSeparator(cur.pos() - 2)
+           && par.isWordSeparator(cur.pos() - 1)) {
                // get the word in front of cursor
                LASSERT(this == cur.text(), /**/);
                cur.paragraph().updateWords();
@@ -600,14 +609,14 @@ bool Text::cursorForwardOneWord(Cursor & cur)
                         ++pos;
 
                // Skip over either a non-char inset or a full word
-               if (pos != lastpos && !par.isLetter(pos))
+               if (pos != lastpos && par.isWordSeparator(pos))
                        ++pos;
-               else while (pos != lastpos && par.isLetter(pos))
+               else while (pos != lastpos && !par.isWordSeparator(pos))
                             ++pos;
        } else {
                LASSERT(pos < lastpos, /**/); // see above
-               if (par.isLetter(pos))
-                       while (pos != lastpos && par.isLetter(pos))
+               if (!par.isWordSeparator(pos))
+                       while (pos != lastpos && !par.isWordSeparator(pos))
                                ++pos;
                else if (par.isChar(pos))
                        while (pos != lastpos && par.isChar(pos))
@@ -642,17 +651,17 @@ bool Text::cursorBackwardOneWord(Cursor & cur)
                        --pos;
 
                // Skip over either a non-char inset or a full word
-               if (pos != 0 && !par.isLetter(pos - 1) && !par.isChar(pos - 1))
+               if (pos != 0 && par.isWordSeparator(pos - 1) && !par.isChar(pos - 1))
                        --pos;
-               else while (pos != 0 && par.isLetter(pos - 1))
+               else while (pos != 0 && !par.isWordSeparator(pos - 1))
                             --pos;
        } else {
                // Skip over white space
                while (pos != 0 && par.isSpace(pos - 1))
                             --pos;
 
-               if (pos != 0 && par.isLetter(pos - 1))
-                       while (pos != 0 && par.isLetter(pos - 1))
+               if (pos != 0 && !par.isWordSeparator(pos - 1))
+                       while (pos != 0 && !par.isWordSeparator(pos - 1))
                                --pos;
                else if (pos != 0 && par.isChar(pos - 1))
                        while (pos != 0 && par.isChar(pos - 1))
@@ -680,9 +689,9 @@ bool Text::cursorVisLeftOneWord(Cursor & cur)
                // collect some information about current cursor position
                temp_cur.getSurroundingPos(left_pos, right_pos);
                left_is_letter = 
-                       (left_pos > -1 ? temp_cur.paragraph().isLetter(left_pos) : false);
+                       (left_pos > -1 ? !temp_cur.paragraph().isWordSeparator(left_pos) : false);
                right_is_letter = 
-                       (right_pos > -1 ? temp_cur.paragraph().isLetter(right_pos) : false);
+                       (right_pos > -1 ? !temp_cur.paragraph().isWordSeparator(right_pos) : false);
 
                // if we're not at a letter/non-letter boundary, continue moving
                if (left_is_letter == right_is_letter)
@@ -717,9 +726,9 @@ bool Text::cursorVisRightOneWord(Cursor & cur)
                // collect some information about current cursor position
                temp_cur.getSurroundingPos(left_pos, right_pos);
                left_is_letter = 
-                       (left_pos > -1 ? temp_cur.paragraph().isLetter(left_pos) : false);
+                       (left_pos > -1 ? !temp_cur.paragraph().isWordSeparator(left_pos) : false);
                right_is_letter = 
-                       (right_pos > -1 ? temp_cur.paragraph().isLetter(right_pos) : false);
+                       (right_pos > -1 ? !temp_cur.paragraph().isWordSeparator(right_pos) : false);
 
                // if we're not at a letter/non-letter boundary, continue moving
                if (left_is_letter == right_is_letter)
@@ -792,8 +801,11 @@ void Text::acceptOrRejectChanges(Cursor & cur, ChangeOp op)
 {
        LASSERT(this == cur.text(), /**/);
 
-       if (!cur.selection())
-               return;
+       if (!cur.selection()) {
+               Change const & change = cur.paragraph().lookupChange(cur.pos());
+               if (!(change.changed() && findNextChange(&cur.bv())))
+                       return;
+       }
 
        cur.recordUndoSelection();
 
@@ -1599,8 +1611,8 @@ bool Text::completionSupported(Cursor const & cur) const
 {
        Paragraph const & par = cur.paragraph();
        return cur.pos() > 0
-               && (cur.pos() >= par.size() || !par.isLetter(cur.pos()))
-               && par.isLetter(cur.pos() - 1);
+               && (cur.pos() >= par.size() || par.isWordSeparator(cur.pos()))
+               && !par.isWordSeparator(cur.pos() - 1);
 }