From 4bb427a2443d64bd01aad66ebdc0b3f802546bae Mon Sep 17 00:00:00 2001 From: Kornel Benko Date: Sun, 8 May 2022 14:30:45 +0200 Subject: [PATCH] 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 92d4c43609..669239b55f 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 83ccb23824..669742e5e2 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 -- 2.39.2