#include <config.h>
#include "MathMacro.h"
-#include "MathSupport.h"
+
+#include "MathCompletionList.h"
#include "MathExtern.h"
#include "MathStream.h"
+#include "MathSupport.h"
#include "Buffer.h"
#include "BufferView.h"
}
-void MathMacro::updateRepresentation(Cursor const * bvCur)
+void MathMacro::updateRepresentation()
{
// known macro?
if (macro_ == 0)
return;
// macro changed?
- if (needsUpdate_) {
- needsUpdate_ = false;
-
- // get default values of macro
- vector<docstring> const & defaults = macro_->defaults();
-
- // create MathMacroArgumentValue objects pointing to the cells of the macro
- vector<MathData> values(nargs());
- for (size_t i = 0; i < nargs(); ++i) {
- ArgumentProxy * proxy;
- if (i < defaults.size())
- proxy = new ArgumentProxy(*this, i, defaults[i]);
- else
- proxy = new ArgumentProxy(*this, i);
- values[i].insert(0, MathAtom(proxy));
- }
-
- // expanding macro with the values
- macro_->expand(values, expanded_.cell(0));
-
- // get definition for list edit mode
- docstring const & display = macro_->display();
- asArray(display.empty() ? macro_->definition() : display, definition_);
+ if (!needsUpdate_)
+ return;
+
+ needsUpdate_ = false;
+
+ // get default values of macro
+ vector<docstring> const & defaults = macro_->defaults();
+
+ // create MathMacroArgumentValue objects pointing to the cells of the macro
+ vector<MathData> values(nargs());
+ for (size_t i = 0; i < nargs(); ++i) {
+ ArgumentProxy * proxy;
+ if (i < defaults.size())
+ proxy = new ArgumentProxy(*this, i, defaults[i]);
+ else
+ proxy = new ArgumentProxy(*this, i);
+ values[i].insert(0, MathAtom(proxy));
}
+
+ // expanding macro with the values
+ macro_->expand(values, expanded_.cell(0));
+ // get definition for list edit mode
+ docstring const & display = macro_->display();
+ asArray(display.empty() ? macro_->definition() : display, definition_);
}
if (name() == "binom" || name() == "mathcircumflex")
features.require(to_utf8(name()));
+
+ // validate the cells and the definition
+ if (displayMode() == DISPLAY_NORMAL) {
+ definition_.validate(features);
+ InsetMathNest::validate(features);
+ }
}
}
-Inset::CompletionList const *
+CompletionList const *
MathMacro::createCompletionList(Cursor const & cur) const
{
if (displayMode() != DISPLAY_UNFOLDED)