mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-26 11:16:55 +00:00
Find: Advanced + Quick:
Expand list of quotes to include also '» « › ‹' Enable quick find to search for quotes too
This commit is contained in:
parent
aa66663364
commit
1f7d90d636
@ -4560,6 +4560,23 @@ void Paragraph::changeCase(BufferParams const & bparams, pos_type pos,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static char_type matchquote(char_type in)
|
||||||
|
{
|
||||||
|
switch (in) {
|
||||||
|
case 0x2018:
|
||||||
|
case 0x201a:
|
||||||
|
case 0x203a:
|
||||||
|
case 0x2039:
|
||||||
|
return '\''; // ‘ ‚ › ‹
|
||||||
|
case 0x00bb:
|
||||||
|
case 0x00ab:
|
||||||
|
case 0x201e:
|
||||||
|
case 0x201c:
|
||||||
|
return '"'; // » « „ “
|
||||||
|
default:
|
||||||
|
return in;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
int Paragraph::find(docstring const & str, bool cs, bool mw,
|
int Paragraph::find(docstring const & str, bool cs, bool mw,
|
||||||
pos_type start_pos, bool del) const
|
pos_type start_pos, bool del) const
|
||||||
@ -4590,8 +4607,9 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
|
|||||||
if (!insetstring.empty()) {
|
if (!insetstring.empty()) {
|
||||||
int const insetstringsize = insetstring.length();
|
int const insetstringsize = insetstring.length();
|
||||||
for (int j = 0; j < insetstringsize && pos < parsize; ++i, ++j) {
|
for (int j = 0; j < insetstringsize && pos < parsize; ++i, ++j) {
|
||||||
if ((cs && str[i] != insetstring[j])
|
char_type ij = matchquote(insetstring[j]);
|
||||||
|| (!cs && uppercase(str[i]) != uppercase(insetstring[j]))) {
|
if ((cs && str[i] != ij)
|
||||||
|
|| (!cs && uppercase(str[i]) != uppercase(ij))) {
|
||||||
nonmatch = true;
|
nonmatch = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -4601,9 +4619,10 @@ int Paragraph::find(docstring const & str, bool cs, bool mw,
|
|||||||
}
|
}
|
||||||
if (nonmatch || i == strsize)
|
if (nonmatch || i == strsize)
|
||||||
break;
|
break;
|
||||||
if (cs && str[i] != d->text_[pos])
|
char_type dp = matchquote(d->text_[pos]);
|
||||||
|
if (cs && str[i] != dp)
|
||||||
break;
|
break;
|
||||||
if (!cs && uppercase(str[i]) != uppercase(d->text_[pos]))
|
if (!cs && uppercase(str[i]) != uppercase(dp))
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -913,10 +913,10 @@ string correctRegex(string t, bool withformat)
|
|||||||
else if (lastpos < t.length())
|
else if (lastpos < t.length())
|
||||||
s += t.substr(lastpos, t.length() - lastpos);
|
s += t.substr(lastpos, t.length() - lastpos);
|
||||||
// Handle quotes in regex
|
// Handle quotes in regex
|
||||||
// substitute all '„', '“' with '"'
|
// substitute all '„', '“', '»', '«' with '"'
|
||||||
// and all '‚', '‘' with "\'"
|
// and all '‚', '‘', '›', '‹' with "\'"
|
||||||
static std::regex plainquotes { R"(„|“)" };
|
static std::regex plainquotes { R"(„|“|»|«)" };
|
||||||
static std::regex innerquotes { R"(‚|‘)" };
|
static std::regex innerquotes { R"(‚|‘|›|‹)" };
|
||||||
t = std::regex_replace(s, plainquotes, R"(")");
|
t = std::regex_replace(s, plainquotes, R"(")");
|
||||||
s = std::regex_replace(t, innerquotes, R"(')");
|
s = std::regex_replace(t, innerquotes, R"(')");
|
||||||
//LYXERR0("correctRegex output '" << s << "'");
|
//LYXERR0("correctRegex output '" << s << "'");
|
||||||
|
Loading…
Reference in New Issue
Block a user