X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxfind.cpp;h=398f11072bf92e28893c5858e31c5ea149c80c4b;hb=bbe09eada1de6edb7eb45213eaac4b4b09495f6e;hp=c743fb81a1058780e00dba185f6a50bc7af1a862;hpb=4f750261761906492e97155c47279c71bdbc0d62;p=lyx.git diff --git a/src/lyxfind.cpp b/src/lyxfind.cpp index c743fb81a1..398f11072b 100644 --- a/src/lyxfind.cpp +++ b/src/lyxfind.cpp @@ -303,7 +303,7 @@ pair replaceOne(BufferView * bv, docstring searchstr, return make_pair(true, 1); } -} // namespace anon +} // namespace docstring const find2string(docstring const & search, @@ -517,7 +517,7 @@ bool findChange(BufferView * bv, bool forward) return selectChange(cur, forward); } -} +} // namespace bool findNextChange(BufferView * bv) { @@ -978,13 +978,13 @@ int MatchStringAdv::findAux(DocIterator const & cur, int len, bool at_begin) con // plus the last subexpression, if a (.*?) was inserted in the constructor. if (!braces_match(m[0].first, m[0].second, open_braces)) return 0; - + // Check braces on segments that matched all (.*?) subexpressions, // except the last "padding" one inserted by lyx. for (size_t i = 1; i < m.size() - 1; ++i) if (!braces_match(m[i].first, m[i].second)) return false; - + // Exclude from the returned match length any length // due to close wildcards added at end of regexp if (close_wildcards == 0) @@ -1169,8 +1169,8 @@ docstring latexifyFromCursor(DocIterator const & cur, int len) // Retrieve the math environment type, and add '$' or '$]' // or others (\end{equation}) accordingly for (int s = cur.depth() - 1; s >= 0; --s) { - CursorSlice const & cs = cur[s]; - InsetMath * inset = cs.asInsetMath(); + CursorSlice const & cs2 = cur[s]; + InsetMath * inset = cs2.asInsetMath(); if (inset && inset->asHullInset()) { WriteStream ws(os); inset->asHullInset()->footer_write(ws); @@ -1239,9 +1239,9 @@ int findForwardAdv(DocIterator & cur, MatchStringAdv & match) if (match_len) { for (; !theApp()->longOperationCancelled() && cur; cur.forwardPos()) { LYXERR(Debug::FIND, "Advancing cur: " << cur); - int match_len = match(cur); - LYXERR(Debug::FIND, "match_len: " << match_len); - if (match_len) { + int match_len2 = match(cur); + LYXERR(Debug::FIND, "match_len: " << match_len2); + if (match_len2) { // Sometimes in finalize we understand it wasn't a match // and we need to continue the outest loop int len = findAdvFinalize(cur, match); @@ -1338,7 +1338,7 @@ int findBackwardsAdv(DocIterator & cur, MatchStringAdv & match) } -} // anonym namespace +} // namespace docstring stringifyFromForSearch(FindAndReplaceOptions const & opt, @@ -1419,13 +1419,15 @@ static void changeFirstCase(Buffer & buffer, TextCase first_case, TextCase other pit->changeCase(buffer.params(), pos_type(1), right, others_case); } -} // anon namespace +} // namespace /// static void findAdvReplace(BufferView * bv, FindAndReplaceOptions const & opt, MatchStringAdv & matchAdv) { Cursor & cur = bv->cursor(); - if (opt.repl_buf_name == docstring()) + if (opt.repl_buf_name == docstring() + || theBufferList().getBuffer(FileName(to_utf8(opt.repl_buf_name)), true) == 0 + || theBufferList().getBuffer(FileName(to_utf8(opt.find_buf_name)), true) == 0) return; DocIterator sel_beg = cur.selectionBegin(); @@ -1512,6 +1514,11 @@ bool findAdv(BufferView * bv, FindAndReplaceOptions const & opt) DocIterator cur; int match_len = 0; + // e.g., when invoking word-findadv from mini-buffer wither with + // wrong options syntax or before ever opening advanced F&R pane + if (theBufferList().getBuffer(FileName(to_utf8(opt.find_buf_name)), true) == 0) + return false; + try { MatchStringAdv matchAdv(bv->buffer(), opt); int length = bv->cursor().selectionEnd().pos() - bv->cursor().selectionBegin().pos(); @@ -1605,4 +1612,4 @@ istringstream & operator>>(istringstream & is, FindAndReplaceOptions & opt) return is; } -} // lyx namespace +} // namespace lyx