commit e6d998d33cea38fc917f7e604d8b6d6071070a34
Author: Kornel Benko <[email protected]>
Date: Sun Mar 20 11:33:12 2022 +0100
FindAdv: If possible use unicode instead of math command when searching
Wrong behaviour before this commit:
Open new lyx-file
insert
unicode-insert 0x025c 0x1d08
Open adv-find dialog
search for unicode 0x025c OK
search for unicode 0x1d08 OK
search with regex for unicode 0x025c OK
search with regex for unicode 0x1d08 ==> NOT OK (because we are searching
for \textrevepsilon
and this was mapped to 0x025c
---
src/lyxfind.cpp | 3 ++-
src/mathed/InsetMathHull.cpp | 11 +++++++++--
src/mathed/InsetMathNest.cpp | 10 ++++++++--
src/mathed/MathExtern.cpp | 4 ++++
src/mathed/MathStream.h | 3 ++-
5 files changed, 25 insertions(+), 6 deletions(-)
diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index c187e10..98c254d 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -917,7 +917,7 @@ string escape_for_regex(string s, bool withformat)
if (lastpos == s.size())
break;
}
- size_t end_pos = s.find("\\endregexp{}}", regex_pos + 8);
+ size_t end_pos = s.find("\\endregexp{", regex_pos + 8);
result += correctRegex(s.substr(regex_pos + 8, end_pos
-(regex_pos + 8)), withformat);
lastpos = end_pos + 13;
}
@@ -3519,6 +3519,7 @@ MatchStringAdv::MatchStringAdv(lyx::Buffer & buf,
FindAndReplaceOptions & opt)
string lead_as_regexp;
if (lead_size > 0) {
lead_as_regexp = string2regex(par_as_string.substr(0,
lead_size));
+ (void)regex_replace(par_as_string_nolead,
par_as_string_nolead, "\\$$", "");
(void)regex_replace(par_as_string_nolead,
par_as_string_nolead, "}$", "");
par_as_string = par_as_string_nolead;
LYXERR(Debug::FIND, "lead_as_regexp is '" <<
lead_as_regexp << "'");
diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp
index 8b63c73..805f84c 100644
--- a/src/mathed/InsetMathHull.cpp
+++ b/src/mathed/InsetMathHull.cpp
@@ -2357,12 +2357,19 @@ int InsetMathHull::plaintext(odocstringstream & os,
odocstringstream oss;
otexrowstream ots(oss);
Encoding const * const enc = encodings.fromLyXName("utf8");
- TeXMathStream wi(ots, false, true, TeXMathStream::wsDefault, enc);
+ TeXMathStream::OutputType ot;
+ if (op.for_searchAdv == OutputParams::NoSearch)
+ ot = TeXMathStream::wsDefault;
+ else
+ ot = TeXMathStream::wsSearchAdv;
// Fix Bug #6139
- if (type_ == hullRegexp)
+ if (type_ == hullRegexp) {
+ TeXMathStream wi(ots, false, true, ot, enc);
write(wi);
+ }
else {
+ TeXMathStream wi(ots, false, true, ot, enc);
for (row_type r = 0; r < nrows(); ++r) {
for (col_type c = 0; c < ncols(); ++c)
wi << (c == 0 ? "" : "\t") << cell(index(r, c));
diff --git a/src/mathed/InsetMathNest.cpp b/src/mathed/InsetMathNest.cpp
index 7241e0b..4f21924 100644
--- a/src/mathed/InsetMathNest.cpp
+++ b/src/mathed/InsetMathNest.cpp
@@ -358,8 +358,14 @@ void InsetMathNest::normalize(NormalStream & os) const
void InsetMathNest::latex(otexstream & os, OutputParams const & runparams)
const
{
- TeXMathStream wi(os, runparams.moving_arg, true,
- runparams.dryrun ? TeXMathStream::wsDryrun :
TeXMathStream::wsDefault,
+ TeXMathStream::OutputType ot;
+ if (runparams.for_searchAdv != OutputParams::NoSearch)
+ ot = TeXMathStream::wsSearchAdv;
+ else if (runparams.dryrun)
+ ot = TeXMathStream::wsDryrun;
+ else
+ ot = TeXMathStream::wsDefault;
+ TeXMathStream wi(os, runparams.moving_arg, true, ot,
runparams.encoding);
wi.strikeoutMath(runparams.inDeletedInset);
if (runparams.inulemcmd) {
diff --git a/src/mathed/MathExtern.cpp b/src/mathed/MathExtern.cpp
index 5c182c7..527543a 100644
--- a/src/mathed/MathExtern.cpp
+++ b/src/mathed/MathExtern.cpp
@@ -1425,6 +1425,10 @@ void writeString(docstring const & s, TeXMathStream & os)
os << (os.asciiOnly() ? escape(s) : s);
return;
}
+ else if (os.output() == TeXMathStream::wsSearchAdv) {
+ os << s;
+ return;
+ }
if (os.lockedMode()) {
bool space;
diff --git a/src/mathed/MathStream.h b/src/mathed/MathStream.h
index d6a35c5..6d0399e 100644
--- a/src/mathed/MathStream.h
+++ b/src/mathed/MathStream.h
@@ -38,7 +38,8 @@ public:
enum OutputType {
wsDefault,
wsDryrun,
- wsPreview
+ wsPreview,
+ wsSearchAdv
};
///
enum UlemCmdType {
--
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs