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
This commit is contained in:
Kornel Benko 2022-04-06 19:00:20 +02:00
parent 58f70b9da1
commit aa66663364
2 changed files with 21 additions and 5 deletions

View File

@ -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;
}
}

View File

@ -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;
}