From aa66663364c44047bd97c919a651b8adcaf7617a Mon Sep 17 00:00:00 2001 From: Kornel Benko Date: Wed, 6 Apr 2022 19:00:20 +0200 Subject: [PATCH] FindAdv: Amend 58f70b9d Consider plain-quotes, inner-quotes 1 independent if in regex or text 2 independent of quote style 3 independent of using dynamic marks --- src/insets/InsetQuotes.cpp | 17 +++++++++++++---- src/lyxfind.cpp | 9 ++++++++- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/insets/InsetQuotes.cpp b/src/insets/InsetQuotes.cpp index 3dfed9e419..67ad7672dd 100644 --- a/src/insets/InsetQuotes.cpp +++ b/src/insets/InsetQuotes.cpp @@ -942,11 +942,20 @@ void InsetQuotes::latex(otexstream & os, OutputParams const & runparams) const int InsetQuotes::plaintext(odocstringstream & os, - OutputParams const &, size_t) const + OutputParams const & op, size_t) const { - docstring const str = displayString(); - os << str; - return str.size(); + if (op.for_searchAdv == OutputParams::NoSearch) { + docstring const str = displayString(); + os << str; + return str.size(); + } + else { + if (level_ == QuoteLevel::Primary) + os << from_ascii("\""); + else + os << from_ascii("'"); + return 1; + } } diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp index 64da365ebb..0f02a39916 100644 --- a/src/lyxfind.cpp +++ b/src/lyxfind.cpp @@ -909,9 +909,16 @@ string correctRegex(string t, bool withformat) lastpos = sub.position(2) + sub.length(2); } if (lastpos == 0) - return t; + s = t; else if (lastpos < t.length()) s += t.substr(lastpos, t.length() - lastpos); + // Handle quotes in regex + // substitute all '„', '“' with '"' + // and all '‚', '‘' with "\'" + static std::regex plainquotes { R"(„|“)" }; + static std::regex innerquotes { R"(‚|‘)" }; + t = std::regex_replace(s, plainquotes, R"(")"); + s = std::regex_replace(t, innerquotes, R"(')"); //LYXERR0("correctRegex output '" << s << "'"); return s; } -- 2.39.5