* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author André Pönitz
+ * \author André Pönitz
* \author Alfredo Braunstein
*
* Full author contact details are available in file CREDITS.
#include "DocIterator.h"
+#include "Buffer.h"
#include "InsetList.h"
#include "Paragraph.h"
+#include "LyXRC.h"
#include "Text.h"
#include "mathed/MathData.h"
#include "mathed/InsetMath.h"
+#include "mathed/InsetMathHull.h"
#include "insets/InsetTabular.h"
#include "support/debug.h"
-
-#include "support/assert.h"
+#include "support/lassert.h"
+#include "support/lstrings.h"
#include <ostream>
using namespace std;
+using namespace lyx::support;
namespace lyx {
+DocIterator::DocIterator()
+ : boundary_(false), inset_(0), buffer_(0)
+{}
+
// We could be able to get rid of this if only every BufferView were
// associated to a buffer on construction.
-DocIterator::DocIterator()
- : boundary_(false), inset_(0)
+DocIterator::DocIterator(Buffer * buf)
+ : boundary_(false), inset_(0), buffer_(buf)
{}
-DocIterator::DocIterator(Inset & inset)
- : boundary_(false), inset_(&inset)
+DocIterator::DocIterator(Buffer * buf, Inset * inset)
+ : boundary_(false), inset_(inset), buffer_(buf)
{}
-DocIterator doc_iterator_begin(Inset & inset)
+DocIterator doc_iterator_begin(const Buffer * buf0, const Inset * inset0)
{
- DocIterator dit(inset);
+ Buffer * buf = const_cast<Buffer *>(buf0);
+ Inset * inset = const_cast<Inset *>(inset0);
+ DocIterator dit(buf, inset ? inset : &buf->inset());
dit.forwardPos();
return dit;
}
-DocIterator doc_iterator_end(Inset & inset)
+DocIterator doc_iterator_end(const Buffer * buf0, const Inset * inset0)
+{
+ Buffer * buf = const_cast<Buffer *>(buf0);
+ Inset * inset = const_cast<Inset *>(inset0);
+ return DocIterator(buf, inset ? inset : &buf->inset());
+}
+
+
+bool DocIterator::inRegexped() const
{
- return DocIterator(inset);
+ InsetMathHull * i = dynamic_cast<InsetMathHull *>(inset().asInsetMath());
+ return i && i->getType() == hullRegexp;
}
Inset * DocIterator::nextInset() const
{
- LASSERT(!empty(), /**/);
+ LASSERT(!empty(), return 0);
if (pos() == lastpos())
return 0;
if (pos() > lastpos()) {
Inset * DocIterator::prevInset() const
{
- LASSERT(!empty(), /**/);
+ LASSERT(!empty(), return 0);
if (pos() == 0)
return 0;
if (inMathed()) {
}
-DocIterator StableDocIterator::asDocIterator(Inset * inset) const
+DocIterator StableDocIterator::asDocIterator(Buffer * buf) const
{
// this function re-creates the cache of inset pointers
//lyxerr << "converting:\n" << *this << endl;
- DocIterator dit = DocIterator(*inset);
+ Inset * inset = &buf->inset();
+ DocIterator dit = DocIterator(buf, inset);
for (size_t i = 0, n = data_.size(); i != n; ++i) {
if (inset == 0) {
// FIXME
}
+bool isLetter(DocIterator const & dit)
+{
+ return dit.inTexted()
+ && dit.inset().allowSpellCheck()
+ && dit.pos() != dit.lastpos()
+ && (dit.paragraph().isLetter(dit.pos())
+ // We want to pass the ' and escape chars to ispell
+ || contains(from_utf8(lyxrc.spellchecker_esc_chars + '\''),
+ dit.paragraph().getChar(dit.pos())))
+ && !dit.paragraph().isDeleted(dit.pos());
+}
+
} // namespace lyx