Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3f7fe829 authored by Jean Chalard's avatar Jean Chalard Committed by Android (Google) Code Review
Browse files

Merge "Always consider a new line the start of a sentence" into jb-mr1-dev

parents b24cda3c 2699b45d
Loading
Loading
Loading
Loading
+9 −5
Original line number Diff line number Diff line
@@ -250,15 +250,19 @@ public final class StringUtils {

        // Step 3 : Search for the start of a paragraph. From the starting point computed in step 2,
        // we go back over any space or tab char sitting there. We find the start of a paragraph
        // if the first char that's not a space or tab is a start of line (as in, either \n or
        // start of text).
        // if the first char that's not a space or tab is a start of line (as in \n, start of text,
        // or some other similar characters).
        int j = i;
        char prevChar = Keyboard.CODE_SPACE;
        if (hasSpaceBefore) --j;
        while (j > 0 && Character.isWhitespace(cs.charAt(j - 1))) {
        while (j > 0) {
            prevChar = cs.charAt(j - 1);
            if (!Character.isSpaceChar(prevChar) && prevChar != Keyboard.CODE_TAB) break;
            j--;
        }
        if (j == 0) {
            // There is only whitespace between the start of the text and the cursor. Both
        if (j <= 0 || Character.isWhitespace(prevChar)) {
            // There are only spacing chars between the start of the paragraph and the cursor,
            // defined as a isWhitespace() char that is neither a isSpaceChar() nor a tab. Both
            // MODE_WORDS and MODE_SENTENCES should be active.
            return (TextUtils.CAP_MODE_CHARACTERS | TextUtils.CAP_MODE_WORDS
                    | TextUtils.CAP_MODE_SENTENCES) & reqModes;
+8 −0
Original line number Diff line number Diff line
@@ -140,6 +140,14 @@ public class StringUtilsTests extends AndroidTestCase {
        allPathsForCaps("Word", c | w, l, true);
        allPathsForCaps("Word.", c | w | s, l, true);

        // Tests after some whitespace
        allPathsForCaps("Word\n", c | w | s, l, false);
        allPathsForCaps("Word\n", c | w | s, l, true);
        allPathsForCaps("Word\n ", c | w | s, l, true);
        allPathsForCaps("Word.\n", c | w | s, l, false);
        allPathsForCaps("Word.\n", c | w | s, l, true);
        allPathsForCaps("Word.\n ", c | w | s, l, true);

        l = Locale.FRENCH;
        allPathsForCaps("\"Word.\" ", c | w, l, false);
        allPathsForCaps("\"Word\". ", c | w | s, l, false);