if (at_begin &&
(opt.restr == FindAndReplaceOptions::R_ONLY_MATHS && !cur.inMathed()) )
return 0;
+
docstring docstr = stringifyFromForSearch(opt, cur, len);
- LYXERR(Debug::FIND, "Matching against '" << lyx::to_utf8(docstr) << "'");
string str = normalize(docstr, true);
+ LYXERR(Debug::FIND, "Matching against '" << lyx::to_utf8(docstr) << "'");
LYXERR(Debug::FIND, "After normalization: '" << str << "'");
- if (! use_regexp) {
- LYXERR(Debug::FIND, "Searching in normal mode: par_as_string='" << par_as_string << "', str='" << str << "'");
- LYXERR(Debug::FIND, "Searching in normal mode: lead_as_string='" << lead_as_string << "', par_as_string_nolead='" << par_as_string_nolead << "'");
+
+ if (!use_regexp) {
+ LYXERR(Debug::FIND, "Searching in normal mode: par_as_string='"
+ << par_as_string << "', str='" << str << "'");
+ LYXERR(Debug::FIND, "Searching in normal mode: lead_as_string='"
+ << lead_as_string << "', par_as_string_nolead='"
+ << par_as_string_nolead << "'");
if (at_begin) {
- LYXERR(Debug::FIND, "size=" << par_as_string.size() << ", substr='" << str.substr(0, par_as_string.size()) << "'");
+ LYXERR(Debug::FIND, "size=" << par_as_string.size()
+ << ", substr='" << str.substr(0, par_as_string.size()) << "'");
if (str.substr(0, par_as_string.size()) == par_as_string)
return par_as_string.size();
} else {
}
} else {
LYXERR(Debug::FIND, "Searching in regexp mode: at_begin=" << at_begin);
- // Try all possible regexp matches,
- //until one that verifies the braces match test is found
regex const & p_regexp = at_begin ? regexp : regexp2;
sregex_iterator re_it(str.begin(), str.end(), p_regexp);
match_results<string::const_iterator> const & m = *re_it;
+
// Check braces on the segment that matched the entire regexp expression,
// plus the last subexpression, if a (.*?) was inserted in the constructor.
if (!braces_match(m[0].first, m[0].second, open_braces))
return 0;
+
// Check braces on segments that matched all (.*?) subexpressions,
// except the last "padding" one inserted by lyx.
for (size_t i = 1; i < m.size() - 1; ++i)
if (!braces_match(m[i].first, m[i].second))
return false;
+
// Exclude from the returned match length any length
// due to close wildcards added at end of regexp
if (close_wildcards == 0)