]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfind.cpp
* src/frontends/qt4/ui/ParagraphUi.ui: just tiny cosmetics (make dialog more compact)
[lyx.git] / src / lyxfind.cpp
index f24ce695c1fd0c8b9e86c6ee6a65f038a472304e..aa28e0d83670bbb47654a4d2bb8a6915655a4f8e 100644 (file)
@@ -298,7 +298,7 @@ void find(BufferView * bv, FuncRequest const & ev)
 }
 
 
-void replace(BufferView * bv, FuncRequest const & ev)
+void replace(BufferView * bv, FuncRequest const & ev, bool has_deleted)
 {
        if (!bv || ev.action != LFUN_WORD_REPLACE)
                return;
@@ -319,23 +319,34 @@ void replace(BufferView * bv, FuncRequest const & ev)
 
        Buffer * buf = bv->buffer();
 
-       int const replace_count = all
-               ? replaceAll(bv, search, rplc, casesensitive, matchword)
-               : replace(bv, search, rplc, casesensitive, matchword, forward);
-
-       if (replace_count == 0) {
-               // emit message signal.
-               buf->message(_("String not found!"));
-       } else {
-               if (replace_count == 1) {
+       if (!has_deleted) {
+               int const replace_count = all
+                       ? replaceAll(bv, search, rplc, casesensitive, matchword)
+                       : replace(bv, search, rplc, casesensitive, matchword, forward);
+       
+               if (replace_count == 0) {
                        // emit message signal.
-                       buf->message(_("String has been replaced."));
+                       buf->message(_("String not found!"));
                } else {
-                       docstring str = convert<docstring>(replace_count);
-                       str += _(" strings have been replaced.");
-                       // emit message signal.
-                       buf->message(str);
+                       if (replace_count == 1) {
+                               // emit message signal.
+                               buf->message(_("String has been replaced."));
+                       } else {
+                               docstring str = convert<docstring>(replace_count);
+                               str += _(" strings have been replaced.");
+                               // emit message signal.
+                               buf->message(str);
+                       }
                }
+       } else {
+               // if we have deleted characters, we do not replace at all, but
+               // rather search for the next occurence
+               bool const found = find(bv, search,
+                                       casesensitive, matchword, forward);
+
+               if (!found)
+                       // emit message signal.
+                       bv->message(_("String not found!"));
        }
 }