[LyX/master] Ignore tracked deletions in simple replace (#11194)
Juergen Spitzmueller
spitz at lyx.org
Tue Jan 12 15:13:25 UTC 2021
commit 1b2a56e2d24f47d5240d96d952b3d2ecb8716126
Author: Juergen Spitzmueller <spitz at lyx.org>
Date: Tue Jan 12 16:13:47 2021 +0100
Ignore tracked deletions in simple replace (#11194)
---
src/BufferView.cpp | 15 +------------
src/lyxfind.cpp | 60 +++++++++++++++++++++------------------------------
src/lyxfind.h | 3 +-
3 files changed, 27 insertions(+), 51 deletions(-)
diff --git a/src/BufferView.cpp b/src/BufferView.cpp
index 6735808..d0ce7e1 100644
--- a/src/BufferView.cpp
+++ b/src/BufferView.cpp
@@ -1653,20 +1653,7 @@ void BufferView::dispatch(FuncRequest const & cmd, DispatchResult & dr)
}
case LFUN_WORD_REPLACE: {
- bool has_deleted = false;
- if (cur.selection()) {
- DocIterator beg = cur.selectionBegin();
- DocIterator end = cur.selectionEnd();
- if (beg.pit() == end.pit()) {
- for (pos_type p = beg.pos() ; p < end.pos() ; ++p) {
- if (!cur.inMathed() && cur.paragraph().isDeleted(p)) {
- has_deleted = true;
- break;
- }
- }
- }
- }
- if (lyxreplace(this, cmd, has_deleted)) {
+ if (lyxreplace(this, cmd)) {
dr.forceBufferUpdate();
dr.screenUpdate(Update::Force | Update::FitCursor);
}
diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp
index 677b382..34a352d 100644
--- a/src/lyxfind.cpp
+++ b/src/lyxfind.cpp
@@ -376,7 +376,7 @@ pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
// This causes a minor bug as undo will restore this selection,
// which the user did not create (#8986).
cur.innerText()->selectWord(cur, WHOLE_WORD);
- searchstr = cur.selectionAsString(false);
+ searchstr = cur.selectionAsString(false, true);
}
// if we still don't have a search string, report the error
@@ -385,7 +385,7 @@ pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
return make_pair(false, 0);
bool have_selection = cur.selection();
- docstring const selected = cur.selectionAsString(false);
+ docstring const selected = cur.selectionAsString(false, true);
bool match =
case_sens
? searchstr == selected
@@ -468,8 +468,7 @@ bool lyxfind(BufferView * bv, FuncRequest const & ev)
}
-bool lyxreplace(BufferView * bv,
- FuncRequest const & ev, bool has_deleted)
+bool lyxreplace(BufferView * bv, FuncRequest const & ev)
{
if (!bv || ev.action() != LFUN_WORD_REPLACE)
return false;
@@ -491,40 +490,31 @@ bool lyxreplace(BufferView * bv,
bool update = false;
- if (!has_deleted) {
- int replace_count = 0;
- if (all) {
- replace_count = replaceAll(bv, search, rplc, casesensitive, matchword);
- update = replace_count > 0;
- } else {
- pair<bool, int> rv =
- replaceOne(bv, search, rplc, casesensitive, matchword, forward, findnext);
- update = rv.first;
- replace_count = rv.second;
- }
+ int replace_count = 0;
+ if (all) {
+ replace_count = replaceAll(bv, search, rplc, casesensitive, matchword);
+ update = replace_count > 0;
+ } else {
+ pair<bool, int> rv =
+ replaceOne(bv, search, rplc, casesensitive, matchword, forward, findnext);
+ update = rv.first;
+ replace_count = rv.second;
+ }
- Buffer const & buf = bv->buffer();
- if (!update) {
- // emit message signal.
- buf.message(_("String not found."));
+ Buffer const & buf = bv->buffer();
+ if (!update) {
+ // emit message signal.
+ buf.message(_("String not found."));
+ } else {
+ if (replace_count == 0) {
+ buf.message(_("String found."));
+ } else if (replace_count == 1) {
+ buf.message(_("String has been replaced."));
} else {
- if (replace_count == 0) {
- buf.message(_("String found."));
- } else if (replace_count == 1) {
- buf.message(_("String has been replaced."));
- } else {
- docstring const str =
- bformat(_("%1$d strings have been replaced."), replace_count);
- buf.message(str);
- }
+ docstring const str =
+ bformat(_("%1$d strings have been replaced."), replace_count);
+ buf.message(str);
}
- } else if (findnext) {
- // if we have deleted characters, we do not replace at all, but
- // rather search for the next occurence
- if (findOne(bv, search, casesensitive, matchword, forward, true, findnext))
- update = true;
- else
- bv->message(_("String not found."));
}
return update;
}
diff --git a/src/lyxfind.h b/src/lyxfind.h
index deb31b2..a5454f1 100644
--- a/src/lyxfind.h
+++ b/src/lyxfind.h
@@ -60,8 +60,7 @@ bool lyxfind(BufferView * bv, FuncRequest const & ev);
* The string is encoded by \c replace2string.
* \return whether we did anything
*/
-bool lyxreplace(BufferView * bv,
- FuncRequest const &, bool has_deleted = false);
+bool lyxreplace(BufferView * bv, FuncRequest const &);
/// find the next change in the buffer
bool findNextChange(BufferView * bv);
More information about the lyx-cvs
mailing list