#7564 make the move forward to next match after text replacement optional and suppress it when replace a word by selected suggestion

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38781 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Stephan Witt 2011-05-18 20:33:57 +00:00
parent 4e922727e6
commit cec318896c
3 changed files with 13 additions and 9 deletions

View File

@ -789,7 +789,7 @@ void MenuDefinition::expandSpellingSuggestions(BufferView const * bv)
MenuItem w(MenuItem::Command, toqstr(suggestion), MenuItem w(MenuItem::Command, toqstr(suggestion),
FuncRequest(LFUN_WORD_REPLACE, FuncRequest(LFUN_WORD_REPLACE,
replace2string(suggestion,selection, replace2string(suggestion,selection,
true, true, false, false))); true, true, false, false, false)));
if (i < m) if (i < m)
add(w); add(w);
else else

View File

@ -229,7 +229,7 @@ int replaceAll(BufferView * bv,
// whether anything at all was done. // whether anything at all was done.
pair<bool, int> replaceOne(BufferView * bv, docstring searchstr, pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
docstring const & replacestr, bool case_sens, docstring const & replacestr, bool case_sens,
bool whole, bool forward) bool whole, bool forward, bool findnext)
{ {
Cursor & cur = bv->cursor(); Cursor & cur = bv->cursor();
if (!cur.selection()) { if (!cur.selection()) {
@ -278,7 +278,8 @@ pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
cur.pos() -= replacestr.length(); cur.pos() -= replacestr.length();
LASSERT(cur.pos() >= 0, /* */); LASSERT(cur.pos() >= 0, /* */);
} }
findOne(bv, searchstr, case_sens, whole, forward, false); if (findnext)
findOne(bv, searchstr, case_sens, whole, forward, false);
return pair<bool, int>(true, 1); return pair<bool, int>(true, 1);
} }
@ -300,7 +301,7 @@ docstring const find2string(docstring const & search,
docstring const replace2string(docstring const & replace, docstring const replace2string(docstring const & replace,
docstring const & search, bool casesensitive, bool matchword, docstring const & search, bool casesensitive, bool matchword,
bool all, bool forward) bool all, bool forward, bool findnext)
{ {
odocstringstream ss; odocstringstream ss;
ss << replace << '\n' ss << replace << '\n'
@ -308,7 +309,8 @@ docstring const replace2string(docstring const & replace,
<< int(casesensitive) << ' ' << int(casesensitive) << ' '
<< int(matchword) << ' ' << int(matchword) << ' '
<< int(all) << ' ' << int(all) << ' '
<< int(forward); << int(forward) << ' '
<< int(findnext);
return ss.str(); return ss.str();
} }
@ -343,7 +345,7 @@ bool lyxreplace(BufferView * bv,
// data is of the form // data is of the form
// "<search> // "<search>
// <replace> // <replace>
// <casesensitive> <matchword> <all> <forward>" // <casesensitive> <matchword> <all> <forward> <findnext>"
docstring search; docstring search;
docstring rplc; docstring rplc;
docstring howto = split(ev.argument(), rplc, '\n'); docstring howto = split(ev.argument(), rplc, '\n');
@ -353,6 +355,7 @@ bool lyxreplace(BufferView * bv,
bool matchword = parse_bool(howto); bool matchword = parse_bool(howto);
bool all = parse_bool(howto); bool all = parse_bool(howto);
bool forward = parse_bool(howto); bool forward = parse_bool(howto);
bool findnext = parse_bool(howto);
int replace_count = 0; int replace_count = 0;
bool update = false; bool update = false;
@ -363,7 +366,7 @@ bool lyxreplace(BufferView * bv,
update = replace_count > 0; update = replace_count > 0;
} else { } else {
pair<bool, int> rv = pair<bool, int> rv =
replaceOne(bv, search, rplc, casesensitive, matchword, forward); replaceOne(bv, search, rplc, casesensitive, matchword, forward, findnext);
update = rv.first; update = rv.first;
replace_count = rv.second; replace_count = rv.second;
} }
@ -383,7 +386,7 @@ bool lyxreplace(BufferView * bv,
buf.message(str); buf.message(str);
} }
} }
} else { } else if (findnext) {
// if we have deleted characters, we do not replace at all, but // if we have deleted characters, we do not replace at all, but
// rather search for the next occurence // rather search for the next occurence
if (findOne(bv, search, casesensitive, matchword, forward)) if (findOne(bv, search, casesensitive, matchword, forward))

View File

@ -48,7 +48,8 @@ docstring const replace2string(docstring const & replace,
bool casesensitive, bool casesensitive,
bool matchword, bool matchword,
bool all, bool all,
bool forward); bool forward,
bool findnext = true);
/** Parse the string encoding of the find request that is found in /** Parse the string encoding of the find request that is found in
* \c ev.argument and act on it. * \c ev.argument and act on it.