#include "lyxfind.h"
#include "Buffer.h"
+#include "BufferList.h"
#include "buffer_funcs.h"
#include "BufferParams.h"
#include "BufferView.h"
LYXERR(Debug::FIND, "p_old=" << p_old << ", p_master=" << p_master);
} while (p_master != p_old);
LASSERT(p_master != NULL, /**/);
- std::vector<Buffer *> v_children;
+ vector<Buffer *> v_children;
/* Root master added as first buffer in the vector */
v_children.push_back(p_master);
p_master->getChildren(v_children, true);
LYXERR(Debug::FIND, "v_children.size()=" << v_children.size());
- std::vector<Buffer *>::const_iterator it = std::find(v_children.begin(), v_children.end(), p_buf);
+ vector<Buffer *>::const_iterator it = find(v_children.begin(), v_children.end(), p_buf);
LASSERT(it != v_children.end(), /**/)
++it;
if (it == v_children.end()) {
LYXERR(Debug::FIND, "p_old=" << p_old << ", p_master=" << p_master);
} while (p_master != p_old);
LASSERT(p_master != NULL, /**/);
- std::vector<Buffer *> v_children;
+ vector<Buffer *> v_children;
/* Root master added as first buffer in the vector */
v_children.push_back(p_master);
p_master->getChildren(v_children, true);
LYXERR(Debug::FIND, "v_children.size()=" << v_children.size());
- std::vector<Buffer *>::const_iterator it = std::find(v_children.begin(), v_children.end(), p_buf);
+ vector<Buffer *>::const_iterator it = find(v_children.begin(), v_children.end(), p_buf);
LASSERT(it != v_children.end(), /**/)
if (it == v_children.begin()) {
it = v_children.end();
}
+/** Switch p_buf to point to next open buffer.
+ **
+ ** Return true if restarted from first open buffer.
+ **/
+bool next_open_buffer(Buffer * & p_buf) {
+ p_buf = theBufferList().next(p_buf);
+ return p_buf == *theBufferList().begin();
+}
+
+
+/** Switch p_buf to point to previous open buffer.
+ **
+ ** Return true if restarted from last open buffer.
+ **/
+bool prev_open_buffer(Buffer * & p_buf) {
+ p_buf = theBufferList().previous(p_buf);
+ return p_buf == *(theBufferList().end() - 1);
+}
+
+
/// Finds forward
int findForwardAdv(DocIterator & cur, MatchStringAdv & match)
{
}
// No match has been found in current buffer
bool prompt = false;
- if (match.opt.scope == FindAndReplaceOptions::S_BUFFER) {
+ switch (match.opt.scope) {
+ case FindAndReplaceOptions::S_BUFFER:
prompt = true;
- } else if (match.opt.scope == FindAndReplaceOptions::S_DOCUMENT) {
+ break;
+ case FindAndReplaceOptions::S_DOCUMENT:
prompt = next_document_buffer(match.p_buf);
- } else {
- /* Unimplemented scope */
- LASSERT(false, /**/);
+ break;
+ case FindAndReplaceOptions::S_OPEN_BUFFERS:
+ prompt = next_open_buffer(match.p_buf);
+ break;
}
if (prompt) {
if (wrap_answer != -1)
return 0;
}
+
/// Find the most backward consecutive match within same paragraph while searching backwards.
void findMostBackwards(DocIterator & cur, MatchStringAdv const & match, int & len) {
DocIterator cur_begin = doc_iterator_begin(cur.buffer());
}
// No match has been found in current buffer
bool prompt = false;
- if (match.opt.scope == FindAndReplaceOptions::S_BUFFER) {
+ switch (match.opt.scope) {
+ case FindAndReplaceOptions::S_BUFFER:
prompt = true;
- } else if (match.opt.scope == FindAndReplaceOptions::S_DOCUMENT) {
+ break;
+ case FindAndReplaceOptions::S_DOCUMENT:
prompt = prev_document_buffer(match.p_buf);
- } else {
- /* Unimplemented scope */
- LASSERT(false, /**/);
+ break;
+ case FindAndReplaceOptions::S_OPEN_BUFFERS:
+ prompt = prev_open_buffer(match.p_buf);
+ break;
}
if (prompt) {
wrap_answer = frontend::Alert::prompt(