#include "support/lyxalgo.h"
#include "support/textutils.h"
-#include <limits>
#include <sstream>
LBUFERR(this == cur.text());
pos_type left_pos, right_pos;
- bool left_is_letter, right_is_letter;
Cursor temp_cur = 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
LBUFERR(this == cur.text());
pos_type left_pos, right_pos;
- bool left_is_letter, right_is_letter;
Cursor temp_cur = 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
// 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);
}
}
-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);
}