]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfind.cpp
Remove hardcoded values
[lyx.git] / src / lyxfind.cpp
index 22a6b40393ae20e7db80eca4cc37bec3589d5e93..57a25e929f38ee911c0c27e4389a4eb0af680db0 100644 (file)
@@ -951,44 +951,53 @@ int MatchStringAdv::findAux(DocIterator const & cur, int len, bool at_begin) con
        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 (at_begin) {
-                       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 {
-                       size_t pos = str.find(par_as_string_nolead);
-                       if (pos != string::npos)
-                               return par_as_string.size();
-               }
-       } else {
+
+       if (use_regexp) {
                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)
                        return m[0].second - m[0].first;
-               else
-                       return m[m.size() - close_wildcards].first - m[0].first;
+
+               return m[m.size() - close_wildcards].first - m[0].first;
+       }
+
+       // else !use_regexp: but all code paths above return
+       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()) << "'");
+               if (str.substr(0, par_as_string.size()) == par_as_string)
+                       return par_as_string.size();
+       } else {
+               size_t pos = str.find(par_as_string_nolead);
+               if (pos != string::npos)
+                       return par_as_string.size();
        }
        return 0;
 }