* 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 Stefan Schimanski
*
* Full author contact details are available in file CREDITS.
*/
}
-void MathMacroTemplate::removeArguments(Cursor & cur, int from, int to) {
- for (DocIterator it = doc_iterator_begin(*this); it; it.forwardChar()) {
+void MathMacroTemplate::removeArguments(Cursor & cur, int from, int to)
+{
+ for (DocIterator it = doc_iterator_begin(&buffer(), this); it; it.forwardChar()) {
if (!it.nextInset())
continue;
if (it.nextInset()->lyxCode() != MATHMACROARG_CODE)
}
-void MathMacroTemplate::shiftArguments(size_t from, int by) {
- for (DocIterator it = doc_iterator_begin(*this); it; it.forwardChar()) {
+void MathMacroTemplate::shiftArguments(size_t from, int by)
+{
+ for (DocIterator it = doc_iterator_begin(&buffer(), this); it; it.forwardChar()) {
if (!it.nextInset())
continue;
if (it.nextInset()->lyxCode() != MATHMACROARG_CODE)
int MathMacroTemplate::maxArgumentInDefinition() const
{
int maxArg = 0;
- MathMacroTemplate * nonConst = const_cast<MathMacroTemplate *>(this);
- DocIterator it = doc_iterator_begin(*nonConst);
+ DocIterator it = doc_iterator_begin(&buffer(), this);
it.idx() = defIdx();
for (; it; it.forwardChar()) {
if (!it.nextInset())
idx_type idx = cell(displayIdx()).empty() ? defIdx() : displayIdx();
// search for #n macros arguments
- DocIterator it = doc_iterator_begin(*this);
+ DocIterator it = doc_iterator_begin(&buffer(), this);
it.idx() = idx;
for (; it && it[0].idx() == idx; it.forwardChar()) {
if (!it.nextInset())
if (optionals_ > 0) {
// macros with optionals use the xargs package, e.g.:
// \newcommandx{\foo}[2][usedefault, addprefix=\global,1=default]{#1,#2}
+ // \long is implicit by xargs
if (redefinition_ && !overwriteRedefinition)
os << "\\renewcommandx";
else
os << "\\newcommandx";
- os << "\\" << name().c_str()
+ os << "\\" << name()
<< "[" << numargs_ << "]"
<< "[usedefault, addprefix=\\global";
for (int i = 0; i < optionals_; ++i) {
}
os << "]";
} else {
- // macros without optionals use standard _global_ \def macros:
- // \global\def\foo#1#2{#1,#2}
- os << "\\global\\def\\" << name().c_str();
+ // Macros without optionals use standard _global_ \def macros:
+ // \global\def\long\foo#1#2{#1,#2}
+ // We use the \long prefix as this is the equivalent to \newcommand.
+ // We cannot use \newcommand directly because \global does not work with it.
+ os << "\\global\\long\\def\\" << name();
docstring param = from_ascii("#0");
for (int i = 1; i <= numargs_; ++i) {
param[1] = '0' + i;
} else {
// in LyX output we use some pseudo syntax which is implementation
// independent, e.g.
- // \newcommand{\foo}[2][default}{#1,#2}
+ // \newcommand{\foo}[2][default]{#1,#2}
if (redefinition_ && !overwriteRedefinition)
os << "\\renewcommand";
else
os << "\\newcommand";
- os << "{\\" << name().c_str() << '}';
+ os << "{\\" << name() << '}';
if (numargs_ > 0)
os << '[' << numargs_ << ']';