From: Kornel Benko Date: Mon, 18 Jan 2021 15:06:40 +0000 (+0100) Subject: FindAdv: Amend2 dacd2c45: Handle search for '{' and '}' X-Git-Tag: 2.4.0-alpha3~261 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=96f9c8fb19a75e35e274e9621ad0207e2d0662ca;p=lyx.git FindAdv: Amend2 dacd2c45: Handle search for '{' and '}' Allow for using 'a{2,7}' to find 2 to 7 consecutive chars 'a' --- diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp index d2c9891f18..ab20921d0e 100644 --- a/src/lyxfind.cpp +++ b/src/lyxfind.cpp @@ -769,6 +769,7 @@ string correctRegex(string t, bool withformat) regex wordre("(\\\\)*(\\\\((backslash|mathcircumflex) ?|[\\[\\]\\{\\}]))"); size_t lastpos = 0; smatch sub; + bool backslashed = false; for (sregex_iterator it(t.begin(), t.end(), wordre), end; it != end; ++it) { sub = *it; string replace; @@ -779,21 +780,30 @@ string correctRegex(string t, bool withformat) if (sub.str(4) == "backslash") { replace = "\\"; if (withformat) { + // tranforms '\backslash \{' into '\{' + // and '\{' into '{' sregex_iterator it2 = it; ++it2; smatch sub2 = *it2; - if (sub2.str(3) == "{") - replace = ""; - else if (sub2.str(3) == "}") + if ((sub2.str(3) == "{") || (sub2.str(3) == "}")) { replace = ""; + backslashed = true; + } } } else if (sub.str(4) == "mathcircumflex") replace = "^"; - else if (withformat && (sub.str(3) == "{")) - replace = accents["braceleft"]; - else if (withformat && (sub.str(3) == "}")) - replace = accents["braceright"]; + else if (backslashed) { + backslashed = false; + if (withformat && (sub.str(3) == "{")) + replace = accents["braceleft"]; + else if (withformat && (sub.str(3) == "}")) + replace = accents["braceright"]; + else { + // else part should not exist + LASSERT(1, /**/); + } + } else replace = sub.str(3); }