]> git.lyx.org Git - features.git/commitdiff
#7564 make the move forward to next match after text replacement optional and suppres...
authorStephan Witt <switt@lyx.org>
Wed, 18 May 2011 20:33:57 +0000 (20:33 +0000)
committerStephan Witt <switt@lyx.org>
Wed, 18 May 2011 20:33:57 +0000 (20:33 +0000)
git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@38781 a592a061-630c-0410-9148-cb99ea01b6c8

src/frontends/qt4/Menus.cpp
src/lyxfind.cpp
src/lyxfind.h

index c59c68999c1254af2ffdf3162ad26636586fa420..80e60228f353dd7d450251ba83421271f634b65a 100644 (file)
@@ -789,7 +789,7 @@ void MenuDefinition::expandSpellingSuggestions(BufferView const * bv)
                                        MenuItem w(MenuItem::Command, toqstr(suggestion),
                                                FuncRequest(LFUN_WORD_REPLACE, 
                                                        replace2string(suggestion,selection,
-                                                               true, true, false, false)));
+                                                               true, true, false, false, false)));
                                        if (i < m)
                                                add(w);
                                        else
index d5f01795a9c22539b74e9e9cb4dbed356aec15ec..9e86aea309c589ad84d039a4ca7b9e86df19f32d 100644 (file)
@@ -229,7 +229,7 @@ int replaceAll(BufferView * bv,
 // whether anything at all was done.
 pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
            docstring const & replacestr, bool case_sens, 
-                       bool whole, bool forward)
+                       bool whole, bool forward, bool findnext)
 {
        Cursor & cur = bv->cursor();
        if (!cur.selection()) {
@@ -278,7 +278,8 @@ pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
                cur.pos() -= replacestr.length();
                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);
 }
@@ -300,7 +301,7 @@ docstring const find2string(docstring const & search,
 
 docstring const replace2string(docstring const & replace,
        docstring const & search, bool casesensitive, bool matchword,
-       bool all, bool forward)
+       bool all, bool forward, bool findnext)
 {
        odocstringstream ss;
        ss << replace << '\n'
@@ -308,7 +309,8 @@ docstring const replace2string(docstring const & replace,
           << int(casesensitive) << ' '
           << int(matchword) << ' '
           << int(all) << ' '
-          << int(forward);
+          << int(forward) << ' '
+          << int(findnext);
        return ss.str();
 }
 
@@ -343,7 +345,7 @@ bool lyxreplace(BufferView * bv,
        // data is of the form
        // "<search>
        //  <replace>
-       //  <casesensitive> <matchword> <all> <forward>"
+       //  <casesensitive> <matchword> <all> <forward> <findnext>"
        docstring search;
        docstring rplc;
        docstring howto = split(ev.argument(), rplc, '\n');
@@ -353,6 +355,7 @@ bool lyxreplace(BufferView * bv,
        bool matchword     = parse_bool(howto);
        bool all           = parse_bool(howto);
        bool forward       = parse_bool(howto);
+       bool findnext      = parse_bool(howto);
 
        int replace_count = 0;
        bool update = false;
@@ -363,7 +366,7 @@ bool lyxreplace(BufferView * bv,
                        update = replace_count > 0;
                } else {
                        pair<bool, int> rv = 
-                               replaceOne(bv, search, rplc, casesensitive, matchword, forward);
+                               replaceOne(bv, search, rplc, casesensitive, matchword, forward, findnext);
                        update = rv.first;
                        replace_count = rv.second;
                }
@@ -383,7 +386,7 @@ bool lyxreplace(BufferView * bv,
                                buf.message(str);
                        }
                }
-       } else {
+       } 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))
index da632bf1a3df9e428baf6d185160fe941273f1bb..589a5d01d5870177a2e9a42cdfe477d42f506192 100644 (file)
@@ -48,7 +48,8 @@ docstring const replace2string(docstring const & replace,
                                 bool casesensitive,
                                 bool matchword,
                                 bool all,
-                                bool forward);
+                                bool forward,
+                                bool findnext = true);
 
 /** Parse the string encoding of the find request that is found in
  *  \c ev.argument and act on it.