The branch, cleanup/updateMacros3, has been updated. - Log -----------------------------------------------------------------
commit 426674045cd849e1a041473350f00dad74a430fb Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 18:07:35 2020 -0500 Now just use the Inset::updateMacros method. I did all this step by step so (a) I could check the output along the way and (b) so it will be easier to isolate problems if those should arise. diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index 5776e16..aeb99c0 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -924,48 +924,13 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) // look for macros in each paragraph while (it.pit() <= lastpit) { Paragraph & par = it.paragraph(); - // iterate over the insets of the current paragraph for (auto const & insit : par.insetList()) { it.pos() = insit.pos; - - if (InsetText * itext = insit.inset->asInsetText()) { - // collect macros in inset - it.push_back(CursorSlice(*insit.inset)); - itext->updateMacros(it, ourscope); - it.pop_back(); - continue; - } - - if (InsetTabular * itext = insit.inset->asInsetTabular()) { - it.push_back(CursorSlice(*insit.inset)); - itext->updateMacros(it, ourscope); - it.pop_back(); - continue; - } - - // is it an external file? - if (insit.inset->lyxCode() == INCLUDE_CODE) { - insit.inset->updateMacros(it, ourscope); - continue; - } - - InsetMath * im = insit.inset->asInsetMath(); - if (im) { - InsetMathHull * hull = im->asHullInset(); - if (hull) - hull->updateMacros(it, ourscope); - } - - if (insit.inset->lyxCode() != MATHMACRO_CODE) - continue; - - // get macro data - InsetMathMacroTemplate * macroTemplate = - insit.inset->asInsetMath()->asMacroTemplate(); - macroTemplate->updateMacros(it, ourscope); + it.push_back(CursorSlice(*insit.inset)); + insit.inset->updateMacros(it, ourscope); + it.pop_back(); } - // next paragraph it.pit()++; it.pos() = 0; commit 8a8d0c5aab6e503df0f5cdadcf3967de003dbbe2 Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 18:05:40 2020 -0500 nullptr diff --git a/src/mathed/InsetMathMacroTemplate.cpp b/src/mathed/InsetMathMacroTemplate.cpp index 84f8b73..a445b4d 100644 --- a/src/mathed/InsetMathMacroTemplate.cpp +++ b/src/mathed/InsetMathMacroTemplate.cpp @@ -481,7 +481,7 @@ void InsetMathMacroTemplate::updateMacros(DocIterator const & us, DocIterator co void InsetMathMacroTemplate::updateToContext(MacroContext const & mc) { - redefinition_ = mc.get(name()) != 0; + redefinition_ = mc.get(name()) != nullptr; } @@ -564,7 +564,7 @@ void InsetMathMacroTemplate::metrics(MetricsInfo & mi, Dimension & dim) const Changer dummy2 = mi.base.font.changeStyle(TEXT_STYLE); // valid macro? - MacroData const * macro = 0; + MacroData const * macro = nullptr; if (validName()) macro = mi.macrocontext.get(name()); @@ -687,7 +687,7 @@ void InsetMathMacroTemplate::shiftArguments(size_t from, int by) int InsetMathMacroTemplate::maxArgumentInDefinition() const { // We don't have a buffer when pasting from the clipboard (bug 6014). - Buffer const * macro_buffer = isBufferLoaded() ? &buffer() : 0; + Buffer const * macro_buffer = isBufferLoaded() ? &buffer() : nullptr; int maxArg = 0; DocIterator it = doc_iterator_begin(macro_buffer, this); it.idx() = defIdx(); commit 09bf2ed724516e3d7faff91a7158b72da1bf5823 Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 18:03:36 2020 -0500 Move updateMacros code into InsetMathMacroTemplate. diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index 37a1c8e..5776e16 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -961,21 +961,9 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) continue; // get macro data - InsetMathMacroTemplate & macroTemplate = - *insit.inset->asInsetMath()->asMacroTemplate(); - MacroContext mc(&buffer(), it); - macroTemplate.updateToContext(mc); - - // valid? - bool valid = macroTemplate.validMacro(); - // FIXME: Should be fixNameAndCheckIfValid() in fact, - // then the BufferView's cursor will be invalid in - // some cases which leads to crashes. - if (!valid) - continue; - - // register macro - buffer().registerMacro(macroTemplate.name(), it, ourscope); + InsetMathMacroTemplate * macroTemplate = + insit.inset->asInsetMath()->asMacroTemplate(); + macroTemplate->updateMacros(it, ourscope); } // next paragraph diff --git a/src/mathed/InsetMathMacroTemplate.cpp b/src/mathed/InsetMathMacroTemplate.cpp index 1152936..84f8b73 100644 --- a/src/mathed/InsetMathMacroTemplate.cpp +++ b/src/mathed/InsetMathMacroTemplate.cpp @@ -460,6 +460,25 @@ docstring InsetMathMacroTemplate::name() const } +void InsetMathMacroTemplate::updateMacros(DocIterator const & us, DocIterator const & scope) +{ + // This matches the previous code, but I am not sure why it + // should be like this. + DocIterator it = us; + it.pop_back(); + MacroContext mc(&buffer(), it); + updateToContext(mc); + // FIXME: Should be fixNameAndCheckIfValid() in fact, + // then the BufferView's cursor will be invalid in + // some cases which leads to crashes. + if (!validMacro()) + return; + + // register macro + buffer().registerMacro(name(), it, scope); +} + + void InsetMathMacroTemplate::updateToContext(MacroContext const & mc) { redefinition_ = mc.get(name()) != 0; diff --git a/src/mathed/InsetMathMacroTemplate.h b/src/mathed/InsetMathMacroTemplate.h index 0940896..7c9a680 100644 --- a/src/mathed/InsetMathMacroTemplate.h +++ b/src/mathed/InsetMathMacroTemplate.h @@ -87,6 +87,8 @@ public: /// decide whether its a redefinition void updateToContext(MacroContext const & mc); + /// + void updateMacros(DocIterator const & us, DocIterator const & scope) override; /// void draw(PainterInfo & pi, int x, int y) const override; commit 96820abca07f52a968b7e11228a5676272f6231f Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 17:48:51 2020 -0500 Move updateMacros code to InsetInclude. diff --git a/src/insets/InsetInclude.cpp b/src/insets/InsetInclude.cpp index 75a41c3..eff6fb5 100644 --- a/src/insets/InsetInclude.cpp +++ b/src/insets/InsetInclude.cpp @@ -1400,6 +1400,16 @@ void InsetInclude::updateCommand() } +void InsetInclude::updateMacros(DocIterator const & us, DocIterator const & scope) +{ + buffer().setMacroLock(); + loadIfNeeded(); + buffer().clearMacroLock(); + if (child_buffer_) + buffer().registerChild(child_buffer_, us, scope); +} + + void InsetInclude::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted) { file_exist_ = includedFileExist(); diff --git a/src/insets/InsetInclude.h b/src/insets/InsetInclude.h index a254254..046f481 100644 --- a/src/insets/InsetInclude.h +++ b/src/insets/InsetInclude.h @@ -106,6 +106,8 @@ public: /// void updateBuffer(ParIterator const &, UpdateType, bool const deleted = false) override; /// + void updateMacros(DocIterator const & us, DocIterator const & scope) override; + /// std::string contextMenuName() const override; //@} diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index 9d8b2ac..37a1c8e 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -946,15 +946,7 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) // is it an external file? if (insit.inset->lyxCode() == INCLUDE_CODE) { - // get buffer of external file - InsetInclude const & incinset = - static_cast<InsetInclude const &>(*insit.inset); - buffer().setMacroLock(); - Buffer * child = incinset.loadIfNeeded(); - buffer().clearMacroLock(); - if (!child) - continue; - buffer().registerChild(child, it, ourscope); + insit.inset->updateMacros(it, ourscope); continue; } commit 7bab06289480eb33a7fa411ef4b3add4ac97e058 Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 17:43:57 2020 -0500 Move code to InsetMathHull::updateMacros. diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index e8deb3a..9d8b2ac 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -962,7 +962,7 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) if (im) { InsetMathHull * hull = im->asHullInset(); if (hull) - hull->recordLocation(it); + hull->updateMacros(it, ourscope); } if (insit.inset->lyxCode() != MATHMACRO_CODE) diff --git a/src/mathed/InsetMathHull.cpp b/src/mathed/InsetMathHull.cpp index 43f4958..5464115 100644 --- a/src/mathed/InsetMathHull.cpp +++ b/src/mathed/InsetMathHull.cpp @@ -238,6 +238,13 @@ namespace { } // namespace +// FIXME This may or may not be the right place to do this. +void InsetMathHull::updateMacros(DocIterator const & us, DocIterator const &) +{ + recordLocation(us); +} + + void InsetMathHull::updateBuffer(ParIterator const & it, UpdateType utype, bool const deleted) { if (!buffer_) { diff --git a/src/mathed/InsetMathHull.h b/src/mathed/InsetMathHull.h index 0b085a1..ef77a75 100644 --- a/src/mathed/InsetMathHull.h +++ b/src/mathed/InsetMathHull.h @@ -50,6 +50,8 @@ public: void setBuffer(Buffer &) override; /// void updateBuffer(ParIterator const &, UpdateType, bool const deleted = false) override; + /// This must be called by any subclass that overrides it! + void updateMacros(DocIterator const & us, DocIterator const & scope) override; /// void addToToc(DocIterator const & di, bool output_active, UpdateType utype, TocBackend & backend) const override; commit 0507c0b967e5ff2208eb1b932da0b14a7b23d490 Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 17:20:48 2020 -0500 Move updateMacros code into InsetTabular diff --git a/src/insets/InsetTabular.cpp b/src/insets/InsetTabular.cpp index e6c9892..75886f5 100644 --- a/src/insets/InsetTabular.cpp +++ b/src/insets/InsetTabular.cpp @@ -4813,6 +4813,19 @@ void InsetTabular::edit(Cursor & cur, bool front, EntryDirection) } +void InsetTabular::updateMacros(DocIterator const & us, DocIterator const & scope) +{ + DocIterator pos = us; + size_t const numcells = pos.nargs(); + for (size_t c = 0; c < numcells; ++c, pos.top().forwardIdx()) { + shared_ptr<InsetTableCell> cp = cell(c); + // this test should be unnecessary, right? + if (cp) + cp->updateMacros(pos, scope); + } +} + + void InsetTabular::updateBuffer(ParIterator const & it, UpdateType utype, bool const /*deleted*/) { // In a longtable, tell captions what the current float is diff --git a/src/insets/InsetTabular.h b/src/insets/InsetTabular.h index 2ee107a..c27fec0 100644 --- a/src/insets/InsetTabular.h +++ b/src/insets/InsetTabular.h @@ -1054,6 +1054,8 @@ public: /// Update the counters of this inset and of its contents void updateBuffer(ParIterator const &, UpdateType, bool const deleted = false) override; /// + void updateMacros(DocIterator const & us, DocIterator const & scope) override; + /// void addToToc(DocIterator const & di, bool output_active, UpdateType utype, TocBackend & backend) const override; diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index fb581f2..e8deb3a 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -62,6 +62,7 @@ #include "mathed/InsetMathHull.h" #include "mathed/MacroTable.h" #include "mathed/InsetMathMacroTemplate.h" +#include "insets/InsetTabular.h" #include "support/convert.h" #include "support/debug.h" @@ -936,14 +937,10 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) continue; } - if (insit.inset->asInsetTabular()) { - CursorSlice slice(*insit.inset); - size_t const numcells = slice.nargs(); - for (; slice.idx() < numcells; slice.forwardIdx()) { - it.push_back(slice); - updateMacros(it, ourscope); - it.pop_back(); - } + if (InsetTabular * itext = insit.inset->asInsetTabular()) { + it.push_back(CursorSlice(*insit.inset)); + itext->updateMacros(it, ourscope); + it.pop_back(); continue; } commit 04f893b3f600bdf278273a6ba333b164e081bcc5 Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 16:33:28 2020 -0500 Move some processing from the loop into the main InsetText routine. diff --git a/src/insets/Inset.h b/src/insets/Inset.h index c6fbfdb..7885046 100644 --- a/src/insets/Inset.h +++ b/src/insets/Inset.h @@ -571,6 +571,9 @@ public: /// The boolean indicates whether we are preparing for output, e.g., /// of XHTML. virtual void updateBuffer(ParIterator const &, UpdateType, bool const) {} + /// Note that \param us is expected to be a DocIterator pointing at this inset. + /// We will assert otherwise. + virtual void updateMacros(DocIterator const & /* us */, DocIterator const & /* scope */) {} /// Updates the inset's dialog virtual Buffer const * updateFrontend() const; diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index 2a99b10..fb581f2 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -913,8 +913,13 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) { LBUFERR(us.nextInset() == this); DocIterator it = us; - pit_type const lastpit = it.lastpit(); + DocIterator ourscope = scope; + if (!producesOutput()) { + ourscope = us; + ++ourscope.pos(); + } + pit_type const lastpit = it.lastpit(); // look for macros in each paragraph while (it.pit() <= lastpit) { Paragraph & par = it.paragraph(); @@ -923,20 +928,10 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) for (auto const & insit : par.insetList()) { it.pos() = insit.pos; - if (InsetText const * itext = insit.inset->asInsetText()) { + if (InsetText * itext = insit.inset->asInsetText()) { // collect macros in inset it.push_back(CursorSlice(*insit.inset)); - if (itext->producesOutput()) { - // the simple case - updateMacros(it, scope); - } else { - // We don't want macros declared in notes, comments, etc, - // to affect anything outside them. - // New scope which ends just behind the inset - DocIterator new_scope = it; - ++new_scope.pos(); - updateMacros(it, new_scope); - } + itext->updateMacros(it, ourscope); it.pop_back(); continue; } @@ -946,7 +941,7 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) size_t const numcells = slice.nargs(); for (; slice.idx() < numcells; slice.forwardIdx()) { it.push_back(slice); - updateMacros(it, scope); + updateMacros(it, ourscope); it.pop_back(); } continue; @@ -962,7 +957,7 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) buffer().clearMacroLock(); if (!child) continue; - buffer().registerChild(child, it, scope); + buffer().registerChild(child, it, ourscope); continue; } @@ -991,7 +986,7 @@ void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) continue; // register macro - buffer().registerMacro(macroTemplate.name(), it, scope); + buffer().registerMacro(macroTemplate.name(), it, ourscope); } // next paragraph diff --git a/src/insets/InsetText.h b/src/insets/InsetText.h index 9fdfb6f..079d0f4 100644 --- a/src/insets/InsetText.h +++ b/src/insets/InsetText.h @@ -173,7 +173,7 @@ public: /// Update the counters of this inset and of its contents void updateBuffer(ParIterator const &, UpdateType, bool const deleted = false) override; /// - void updateMacros(DocIterator const & us, DocIterator const & scope); + void updateMacros(DocIterator const & us, DocIterator const & scope) override; /// void setMacrocontextPositionRecursive(DocIterator const & pos); /// commit acec4a21f1360f8941d58cf00103abb4ce75e667 Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 16:30:03 2020 -0500 nullptr diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index a947499..2a99b10 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -1187,7 +1187,7 @@ bool InsetText::showCompletionCursor() const CompletionList const * InsetText::createCompletionList(Cursor const & cur) const { - return completionSupported(cur) ? text_.createCompletionList(cur) : 0; + return completionSupported(cur) ? text_.createCompletionList(cur) : nullptr; } commit 706451e6b28df0bc78b70d6211bddeecfc3e12d4 Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 16:19:46 2020 -0500 Temporary script for testing math export. diff --git a/runtest.sh b/runtest.sh new file mode 100644 index 0000000..45ac23e --- /dev/null +++ b/runtest.sh @@ -0,0 +1,10 @@ +#!/bin/bash + +/cvs/lyx/lyx-devel/build/bin/lyx2.4 -E pdflatex /cvs/lyx/lyx-devel/Math-Cleanup.tex lib/doc/Math.lyx +if diff -q Math-Master.tex Math-Cleanup.tex; then + echo "No differences in LaTeX output!"; +else + echo "Differences in LaTeX output! Enter to see them...."; + pause + diff -u Math-Master.tex Math-Cleanup.tex +fi commit 4a90913bf7ef08e49f5288ee34461eef2d0c7b1e Author: Richard Kimberly Heck <[email protected]> Date: Thu Nov 12 16:16:15 2020 -0500 Start moving updateMacros code into the insets. diff --git a/src/Buffer.cpp b/src/Buffer.cpp index 859f9ce..c0a133f 100644 --- a/src/Buffer.cpp +++ b/src/Buffer.cpp @@ -3855,6 +3855,37 @@ void Buffer::Impl::updateMacros(DocIterator & it, DocIterator & scope) } +void Buffer::setMacroLock() const +{ + d->macro_lock = true; +} + + +void Buffer::clearMacroLock() const +{ + d->macro_lock = false; +} + + +void Buffer::registerChild(Buffer * child, + DocIterator const & pos, DocIterator const & scope) const +{ + // register its position, but only when it is + // included first in the buffer + d->children_positions.insert({child, pos}); + // register child with its scope + d->position_to_children[pos] = Impl::ScopeBuffer(scope, child); +} + + +void Buffer::registerMacro(docstring const & name, DocIterator const & pos, + DocIterator const & scope) +{ + d->macro_table.addMacroDefinition(name, pos, scope, + MacroData(const_cast<Buffer *>(this), pos)); +} + + void Buffer::updateMacros() const { if (d->macro_lock) diff --git a/src/Buffer.h b/src/Buffer.h index c8946d6..267bf94 100644 --- a/src/Buffer.h +++ b/src/Buffer.h @@ -597,6 +597,10 @@ public: // // Macro handling // + /// + void setMacroLock() const; + /// + void clearMacroLock() const; /// Collect macro definitions in paragraphs void updateMacros() const; /// Iterate through the whole buffer and try to resolve macros @@ -614,10 +618,18 @@ public: /// Return macro defined before the inclusion of the child MacroData const * getMacro(docstring const & name, Buffer const & child, bool global = true) const; + /// + void registerMacro(docstring const & name, DocIterator const & pos, + DocIterator const & scope); + /// Collect user macro names at loading time typedef std::set<docstring> UserMacroSet; mutable UserMacroSet usermacros; + /// + void registerChild(Buffer * child, + DocIterator const & pos, DocIterator const & scope) const; + /// Replace the inset contents for insets which InsetCode is equal /// to the passed \p inset_code. Handles undo. void changeRefsIfUnique(docstring const & from, docstring const & to); diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp index ec223fa..a947499 100644 --- a/src/insets/InsetText.cpp +++ b/src/insets/InsetText.cpp @@ -56,6 +56,13 @@ #include "frontends/alert.h" #include "frontends/Painter.h" +// These are only temporarily here, until the relevant code +// is moved into these insets +#include "insets/InsetInclude.h" +#include "mathed/InsetMathHull.h" +#include "mathed/MacroTable.h" +#include "mathed/InsetMathMacroTemplate.h" + #include "support/convert.h" #include "support/debug.h" #include "support/gettext.h" @@ -902,6 +909,98 @@ void InsetText::updateBuffer(ParIterator const & it, UpdateType utype, bool cons } +void InsetText::updateMacros(DocIterator const & us, DocIterator const & scope) +{ + LBUFERR(us.nextInset() == this); + DocIterator it = us; + pit_type const lastpit = it.lastpit(); + + // look for macros in each paragraph + while (it.pit() <= lastpit) { + Paragraph & par = it.paragraph(); + + // iterate over the insets of the current paragraph + for (auto const & insit : par.insetList()) { + it.pos() = insit.pos; + + if (InsetText const * itext = insit.inset->asInsetText()) { + // collect macros in inset + it.push_back(CursorSlice(*insit.inset)); + if (itext->producesOutput()) { + // the simple case + updateMacros(it, scope); + } else { + // We don't want macros declared in notes, comments, etc, + // to affect anything outside them. + // New scope which ends just behind the inset + DocIterator new_scope = it; + ++new_scope.pos(); + updateMacros(it, new_scope); + } + it.pop_back(); + continue; + } + + if (insit.inset->asInsetTabular()) { + CursorSlice slice(*insit.inset); + size_t const numcells = slice.nargs(); + for (; slice.idx() < numcells; slice.forwardIdx()) { + it.push_back(slice); + updateMacros(it, scope); + it.pop_back(); + } + continue; + } + + // is it an external file? + if (insit.inset->lyxCode() == INCLUDE_CODE) { + // get buffer of external file + InsetInclude const & incinset = + static_cast<InsetInclude const &>(*insit.inset); + buffer().setMacroLock(); + Buffer * child = incinset.loadIfNeeded(); + buffer().clearMacroLock(); + if (!child) + continue; + buffer().registerChild(child, it, scope); + continue; + } + + InsetMath * im = insit.inset->asInsetMath(); + if (im) { + InsetMathHull * hull = im->asHullInset(); + if (hull) + hull->recordLocation(it); + } + + if (insit.inset->lyxCode() != MATHMACRO_CODE) + continue; + + // get macro data + InsetMathMacroTemplate & macroTemplate = + *insit.inset->asInsetMath()->asMacroTemplate(); + MacroContext mc(&buffer(), it); + macroTemplate.updateToContext(mc); + + // valid? + bool valid = macroTemplate.validMacro(); + // FIXME: Should be fixNameAndCheckIfValid() in fact, + // then the BufferView's cursor will be invalid in + // some cases which leads to crashes. + if (!valid) + continue; + + // register macro + buffer().registerMacro(macroTemplate.name(), it, scope); + } + + // next paragraph + it.pit()++; + it.pos() = 0; + } +} + + void InsetText::toString(odocstream & os) const { os << text().asString(0, 1, AS_STR_LABEL | AS_STR_INSETS); diff --git a/src/insets/InsetText.h b/src/insets/InsetText.h index cefd44c..9fdfb6f 100644 --- a/src/insets/InsetText.h +++ b/src/insets/InsetText.h @@ -173,6 +173,8 @@ public: /// Update the counters of this inset and of its contents void updateBuffer(ParIterator const &, UpdateType, bool const deleted = false) override; /// + void updateMacros(DocIterator const & us, DocIterator const & scope); + /// void setMacrocontextPositionRecursive(DocIterator const & pos); /// void toString(odocstream &) const override; ----------------------------------------------------------------------- Summary of changes: runtest.sh | 10 ++++++++ src/Buffer.cpp | 31 ++++++++++++++++++++++++++ src/Buffer.h | 12 ++++++++++ src/insets/Inset.h | 3 ++ src/insets/InsetInclude.cpp | 10 ++++++++ src/insets/InsetInclude.h | 2 + src/insets/InsetTabular.cpp | 13 +++++++++++ src/insets/InsetTabular.h | 2 + src/insets/InsetText.cpp | 38 ++++++++++++++++++++++++++++++++- src/insets/InsetText.h | 2 + src/mathed/InsetMathHull.cpp | 7 ++++++ src/mathed/InsetMathHull.h | 2 + src/mathed/InsetMathMacroTemplate.cpp | 25 +++++++++++++++++++-- src/mathed/InsetMathMacroTemplate.h | 2 + 14 files changed, 155 insertions(+), 4 deletions(-) create mode 100644 runtest.sh hooks/post-receive -- Repository for new features -- lyx-cvs mailing list [email protected] http://lists.lyx.org/mailman/listinfo/lyx-cvs
