commit 4bb427a2443d64bd01aad66ebdc0b3f802546bae
Author: Kornel Benko <[email protected]>
Date:   Sun May 8 14:30:45 2022 +0200

    FindAdv: Amend 627cd6de: Use '~' instead of "\\ " for search if possible
    
    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 |    5 ++++-
 src/lyxfind.cpp           |   11 +++++------
 2 files changed, 9 insertions(+), 7 deletions(-)

diff --git a/src/insets/InsetSpace.cpp b/src/insets/InsetSpace.cpp
index 92d4c43..669239b 100644
--- a/src/insets/InsetSpace.cpp
+++ b/src/insets/InsetSpace.cpp
@@ -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 &&
diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 83ccb23..669742e 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -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
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to