]> git.lyx.org Git - features.git/commitdiff
FindAdv: Amend 627cd6de: Use '~' instead of "\\ " for search if possible
authorKornel Benko <kornel@lyx.org>
Sun, 8 May 2022 12:30:45 +0000 (14:30 +0200)
committerKornel Benko <kornel@lyx.org>
Sun, 8 May 2022 12:30:45 +0000 (14:30 +0200)
Also fix a thinko in interpreting the found values.
The match_len describes the length of the second regex field,
while matchend is the length of the search field 0.

src/insets/InsetSpace.cpp
src/lyxfind.cpp

index 92d4c4360966ecde33e9fa35339b944f3f8ef994..669239b55fc0141aaed337cf1abca8f725499009 100644 (file)
@@ -579,7 +579,10 @@ void InsetSpace::latex(otexstream & os, OutputParams const & runparams) const
 {
        switch (params_.kind) {
        case InsetSpaceParams::NORMAL:
-               os << (runparams.free_spacing && (runparams.for_search == OutputParams::NoSearch) ? " " : "\\ ");
+               if (runparams.for_search != OutputParams::NoSearch)
+                       os << "~";
+               else
+                       os << (runparams.free_spacing ? " " : "\\ ");
                break;
        case InsetSpaceParams::PROTECTED:
                if (runparams.local_font &&
index 83ccb238247c1e1d8929476153711ef464554c8e..669742e5e2b88e25eeb5cc98114afd8ca10992d3 100644 (file)
@@ -831,10 +831,6 @@ string string2regex(string in)
                        blanks++;
                        i++;
                }
-               else if (tempx[i] == '\\' && tempx[i+1] == '\\' && tempx[i+2] == ' ') {
-                       blanks++;
-                       i += 2;
-               }
                else {
                        if (blanks > 0) {
                                temp += "\\s+";
@@ -3740,6 +3736,9 @@ MatchResult MatchStringAdv::findAux(DocIterator const & cur, int len, bool at_be
                if (lng != str.size()) {
                        str = str.substr(0, lng);
                }
+               // Replace occurences of '~' to ' '
+               static std::regex specialChars { R"(~)" };
+               str = std::regex_replace(str, specialChars,  R"( )" );
        }
        if (str.empty()) {
                mres.match_len = -1;
@@ -3808,7 +3807,7 @@ MatchResult MatchStringAdv::findAux(DocIterator const & cur, int len, bool at_be
                        while (mres.match_len > 0) {
                                QChar c = qstr.at(matchend - 1);
                                if ((c == '\n') || (c == '}') || (c == '{')) {
-                                       mres.match_len--;
+                                       // mres.match_len--;
                                        matchend--;
                                }
                                else
@@ -3837,7 +3836,7 @@ MatchResult MatchStringAdv::findAux(DocIterator const & cur, int len, bool at_be
                        while (mres.match_len > 0) {
                                char c = str.at(matchend - 1);
                                if ((c == '\n') || (c == '}') || (c == '{')) {
-                                       mres.match_len--;
+                                       // mres.match_len--;
                                        matchend--;
                                }
                                else