commit ae9178314382df799da2746af232d11e3e56a11e
Author: Juergen Spitzmueller <[email protected]>
Date: Thu Feb 19 09:10:18 2026 +0100
Add support InsetLayout LaTeXType simplecommand (#4066)
This allows custom insets without mandatory argument
---
lib/doc/Customization.lyx | 104 ++++++++++++++++-
lib/doc/de/Customization.lyx | 65 +++++++++++
lib/scripts/layout2layout.py | 7 +-
src/Makefile.am | 2 +
src/Text.cpp | 6 +-
src/TextClass.cpp | 2 +-
src/insets/InsetArgument.cpp | 22 ++++
src/insets/InsetCollapsible.h | 4 +-
src/insets/InsetDynamicArgs.cpp | 248 ++++++++++++++++++++++++++++++++++++++++
src/insets/InsetDynamicArgs.h | 64 +++++++++++
src/insets/InsetFlex.cpp | 21 ++--
src/insets/InsetFlex.h | 4 +-
src/insets/InsetLayout.cpp | 2 +
src/insets/InsetLayout.h | 1 +
14 files changed, 535 insertions(+), 17 deletions(-)
diff --git a/lib/doc/Customization.lyx b/lib/doc/Customization.lyx
index b36cc59af5..0ed91fd900 100644
--- a/lib/doc/Customization.lyx
+++ b/lib/doc/Customization.lyx
@@ -21635,7 +21635,12 @@ status collapsed
\begin_layout Plain Layout
Command,
Environment,
- None
+
+\change_inserted -712698321 1771319126
+SimpleCommand,
+
+\change_unchanged
+None
\end_layout
\end_inset
@@ -21707,6 +21712,62 @@ LatexName
\end_inset
+\change_inserted -712698321 1771319160
+
+\end_layout
+
+\begin_layout Description
+
+\change_inserted -712698321 1771319925
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1771319164
+SimpleCommand
+\end_layout
+
+\end_inset
+
+ is a command without a mandatory argument,
+ as in
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1771319160
+
+\backslash
+
+\emph on
+LatexName
+\end_layout
+
+\end_inset
+
+.
+ The command might get arguments defined via
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1771319266
+Argument
+\end_layout
+
+\end_inset
+
+.
+ If so,
+ they can be inserted into the collapsible inset,
+ which only allows argument insets.
+ If no arguments are defined,
+ the inset is a simple button and cannot be uncollapsed.
+\change_unchanged
+
\end_layout
\begin_layout Description
@@ -21758,6 +21819,22 @@ LatexName[LatexParam]{\SpecialChar ldots
}
\end_layout
+\begin_layout Standard
+
+\change_inserted -712698321 1771319490
+or:
+\end_layout
+
+\begin_layout LyX-Code
+
+\change_inserted -712698321 1771319490
+
+\backslash
+LatexName[LatexParam]
+\change_unchanged
+
+\end_layout
+
\begin_layout Standard
or:
\end_layout
@@ -21774,6 +21851,25 @@ end{LatexName}
\begin_layout Standard
depending upon the \SpecialChar LaTeX
type.
+
+\change_inserted -712698321 1771320078
+ Instead of
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\change_inserted -712698321 1771319567
+[LatexParam]
+\change_unchanged
+
+\end_layout
+
+\end_inset
+
+ there might be one or multiple optional or mandatory arguments as well (or
nothing at all).
+\change_unchanged
+
\end_layout
\end_deeper
@@ -24604,6 +24700,8 @@ status collapsed
\change_inserted -712698321 1763989442
IgnoreLanguage
+\change_unchanged
+
\end_layout
\end_inset
@@ -24618,6 +24716,8 @@ status collapsed
\emph on
0
+\change_unchanged
+
\end_layout
\end_inset
@@ -24634,6 +24734,8 @@ status collapsed
\change_inserted -712698321 1763989432
1
+\change_unchanged
+
\end_layout
\end_inset
diff --git a/lib/doc/de/Customization.lyx b/lib/doc/de/Customization.lyx
index 67c26a2ee4..0ba8d09267 100644
--- a/lib/doc/de/Customization.lyx
+++ b/lib/doc/de/Customization.lyx
@@ -20519,6 +20519,50 @@ LatexName
\begin_inset Flex Code
status collapsed
+\begin_layout Plain Layout
+SimpleCommand
+\end_layout
+
+\end_inset
+
+ ist ein Befehl ohne obligatorisches Argument,
+ bspw.
+
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+
+\backslash
+
+\emph on
+LatexName
+\end_layout
+
+\end_inset
+
+.
+ Man kann für den Befehl Argumente mittels
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+Argument
+\end_layout
+
+\end_inset
+
+ definieren.
+ Falls dies der Fall ist,
+ können diese in die aufklappbare Einfügung eingefügt werden (andere Inhalte
sind dort nicht zugelassen).
+ Falls keine Argumente definiert wurden,
+ kann die Einfügung gar nicht aufgeklappt werden.
+\end_layout
+
+\begin_layout Description
+\begin_inset Flex Code
+status collapsed
+
\begin_layout Plain Layout
Environment
\end_layout
@@ -20565,6 +20609,16 @@ LatexName[LatexParam]{\SpecialChar ldots
}
\end_layout
+\begin_layout Standard
+oder:
+\end_layout
+
+\begin_layout LyX-Code
+
+\backslash
+LatexName[LatexParam]
+\end_layout
+
\begin_layout Standard
oder:
@@ -20583,6 +20637,17 @@ end{LatexName}
sein wird,
je nach \SpecialChar LaTeX
-Typ.
+ Anstelle von
+\begin_inset Flex Code
+status collapsed
+
+\begin_layout Plain Layout
+[LatexParam]
+\end_layout
+
+\end_inset
+
+ können auch ein oder mehrere optionale oder obligatorische Argumente (oder
nichts) stehen.
\end_layout
\end_deeper
diff --git a/lib/scripts/layout2layout.py b/lib/scripts/layout2layout.py
index bb908a65d9..d5f2b48361 100644
--- a/lib/scripts/layout2layout.py
+++ b/lib/scripts/layout2layout.py
@@ -9,7 +9,7 @@
# This script will update a .layout file to current format
# The latest layout format is also defined in src/TextClass.cpp
-currentFormat = 114
+currentFormat = 115
# Incremented to format 4, 6 April 2007, lasgouttes
@@ -388,6 +388,9 @@ currentFormat = 114
# Incremented to format 114, 27 October 2025 by spitz
# New textclass tag SpecialChar
+# Incremented to format 115, 28 February 2026 by spitz
+# New InsetLayout option LaTeXType SimpleCommand
+
# Do not forget to document format change in Customization
# Manual (section "Declaring a new text class").
@@ -727,7 +730,7 @@ def convert(lines, end_format):
i += 1
continue
- if 101 <= format <= 114:
+ if 101 <= format <= 115:
# nothing to do.
i += 1
continue
diff --git a/src/Makefile.am b/src/Makefile.am
index b61b0f8220..366c126824 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -562,6 +562,8 @@ liblyxinsets_a_SOURCES = \
insets/InsetCommandParams.h \
insets/InsetCounter.cpp \
insets/InsetCounter.h \
+ insets/InsetDynamicArgs.cpp \
+ insets/InsetDynamicArgs.h \
insets/InsetERT.cpp \
insets/InsetERT.h \
insets/InsetExternal.cpp \
diff --git a/src/Text.cpp b/src/Text.cpp
index 99ff2b8d92..3bafb753f1 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -3580,8 +3580,12 @@ bool doInsertInset(Cursor & cur, Text * text,
if (!inset)
return false;
- if (InsetCollapsible * ci = inset->asInsetCollapsible())
+ if (InsetCollapsible * ci = inset->asInsetCollapsible()) {
ci->setButtonLabel();
+ // do not paste into SimpleCommand collapsibles
+ pastesel &= inset->getLayout().latextype()
+ != InsetLaTeXType::SIMPLE_COMMAND;
+ }
cur.recordUndoSelection();
if (cmd.action() == LFUN_ARGUMENT_INSERT) {
diff --git a/src/TextClass.cpp b/src/TextClass.cpp
index 7462af8245..5a52ae4145 100644
--- a/src/TextClass.cpp
+++ b/src/TextClass.cpp
@@ -59,7 +59,7 @@ namespace lyx {
// You should also run the development/tools/updatelayouts.py script,
// to update the format of all of our layout files.
//
-int const LAYOUT_FORMAT = 114; // spitz: SpecialChar
+int const LAYOUT_FORMAT = 115; // spitz: LaTeXType SimpleCommand
// Layout format for the current lyx file format. Controls which format is
diff --git a/src/insets/InsetArgument.cpp b/src/insets/InsetArgument.cpp
index 8344b2c909..7556490251 100644
--- a/src/insets/InsetArgument.cpp
+++ b/src/insets/InsetArgument.cpp
@@ -246,6 +246,28 @@ bool InsetArgument::getStatus(Cursor & cur, FuncRequest
const & cmd,
flag.setEnabled(false);
return true;
+ // We do not allow dissolving in SimpleCommand insets
+ case LFUN_CHAR_DELETE_FORWARD:
+ if (cur.pit() != cur.lastpit() || cur.pos() != cur.lastpos())
+ return InsetCollapsible::getStatus(cur, cmd, flag);
+ // fall through
+ case LFUN_CHAR_DELETE_BACKWARD:
+ if (cmd.action() == LFUN_CHAR_DELETE_BACKWARD
+ && (cur.pit() != 0 || cur.pos() != 0))
+ return InsetCollapsible::getStatus(cur, cmd, flag);
+ // fall through
+ case LFUN_INSET_DISSOLVE: {
+ if (!cur.paragraph().layout().latexargs().empty())
+ return InsetCollapsible::getStatus(cur, cmd, flag);
+ Inset * in = cur.innerInsetOfType(FLEX_CODE);
+ if (in && in->getLayout().latextype() ==
InsetLaTeXType::SIMPLE_COMMAND) {
+ // do not allow in SimpleCommand insets
+ flag.setEnabled(false);
+ return true;
+ }
+ return InsetCollapsible::getStatus(cur, cmd, flag);
+ }
+
case LFUN_INSET_MODIFY: {
string const first_arg = cmd.getArg(0);
if (first_arg == "changetype") {
diff --git a/src/insets/InsetCollapsible.h b/src/insets/InsetCollapsible.h
index 695e05472f..5dfd1bc627 100644
--- a/src/insets/InsetCollapsible.h
+++ b/src/insets/InsetCollapsible.h
@@ -162,6 +162,8 @@ public:
///
void addToToc(DocIterator const & dit, bool output_active,
UpdateType utype, TocBackend & backend) const override;
+ ///
+ Dimension dimensionCollapsed(BufferView const & bv) const;
protected:
///
@@ -177,8 +179,6 @@ protected:
std::unique_ptr<support::TempFile> tempfile_;
private:
- ///
- Dimension dimensionCollapsed(BufferView const & bv) const;
///
docstring labelstring_;
diff --git a/src/insets/InsetDynamicArgs.cpp b/src/insets/InsetDynamicArgs.cpp
new file mode 100644
index 0000000000..08f826f473
--- /dev/null
+++ b/src/insets/InsetDynamicArgs.cpp
@@ -0,0 +1,248 @@
+/**
+ * \file InsetDynamicArgs.cpp
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Jürgen Spitzmüller
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#include <config.h>
+
+#include "InsetDynamicArgs.h"
+
+#include "Buffer.h"
+#include "BufferParams.h"
+#include "BufferView.h"
+#include "FuncRequest.h"
+#include "FuncStatus.h"
+#include "MetricsInfo.h"
+
+#include "frontends/Painter.h"
+
+using namespace std;
+
+namespace lyx {
+
+
+InsetDynamicArgs::InsetDynamicArgs(Buffer * buf)
+ : InsetCollapsible(buf)
+{}
+
+
+InsetDynamicArgs::InsetDynamicArgs(InsetDynamicArgs const & in)
+ : InsetCollapsible(in)
+{}
+
+
+bool InsetDynamicArgs::isButtonOnly() const
+{
+ InsetLayout const & il = getLayout();
+ return (il.latextype() == InsetLaTeXType::SIMPLE_COMMAND
+ && (il.latexargs().empty() && il.postcommandargs().empty()));
+}
+
+
+void InsetDynamicArgs::draw(PainterInfo & pi, int x, int y) const
+{
+ if (!isButtonOnly()) {
+ InsetCollapsible::draw(pi, x, y);
+ return;
+ }
+
+ BufferView const & bv = *pi.base.bv;
+ Changer dummy = pi.base.font.change(getFont(), true);
+ // Draw button
+ Dimension dimc = dimensionCollapsed(bv);
+
+ FontInfo labelfont = getLabelfont();
+ labelfont.setColor(labelColor());
+ labelfont.realize(pi.base.font);
+ pi.pain.buttonText(x, y, buttonLabel(bv), labelfont,
+ Color_commandbg, Color_commandframe,
Inset::textOffset(pi.base.bv));
+ // Draw the change tracking cue on the label, unless RowPainter already
+ // takes care of it.
+ if (canPaintChange(bv))
+ pi.change.paintCue(pi, x, y, x + dimc.width(), labelfont);
+}
+
+
+void InsetDynamicArgs::metrics(MetricsInfo & mi, Dimension & dim) const
+{
+ if (!isButtonOnly()) {
+ InsetCollapsible::metrics(mi, dim);
+ return;
+ }
+
+ BufferView const & bv = *mi.base.bv;
+ dim = dimensionCollapsed(bv);
+}
+
+
+bool InsetDynamicArgs::getStatus(Cursor & cur, FuncRequest const & cmd,
+ FuncStatus & flag) const
+{
+ if (getLayout().latextype() == InsetLaTeXType::SIMPLE_COMMAND) {
+ switch (cmd.action()) {
+ // we only allow these for SimpleCommand
+ case LFUN_ARGUMENT_INSERT:
+ case LFUN_UNDO:
+ case LFUN_REDO:
+ case LFUN_CUT:
+ case LFUN_WORD_DELETE_FORWARD:
+ case LFUN_WORD_DELETE_BACKWARD:
+ case LFUN_LINE_DELETE_FORWARD:
+ case LFUN_WORD_FORWARD:
+ case LFUN_WORD_BACKWARD:
+ case LFUN_WORD_RIGHT:
+ case LFUN_WORD_LEFT:
+ case LFUN_CHAR_FORWARD:
+ case LFUN_CHAR_FORWARD_SELECT:
+ case LFUN_CHAR_BACKWARD:
+ case LFUN_CHAR_BACKWARD_SELECT:
+ case LFUN_CHAR_LEFT:
+ case LFUN_CHAR_LEFT_SELECT:
+ case LFUN_CHAR_RIGHT:
+ case LFUN_CHAR_RIGHT_SELECT:
+ case LFUN_UP:
+ case LFUN_UP_SELECT:
+ case LFUN_DOWN:
+ case LFUN_PARAGRAPH_SELECT:
+ case LFUN_LINE_BEGIN_SELECT:
+ case LFUN_LINE_END_SELECT:
+ case LFUN_WORD_FORWARD_SELECT:
+ case LFUN_WORD_BACKWARD_SELECT:
+ case LFUN_WORD_RIGHT_SELECT:
+ case LFUN_WORD_LEFT_SELECT:
+ case LFUN_WORD_SELECT:
+ case LFUN_SECTION_SELECT:
+ case LFUN_BUFFER_BEGIN:
+ case LFUN_BUFFER_END:
+ case LFUN_BUFFER_BEGIN_SELECT:
+ case LFUN_BUFFER_END_SELECT:
+ case LFUN_INSET_BEGIN:
+ case LFUN_INSET_END:
+ case LFUN_INSET_BEGIN_SELECT:
+ case LFUN_INSET_END_SELECT:
+ case LFUN_PARAGRAPH_UP:
+ case LFUN_PARAGRAPH_DOWN:
+ case LFUN_LINE_BEGIN:
+ case LFUN_LINE_END:
+ case LFUN_CHAR_DELETE_FORWARD:
+ case LFUN_CHAR_DELETE_BACKWARD:
+ case LFUN_SERVER_GET_XY:
+ case LFUN_SERVER_SET_XY:
+ case LFUN_SERVER_GET_LAYOUT:
+ case LFUN_ESCAPE:
+ case LFUN_SERVER_GET_STATISTICS:
+ return InsetText::getStatus(cur, cmd, flag);
+
+ case LFUN_INSET_DISSOLVE: {
+ if (isButtonOnly()) {
+ flag.setEnabled(false);
+ return true;
+ }
+ return InsetText::getStatus(cur, cmd, flag);
+ }
+
+ default:
+ flag.setEnabled(false);
+ return true;
+ }
+ }
+
+ return InsetCollapsible::getStatus(cur, cmd, flag);
+}
+
+
+InsetCollapsible::Geometry InsetDynamicArgs::geometry(BufferView const & bv)
const
+{
+ if (isButtonOnly())
+ return ButtonOnly;
+
+ return InsetCollapsible::geometry(bv);
+}
+
+
+bool InsetDynamicArgs::editable() const
+{
+ if (isButtonOnly())
+ return false;
+
+ return InsetCollapsible::editable();
+}
+
+
+bool InsetDynamicArgs::descendable(BufferView const & bv) const
+{
+ if (isButtonOnly())
+ return false;
+
+ return InsetCollapsible::descendable(bv);
+}
+
+
+bool InsetDynamicArgs::clickable(BufferView const & bv, int x, int y) const
+{
+ if (isButtonOnly())
+ return false;
+
+ return InsetCollapsible::clickable(bv, x, y);
+}
+
+
+void InsetDynamicArgs::latex(otexstream & os, OutputParams const & runparams)
const
+{
+ InsetLayout const & il = getLayout();
+ if (il.latextype() != InsetLaTeXType::SIMPLE_COMMAND)
+ // non-SimpleCommand collapsibles are
+ // dealt with in InsetText
+ return InsetCollapsible::latex(os, runparams);
+
+ // SimpleCommand insets: They don't have a mandatory argument
+ // from InsetText, but they might have InsetArguments
+ if (il.forceOwnlines())
+ os << breakln;
+
+ if (!il.latexname().empty()) {
+ // FIXME UNICODE
+ // FIXME \protect should only be used for fragile
+ // commands, but we do not provide this information yet.
+ if (runparams.moving_arg)
+ os << "\\protect";
+ os << '\\' << from_utf8(il.latexname());
+ if (!il.latexargs().empty())
+ getArgs(os, runparams);
+ if (!il.latexparam().empty())
+ os << from_utf8(il.latexparam());
+ } else {
+ if (!il.latexargs().empty())
+ getArgs(os, runparams);
+ if (!il.latexparam().empty())
+ os << from_utf8(il.latexparam());
+ }
+
+ if (!il.latexname().empty()) {
+ if (!il.postcommandargs().empty())
+ getArgs(os, runparams, true);
+ }
+
+ if (il.forceOwnlines())
+ os << breakln;
+ else if (os.lastChar() != '}' && os.lastChar() != ']')
+ // properly terminate command
+ os << termcmd;
+}
+
+
+string InsetDynamicArgs::contextMenu(BufferView const & bv, int x, int y) const
+{
+ if (isButtonOnly())
+ //no context menu (yet) for ButtonOnly insets
+ return string();
+
+ return InsetCollapsible::contextMenu(bv, x, y);
+}
+
+} // namespace lyx
diff --git a/src/insets/InsetDynamicArgs.h b/src/insets/InsetDynamicArgs.h
new file mode 100644
index 0000000000..8d8086b258
--- /dev/null
+++ b/src/insets/InsetDynamicArgs.h
@@ -0,0 +1,64 @@
+// -*- C++ -*-
+/**
+ * \file InsetDynamicArgs.h
+ * This file is part of LyX, the document processor.
+ * Licence details can be found in the file COPYING.
+ *
+ * \author Jürgen Spitzmüller
+ *
+ * Full author contact details are available in file CREDITS.
+ */
+
+#ifndef INSETDYNAMICARGS_H
+#define INSETDYNAMICARGS_H
+
+#include "InsetCollapsible.h"
+
+
+namespace lyx {
+
+/** A derivate of collapsible with dynamic arguments
+
+*/
+class InsetDynamicArgs : public InsetCollapsible {
+public:
+ ///
+ InsetDynamicArgs(Buffer *);
+ ///
+ bool getStatus(Cursor &, FuncRequest const &, FuncStatus &) const
override;
+ ///
+ void draw(PainterInfo & pi, int x, int y) const override;
+ ///
+ void metrics(MetricsInfo &, Dimension &) const override;
+ ///
+ Geometry geometry(BufferView const & bv) const;
+ ///
+ bool editable() const override;
+ /// can we go further down on mouse click?
+ bool descendable(BufferView const & bv) const override;
+ /// Returns true if coordinates are over the inset's button.
+ /// Always returns false when the inset does not have a
+ /// button.
+ bool clickable(BufferView const & bv, int x, int y) const override;
+ ///
+ void latex(otexstream &, OutputParams const &) const override;
+ ///
+ std::string contextMenu(BufferView const & bv, int x, int y) const
override;
+ /// A simple command inset without any arguments
+ bool isButtonOnly() const;
+
+protected:
+ ///
+ InsetDynamicArgs(InsetDynamicArgs const &);
+
+private:
+ ///
+ Inset * clone() const override { return new InsetDynamicArgs(*this); }
+ ///
+ std::string name_;
+};
+
+
+} // namespace lyx
+
+#endif
diff --git a/src/insets/InsetFlex.cpp b/src/insets/InsetFlex.cpp
index 8ef483582f..0446efb69b 100644
--- a/src/insets/InsetFlex.cpp
+++ b/src/insets/InsetFlex.cpp
@@ -35,12 +35,12 @@ namespace lyx {
InsetFlex::InsetFlex(Buffer * buf, string const & layoutName)
- : InsetCollapsible(buf), name_(layoutName)
+ : InsetDynamicArgs(buf), name_(layoutName)
{}
InsetFlex::InsetFlex(InsetFlex const & in)
- : InsetCollapsible(in), name_(in.name_)
+ : InsetDynamicArgs(in), name_(in.name_)
{}
@@ -60,6 +60,8 @@ InsetLayout const & InsetFlex::getLayout() const
InsetDecoration InsetFlex::decoration() const
{
+ if (isButtonOnly())
+ return InsetDecoration::DEFAULT;
InsetDecoration const dec = getLayout().decoration();
return dec == InsetDecoration::DEFAULT ? InsetDecoration::CONGLOMERATE
: dec;
}
@@ -86,13 +88,16 @@ void InsetFlex::write(ostream & os) const
}
}
os << name << "\n";
- InsetCollapsible::write(os);
+ InsetDynamicArgs::write(os);
}
bool InsetFlex::getStatus(Cursor & cur, FuncRequest const & cmd,
FuncStatus & flag) const
{
+ if (getLayout().latextype() == InsetLaTeXType::SIMPLE_COMMAND)
+ return InsetDynamicArgs::getStatus(cur, cmd, flag);
+
switch (cmd.action()) {
case LFUN_INSET_SPLIT:
case LFUN_INSET_DISSOLVE:
@@ -104,13 +109,13 @@ bool InsetFlex::getStatus(Cursor & cur, FuncRequest const
& cmd,
|| (il.name() == InsetLayout::undefined().name()
&& type == InsetLyXType::CHARSTYLE)) {
FuncRequest temp_cmd(cmd.action());
- return InsetCollapsible::getStatus(cur,
temp_cmd, flag);
+ return InsetDynamicArgs::getStatus(cur,
temp_cmd, flag);
} else
return false;
}
// fall-through
default:
- return InsetCollapsible::getStatus(cur, cmd, flag);
+ return InsetDynamicArgs::getStatus(cur, cmd, flag);
}
}
@@ -129,14 +134,14 @@ void InsetFlex::doDispatch(Cursor & cur, FuncRequest &
cmd)
|| (il.name() == InsetLayout::undefined().name()
&& type == InsetLyXType::CHARSTYLE)) {
FuncRequest temp_cmd(cmd.action());
- InsetCollapsible::doDispatch(cur, temp_cmd);
+ InsetDynamicArgs::doDispatch(cur, temp_cmd);
} else
cur.undispatched();
break;
}
// fall-through
default:
- InsetCollapsible::doDispatch(cur, cmd);
+ InsetDynamicArgs::doDispatch(cur, cmd);
break;
}
}
@@ -172,7 +177,7 @@ void InsetFlex::updateBuffer(ParIterator const & it,
UpdateType utype, bool cons
}
setLabel(custom_label);
- InsetCollapsible::updateBuffer(it, utype, deleted);
+ InsetDynamicArgs::updateBuffer(it, utype, deleted);
if (have_counter)
cnts.restoreLastCounter();
}
diff --git a/src/insets/InsetFlex.h b/src/insets/InsetFlex.h
index f7ea07a0c3..4b78d94eb4 100644
--- a/src/insets/InsetFlex.h
+++ b/src/insets/InsetFlex.h
@@ -13,7 +13,7 @@
#ifndef INSETFLEX_H
#define INSETFLEX_H
-#include "InsetCollapsible.h"
+#include "InsetDynamicArgs.h"
namespace lyx {
@@ -21,7 +21,7 @@ namespace lyx {
/** The Flex inset, e.g., CharStyle, Custom inset or XML short element
*/
-class InsetFlex : public InsetCollapsible {
+class InsetFlex : public InsetDynamicArgs {
public:
///
InsetFlex(Buffer *, std::string const & layoutName);
diff --git a/src/insets/InsetLayout.cpp b/src/insets/InsetLayout.cpp
index 2b6ba3a6e4..5c12f00bcc 100644
--- a/src/insets/InsetLayout.cpp
+++ b/src/insets/InsetLayout.cpp
@@ -49,6 +49,8 @@ InsetLaTeXType translateLaTeXType(std::string const & str)
{
if (compare_ascii_no_case(str, "command") == 0)
return InsetLaTeXType::COMMAND;
+ if (compare_ascii_no_case(str, "simplecommand") == 0)
+ return InsetLaTeXType::SIMPLE_COMMAND;
if (compare_ascii_no_case(str, "environment") == 0)
return InsetLaTeXType::ENVIRONMENT;
if (compare_ascii_no_case(str, "none") == 0)
diff --git a/src/insets/InsetLayout.h b/src/insets/InsetLayout.h
index 1f4c29dc51..d28d75d61b 100644
--- a/src/insets/InsetLayout.h
+++ b/src/insets/InsetLayout.h
@@ -45,6 +45,7 @@ enum class InsetLyXType : int {
enum class InsetLaTeXType : int {
NOLATEXTYPE,
COMMAND,
+ SIMPLE_COMMAND,
ENVIRONMENT,
ILT_ERROR
};
--
lyx-cvs mailing list
[email protected]
https://lists.lyx.org/mailman/listinfo/lyx-cvs