--- /dev/null
+# Avoiding recursive replacements when replaced text matches search pattern
+# Addresses #7675.
+#
+Lang it_IT.utf8
+
+TestBegin test.lyx -dbg find > lyx-log.txt 2>&1
+KK: a a a\C\[Home]
+KK: \CF
+KK: a\[Tab]
+KK: \Cm\\frac 1\[Down]a\[Return]\[Return]\[Return]
+KK: \Cs
+KK: \Ax
+KK: buffer-export latex\[Return]
+TestEnd
+Assert pcregrep -M '^\$\\frac\{1\}\{a\}\$ \$\\frac\{1\}\{a\}\$ a' test.tex
+
+TestBegin test2.lyx -dbg find > lyx-log.txt 2>&1
+KK: \Cma \Cma \Cma \C\[Home]
+KK: \CF
+KK: a\[Tab]
+KK: \Cm\\frac 1\[Down]a\[Return]\[Return]\[Return]
+KK: \Cs
+KK: \Ax
+KK: buffer-export latex\[Return]
+TestEnd
+Assert pcregrep -M '^\$\\frac\{1\}\{a\}\$ \$\\frac\{1\}\{a\}\$ \$a\$' test2.tex
regex_replace(to_utf8(repl_latex), s, "\\$(.*)\\$", "$1");
regex_replace(s, s, "\\\\\\[(.*)\\\\\\]", "$1");
repl_latex = from_utf8(s);
- LYXERR(Debug::FIND, "Replacing by niceInsert()ing latex: '" << repl_latex << "'");
- sel_len = cur.niceInsert(repl_latex);
+ LYXERR(Debug::FIND, "Replacing by insert()ing latex: '" << repl_latex << "' cur=" << cur << " with depth=" << cur.depth());
+ MathData ar(cur.buffer());
+ asArray(repl_latex, ar, Parse::NORMAL);
+ cur.insert(ar);
+ sel_len = ar.size();
+ LYXERR(Debug::FIND, "After insert() cur=" << cur << " with depth: " << cur.depth() << " and len: " << sel_len);
}
if (cur.pos() >= sel_len)
cur.pos() -= sel_len;
else
cur.pos() = 0;
- LYXERR(Debug::FIND, "Putting selection at cur=" << cur << " with len: " << sel_len);
+ LYXERR(Debug::FIND, "After pos adj cur=" << cur << " with depth: " << cur.depth() << " and len: " << sel_len);
bv->putSelectionAt(DocIterator(cur), sel_len, !opt.forward);
bv->processUpdateFlags(Update::Force);
bv->buffer().updatePreviews();