]> git.lyx.org Git - lyx.git/blobdiff - src/Text.cpp
achemso.layout: add a flex inset
[lyx.git] / src / Text.cpp
index eac26ea5d8f5c01c994186d3de6bff2f8a233782..67776a0d40df01a4cf8655c9f33a00188e29ccb3 100644 (file)
@@ -69,7 +69,6 @@
 #include "support/lyxalgo.h"
 #include "support/textutils.h"
 
-#include <limits>
 #include <sstream>
 
 
@@ -1187,7 +1186,6 @@ bool Text::cursorVisLeftOneWord(Cursor & cur)
        LBUFERR(this == cur.text());
 
        pos_type left_pos, right_pos;
-       bool left_is_letter, right_is_letter;
 
        Cursor temp_cur = cur;
 
@@ -1196,9 +1194,9 @@ bool Text::cursorVisLeftOneWord(Cursor & cur)
 
                // collect some information about current cursor position
                temp_cur.getSurroundingPos(left_pos, right_pos);
-               left_is_letter =
+               bool left_is_letter =
                        (left_pos > -1 ? !temp_cur.paragraph().isWordSeparator(left_pos) : false);
-               right_is_letter =
+               bool right_is_letter =
                        (right_pos > -1 ? !temp_cur.paragraph().isWordSeparator(right_pos) : false);
 
                // if we're not at a letter/non-letter boundary, continue moving
@@ -1224,7 +1222,6 @@ bool Text::cursorVisRightOneWord(Cursor & cur)
        LBUFERR(this == cur.text());
 
        pos_type left_pos, right_pos;
-       bool left_is_letter, right_is_letter;
 
        Cursor temp_cur = cur;
 
@@ -1233,9 +1230,9 @@ bool Text::cursorVisRightOneWord(Cursor & cur)
 
                // collect some information about current cursor position
                temp_cur.getSurroundingPos(left_pos, right_pos);
-               left_is_letter =
+               bool left_is_letter =
                        (left_pos > -1 ? !temp_cur.paragraph().isWordSeparator(left_pos) : false);
-               right_is_letter =
+               bool right_is_letter =
                        (right_pos > -1 ? !temp_cur.paragraph().isWordSeparator(right_pos) : false);
 
                // if we're not at a letter/non-letter boundary, continue moving
@@ -1490,20 +1487,19 @@ void Text::deleteWordBackward(Cursor & cur)
 
 
 // Kill to end of line.
-void Text::changeCase(Cursor & cur, TextCase action)
+void Text::changeCase(Cursor & cur, TextCase action, bool partial)
 {
        LBUFERR(this == cur.text());
        CursorSlice from;
        CursorSlice to;
 
-       bool gotsel = false;
-       if (cur.selection()) {
+       bool const gotsel = cur.selection();
+       if (gotsel) {
                from = cur.selBegin();
                to = cur.selEnd();
-               gotsel = true;
        } else {
                from = cur.top();
-               getWord(from, to, PARTIAL_WORD);
+               getWord(from, to, partial ? PARTIAL_WORD : WHOLE_WORD);
                cursorForwardOneWord(cur);
        }
 
@@ -2047,16 +2043,25 @@ docstring Text::asString(pit_type beg, pit_type end, int options) const
 }
 
 
-void Text::forOutliner(docstring & os, size_t maxlen, bool shorten) const
+void Text::shortenForOutliner(docstring & str, size_t const maxlen)
 {
-       if (maxlen == 0)
-               maxlen = std::numeric_limits<std::size_t>::max();
-       else
-               LASSERT(maxlen >= 8, maxlen = TOC_ENTRY_LENGTH);
-       for (size_t i = 0; i != pars_.size() && os.length() < maxlen; ++i)
-               pars_[i].forOutliner(os, maxlen);
-       if (shorten && os.length() >= maxlen)
-               os = os.substr(0, maxlen - 3) + from_ascii("...");
+       support::truncateWithEllipsis(str, maxlen);
+       docstring::iterator it = str.begin();
+       docstring::iterator end = str.end();
+       for (; it != end; ++it)
+               if ((*it) == L'\n' || (*it) == L'\t')
+                       (*it) = L' ';   
+}
+
+
+void Text::forOutliner(docstring & os, size_t const maxlen,
+                                          bool const shorten) const
+{
+       size_t tmplen = shorten ? maxlen + 1 : maxlen;
+       for (size_t i = 0; i != pars_.size() && os.length() < tmplen; ++i)
+               pars_[i].forOutliner(os, tmplen, false);
+       if (shorten)
+               shortenForOutliner(os, maxlen);
 }