Author: tommaso
Date: Fri May 27 23:14:36 2011
New Revision: 38863
URL: http://www.lyx.org/trac/changeset/38863
Log:
Fixed bug in matching at borders within *-environments with ignore-format off.
(related to #7596)
Added:
lyx-devel/trunk/development/autotests/findadv-16-in.txt
Modified:
lyx-devel/trunk/src/lyxfind.cpp
Added: lyx-devel/trunk/development/autotests/findadv-16-in.txt
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ lyx-devel/trunk/development/autotests/findadv-16-in.txt Fri May 27
23:14:36 2011 (r38863)
@@ -0,0 +1,24 @@
+# Verify matches in *-environments with ignore-format off
+# (gather environment comes in the *-form after mutate)
+#
+Lang it_IT.utf8
+TestBegin test.lyx -dbg find > lyx-log.txt 2>&1
+KK: \CM\Axmath-mutate gather\[Return]
+KK: x^2 +x^2\C\[Home]
+KK: \Cs
+KK: \CF
+# Uncheck ignore format
+KK: \Az\Ag\Ae
+KK: \CM\Axmath-mutate gather\[Return]
+KK: x^2\[Return]
+TestEnd
+Assert pcregrep -M 'Putting selection at .*idx: 0 par: 0 pos: 0\n.*idx: 0 par:
0 pos: 0\n with len: 1' lyx-log.txt
+
+TestBegin test.lyx -dbg find > lyx-log.txt 2>&1
+KK: \CF
+# Uncheck ignore format
+KK: \Az\Ag\Ae
+KK: \CM\Axmath-mutate gather\[Return]
+KK: x^2\[Return]\[Return]
+TestEnd
+Assert pcregrep -M 'Putting selection at .*idx: 0 par: 0 pos: 0\n.*idx: 0 par:
0 pos: 2\n with len: 1' lyx-log.txt
Modified: lyx-devel/trunk/src/lyxfind.cpp
==============================================================================
--- lyx-devel/trunk/src/lyxfind.cpp Fri May 27 22:49:44 2011 (r38862)
+++ lyx-devel/trunk/src/lyxfind.cpp Fri May 27 23:14:36 2011 (r38863)
@@ -766,11 +766,11 @@
static size_t identifyLeading(string const & s) {
string t = s;
// @TODO Support \item[text]
- while (regex_replace(t, t,
"\\\\(emph|textbf|subsubsection|subsection|section|subparagraph|paragraph|part)\\{",
"")
+ while (regex_replace(t, t,
"\\\\(emph|textbf|subsubsection|subsection|section|subparagraph|paragraph|part)\\*?\\{",
"")
|| regex_replace(t, t, "^\\$", "")
|| regex_replace(t, t, "^\\\\\\[ ", "")
|| regex_replace(t, t, "^\\\\item ", "")
- || regex_replace(t, t, "^\\\\begin\\{[a-zA-Z_]*\\} ", ""))
+ || regex_replace(t, t, "^\\\\begin\\{[a-zA-Z_]*\\*?\\} ", ""))
LYXERR(Debug::FIND, " after removing leading $, \\[ , \\emph{,
\\textbf{, etc.: '" << t << "'");
return s.find(t);
}
@@ -795,7 +795,7 @@
// @todo need to account for open square braces as well
?
if (regex_replace(par_as_string, par_as_string,
"(.*[^\\\\]) \\\\\\]\\'", "$1"))
continue;
- if (regex_replace(par_as_string, par_as_string,
"(.*[^\\\\]) \\\\end\\{[a-zA-Z_]*\\}\\'", "$1"))
+ if (regex_replace(par_as_string, par_as_string,
"(.*[^\\\\]) \\\\end\\{[a-zA-Z_]*\\*?\\}\\'", "$1"))
continue;
if (regex_replace(par_as_string, par_as_string,
"(.*[^\\\\])\\}\\'", "$1")) {
++open_braces;
@@ -824,7 +824,7 @@
|| regex_replace(par_as_string, par_as_string,
"(.*[^\\\\])( \\\\\\\\\\\\\\])\\'", "$1(.*?)$2")
// Insert .* before trailing '\\end\{...}'
('\end{...}' has been escaped by escape_for_regex)
|| regex_replace(par_as_string, par_as_string,
- "(.*[^\\\\])(
\\\\\\\\end\\\\\\{[a-zA-Z_]*\\\\\\})\\'", "$1(.*?)$2")
+ "(.*[^\\\\])(
\\\\\\\\end\\\\\\{[a-zA-Z_]*)(\\\\\\*)?(\\\\\\})\\'", "$1(.*?)$2$3$4")
// Insert .* before trailing '\}' ('}' has been
escaped by escape_for_regex)
|| regex_replace(par_as_string, par_as_string,
"(.*[^\\\\])(\\\\\\})\\'", "$1(.*?)$2")
) {