+
+/** Checks if the supplied character is lower-case */
+static bool isLowerCase(char_type ch) {
+ return lowercase(ch) == ch;
+}
+
+
+/** Checks if the supplied character is upper-case */
+static bool isUpperCase(char_type ch) {
+ return uppercase(ch) == ch;
+}
+
+
+/** Check if 'len' letters following cursor are all non-lowercase */
+static bool allNonLowercase(DocIterator const & cur, int len) {
+ pos_type end_pos = cur.pos() + len;
+ for (pos_type pos = cur.pos(); pos != end_pos; ++pos)
+ if (isLowerCase(cur.paragraph().getChar(pos)))
+ return false;
+ return true;
+}
+
+
+/** Check if first letter is upper case and second one is lower case */
+static bool firstUppercase(DocIterator const & cur) {
+ char_type ch1, ch2;
+ if (cur.pos() >= cur.lastpos() - 1) {
+ LYXERR(Debug::FIND, "No upper-case at cur: " << cur);
+ return false;
+ }
+ ch1 = cur.paragraph().getChar(cur.pos());
+ ch2 = cur.paragraph().getChar(cur.pos()+1);
+ bool result = isUpperCase(ch1) && isLowerCase(ch2);
+ LYXERR(Debug::FIND, "firstUppercase(): "
+ << "ch1=" << ch1 << "(" << char(ch1) << "), ch2="
+ << ch2 << "(" << char(ch2) << ")"
+ << ", result=" << result << ", cur=" << cur);
+ return result;
+}
+
+
+/** Make first letter of supplied buffer upper-case, and the rest lower-case.
+ **
+ ** \fixme What to do with possible further paragraphs in replace buffer ?
+ **/
+static void changeFirstCase(Buffer & buffer, TextCase first_case, TextCase others_case) {
+ ParagraphList::iterator pit = buffer.paragraphs().begin();
+ pos_type right = pos_type(1);
+ pit->changeCase(buffer.params(), pos_type(0), right, first_case);
+ right = pit->size() + 1;
+ pit->changeCase(buffer.params(), right, right, others_case);
+}
+
+