for (auto const & insit : par.insetList()) {
it.pos() = insit.pos;
+ switch (insit.inset->lyxCode()) {
// is it a nested text inset?
- if (insit.inset->asInsetText()) {
- // Inset needs its own scope?
+ case TEXT_CODE: {
InsetText const * itext = insit.inset->asInsetText();
+ // Inset needs its own scope?
bool newScope = itext->isMacroScope();
// scope which ends just behind the inset
it.push_back(CursorSlice(*insit.inset));
updateMacros(it, newScope ? insetScope : scope);
it.pop_back();
- continue;
+ break;
}
-
- if (insit.inset->asInsetTabular()) {
+ case TABULAR_CODE: {
CursorSlice slice(*insit.inset);
size_t const numcells = slice.nargs();
for (; slice.idx() < numcells; slice.forwardIdx()) {
updateMacros(it, scope);
it.pop_back();
}
- continue;
+ break;
}
-
// is it an external file?
- if (insit.inset->lyxCode() == INCLUDE_CODE) {
+ case INCLUDE_CODE: {
// get buffer of external file
InsetInclude const & incinset =
static_cast<InsetInclude const &>(*insit.inset);
Buffer * child = incinset.loadIfNeeded();
macro_lock = false;
if (!child)
- continue;
+ break;
// register its position, but only when it is
// included first in the buffer
// register child with its scope
position_to_children[it] = Impl::ScopeBuffer(scope, child);
- continue;
+ break;
}
-
- InsetMath * im = insit.inset->asInsetMath();
- if (doing_export && im) {
- InsetMathHull * hull = im->asHullInset();
- if (hull)
- hull->recordLocation(it);
+ case MATH_HULL_CODE: {
+ if (!doing_export)
+ break;
+ InsetMathHull * hull = insit.inset->asInsetMath()->asHullInset();
+ hull->recordLocation(it);
+ break;
+ }
+ case MATHMACRO_CODE: {
+ // get macro data
+ InsetMathMacroTemplate & macroTemplate =
+ *insit.inset->asInsetMath()->asMacroTemplate();
+ MacroContext mc(owner_, 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)
+ break;
+
+ // register macro
+ // FIXME (Abdel), I don't understand why we pass 'it' here
+ // instead of 'macroTemplate' defined above... is this correct?
+ macros[macroTemplate.name()][it] =
+ Impl::ScopeMacro(scope, MacroData(const_cast<Buffer *>(owner_), it));
+ break;
+ }
+ default:
+ break;
}
-
- if (insit.inset->lyxCode() != MATHMACRO_CODE)
- continue;
-
- // get macro data
- InsetMathMacroTemplate & macroTemplate =
- *insit.inset->asInsetMath()->asMacroTemplate();
- MacroContext mc(owner_, 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
- // FIXME (Abdel), I don't understand why we pass 'it' here
- // instead of 'macroTemplate' defined above... is this correct?
- macros[macroTemplate.name()][it] =
- Impl::ScopeMacro(scope, MacroData(const_cast<Buffer *>(owner_), it));
}
// next paragraph