]> git.lyx.org Git - lyx.git/blobdiff - src/lyxfind.cpp
Move bind file format tag to LyXAction.cpp, and rename it.
[lyx.git] / src / lyxfind.cpp
index d65ca1571aab7b124ddf004822be21efd92a5b39..73b9df371885cb7a63c8e6f7d56f1bd62dc7befc 100644 (file)
@@ -270,6 +270,13 @@ pair<bool, int> replaceOne(BufferView * bv, docstring searchstr,
                return pair<bool, int>(false, 0);
 
        cap::replaceSelectionWithString(cur, replacestr, forward);
+       if (forward) {
+               cur.pos() += replacestr.length();
+               LASSERT(cur.pos() <= cur.lastpos(), /* */);
+       } else {
+               cur.pos() -= replacestr.length();
+               LASSERT(cur.pos() >= 0, /* */);
+       }
        findOne(bv, searchstr, case_sens, whole, forward, false);
 
        return pair<bool, int>(true, 1);
@@ -1189,9 +1196,6 @@ static void findAdvReplace(BufferView * bv, FindAndReplaceOptions const & opt, M
        Buffer repl_buffer("", false);
        repl_buffer.setUnnamed(true);
        LASSERT(repl_buffer.readString(lyx), /**/);
-       repl_buffer.changeLanguage(
-               repl_buffer.language(),
-               cur.getFont().language());
        if (opt.keep_case && sel_len >= 2) {
                if (cur.inTexted()) {
                        if (firstUppercase(cur))
@@ -1202,10 +1206,15 @@ static void findAdvReplace(BufferView * bv, FindAndReplaceOptions const & opt, M
        }
        cap::cutSelection(cur, false, false);
        if (!cur.inMathed()) {
+               repl_buffer.changeLanguage(
+                       repl_buffer.language(),
+                       cur.getFont().language());
                LYXERR(Debug::FIND, "Replacing by pasteParagraphList()ing repl_buffer");
+               LYXERR(Debug::FIND, "Before pasteParagraphList() cur=" << cur << endl);
                cap::pasteParagraphList(cur, repl_buffer.paragraphs(),
                                        repl_buffer.params().documentClassPtr(),
                                        bv->buffer().errorList("Paste"));
+               LYXERR(Debug::FIND, "After pasteParagraphList() cur=" << cur << endl);
        } else {
                odocstringstream ods;
                OutputParams runparams(&repl_buffer.params().encoding());
@@ -1226,6 +1235,7 @@ static void findAdvReplace(BufferView * bv, FindAndReplaceOptions const & opt, M
                cur.niceInsert(repl_latex);
        }
        cur.pos() -= repl_buffer.paragraphs().begin()->size();
+       LYXERR(Debug::FIND, "Putting selection at cur=" << cur << " with len: " << repl_buffer.paragraphs().begin()->size());
        bv->putSelectionAt(DocIterator(cur), repl_buffer.paragraphs().begin()->size(), !opt.forward);
        bv->processUpdateFlags(Update::Force);
 }
@@ -1235,7 +1245,7 @@ static void findAdvReplace(BufferView * bv, FindAndReplaceOptions const & opt, M
 bool findAdv(BufferView * bv, FindAndReplaceOptions const & opt)
 {
        DocIterator cur;
-       int match_len;
+       int match_len = 0;
 
        if (opt.search.empty()) {
                bv->message(_("Search text is empty!"));