]> git.lyx.org Git - lyx.git/commitdiff
FindAdv: Amend2 dacd2c45: Handle search for '{' and '}'
authorKornel Benko <kornel@lyx.org>
Mon, 18 Jan 2021 15:06:40 +0000 (16:06 +0100)
committerKornel Benko <kornel@lyx.org>
Mon, 18 Jan 2021 15:06:40 +0000 (16:06 +0100)
Allow for using 'a{2,7}' to find 2 to 7 consecutive chars 'a'

src/lyxfind.cpp

index d2c9891f1875ad0f3317cf7421580aea04fd819d..ab20921d0e73cc93c6a4ca798f9630f8eccb825f 100644 (file)
@@ -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);
                }