]> git.lyx.org Git - lyx.git/blobdiff - src/support/lstrings.cpp
Cmake build: Adapt handling of mytheslib to automek behaviour
[lyx.git] / src / support / lstrings.cpp
index 0dd8075e03287344ab3989c171fbe368d2935bc0..8ffab19c7ef14b9a8f2a4fe0b3cbd371ac68e3ff 100644 (file)
@@ -182,6 +182,18 @@ bool isASCII(char_type c)
 }
 
 
+bool isOpenPunctuation(char_type c)
+{
+       if (!is_utf16(c)) {
+               // assume that no non-utf16 character is an op
+               // c outside the UCS4 range is catched as well
+               return false;
+       }
+       QChar const qc = ucs4_to_qchar(c);
+       return qc.category() == QChar::Punctuation_Open;
+}
+
+
 namespace support {
 
 int compare_no_case(docstring const & s, docstring const & s2)
@@ -1168,7 +1180,8 @@ docstring const escape(docstring const & lab)
        for (size_t i = 0; i < lab.length(); ++i) {
                char_type c = lab[i];
                if (c >= 128 || c == '=' || c == '%' || c == '#' || c == '$'
-                   || c == '}' || c == '{' || c == ']' || c == '[' || c == '&') {
+                   || c == '}' || c == '{' || c == ']' || c == '[' || c == '&'
+                   || c == '\\') {
                        // Although char_type is a 32 bit type we know that
                        // UCS4 occupies only 21 bits, so we don't need to
                        // encode bigger values. Test for 2^24 because we
@@ -1190,6 +1203,16 @@ docstring const escape(docstring const & lab)
 }
 
 
+docstring const protectArgument(docstring & arg, char const l,
+                         char const r)
+{
+       if (contains(arg, l) || contains(arg, r))
+               // protect brackets
+               arg = '{' + arg + '}';
+       return arg;
+}
+
+
 bool truncateWithEllipsis(docstring & str, size_t const len)
 {
        if (str.size() <= len)