Please review next 2 patches.

Yuriy
From 9d7d04d2fc0463bd1aa41acbbe22e95548a46d22 Mon Sep 17 00:00:00 2001
From: Yuriy Skalko <yuriy.ska...@gmail.com>
Date: Wed, 2 Dec 2020 22:34:28 +0200
Subject: [PATCH 1/5] More enums & includes refactoring

---
 src/Changes.cpp                     |  1 +
 src/Changes.h                       |  3 +-
 src/Cursor.cpp                      |  1 +
 src/Layout.cpp                      |  3 --
 src/ParagraphMetrics.cpp            |  1 -
 src/Text.cpp                        |  4 +--
 src/Text3.cpp                       |  6 ++--
 src/frontends/qt/FindAndReplace.cpp |  4 ---
 src/frontends/qt/GuiParagraph.cpp   |  1 +
 src/frontends/qt/GuiToolbar.cpp     |  6 ++--
 src/frontends/qt/Menus.cpp          | 10 +++---
 src/frontends/qt/qt_helpers.cpp     | 13 +------
 src/insets/Inset.cpp                |  7 ++++
 src/insets/Inset.h                  |  4 +--
 src/insets/InsetArgument.cpp        |  9 ++---
 src/insets/InsetArgument.h          |  4 +--
 src/insets/InsetBranch.cpp          |  2 +-
 src/insets/InsetCollapsible.cpp     | 50 +++++++++++++++++++-------
 src/insets/InsetCollapsible.h       | 15 ++++----
 src/insets/InsetERT.cpp             |  7 ++--
 src/insets/InsetFlex.cpp            | 14 ++++----
 src/insets/InsetFlex.h              |  3 +-
 src/insets/InsetIPAMacro.cpp        |  3 +-
 src/insets/InsetLayout.cpp          | 38 ++++++++++----------
 src/insets/InsetLayout.h            | 56 +++++++++++++++--------------
 src/insets/InsetListings.cpp        |  8 ++---
 src/insets/InsetNomencl.cpp         |  1 +
 src/insets/InsetNote.cpp            |  5 ++-
 src/insets/InsetQuotes.h            |  2 +-
 src/insets/InsetScript.h            |  1 +
 src/insets/InsetText.cpp            | 43 ++++++++++++++++++----
 src/insets/InsetText.h              | 14 ++++----
 src/mathed/InsetMathSize.h          |  1 +
 src/mathed/MathFactory.cpp          |  1 +
 src/output_latex.h                  |  1 -
 src/tex2lyx/tex2lyx.cpp             |  1 -
 36 files changed, 196 insertions(+), 147 deletions(-)

diff --git a/src/Changes.cpp b/src/Changes.cpp
index e1c7515564..33209afbbb 100644
--- a/src/Changes.cpp
+++ b/src/Changes.cpp
@@ -17,6 +17,7 @@
 #include "Author.h"
 #include "Buffer.h"
 #include "BufferParams.h"
+#include "Color.h"
 #include "Encoding.h"
 #include "LyXRC.h"
 #include "MetricsInfo.h"
diff --git a/src/Changes.h b/src/Changes.h
index da9fef2cb7..d53887556d 100644
--- a/src/Changes.h
+++ b/src/Changes.h
@@ -15,8 +15,6 @@
 #ifndef CHANGES_H
 #define CHANGES_H
 
-#include "Color.h"
-
 #include "support/strfwd.h"
 #include "support/types.h"
 #include "support/lyxtime.h"
@@ -28,6 +26,7 @@ namespace lyx {
 
 class AuthorList;
 class Buffer;
+class Color;
 class DocIterator;
 class FontInfo;
 class OutputParams;
diff --git a/src/Cursor.cpp b/src/Cursor.cpp
index ee54ace608..b250b7bc56 100644
--- a/src/Cursor.cpp
+++ b/src/Cursor.cpp
@@ -38,6 +38,7 @@
 #include "support/gettext.h"
 #include "support/lassert.h"
 
+#include "insets/InsetLayout.h"
 #include "insets/InsetTabular.h"
 
 #include "mathed/InsetMath.h"
diff --git a/src/Layout.cpp b/src/Layout.cpp
index 63a5dc47d2..79a2e7bcc7 100644
--- a/src/Layout.cpp
+++ b/src/Layout.cpp
@@ -13,8 +13,6 @@
 #include <config.h>
 
 #include "Layout.h"
-#include "FontInfo.h"
-#include "Language.h"
 #include "Lexer.h"
 #include "output_xhtml.h"
 #include "TextClass.h"
@@ -23,7 +21,6 @@
 #include "support/docstream.h"
 #include "support/lassert.h"
 #include "support/lstrings.h"
-#include "support/Messages.h"
 #include "support/textutils.h"
 
 
diff --git a/src/ParagraphMetrics.cpp b/src/ParagraphMetrics.cpp
index 86a3144a1b..46f2edc9aa 100644
--- a/src/ParagraphMetrics.cpp
+++ b/src/ParagraphMetrics.cpp
@@ -26,7 +26,6 @@
 #include "Layout.h"
 #include "LayoutEnums.h"
 #include "Paragraph.h"
-#include "Row.h"
 #include "TextClass.h"
 
 #include "frontends/FontMetrics.h"
diff --git a/src/Text.cpp b/src/Text.cpp
index 0bb66f6666..d1e0d9abd0 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -29,7 +29,6 @@
 #include "Cursor.h"
 #include "CursorSlice.h"
 #include "CutAndPaste.h"
-#include "DispatchResult.h"
 #include "Encoding.h"
 #include "ErrorList.h"
 #include "factory.h"
@@ -43,7 +42,6 @@
 #include "ParagraphParameters.h"
 #include "TextClass.h"
 #include "TextMetrics.h"
-#include "Undo.h"
 #include "WordList.h"
 
 #include "insets/Inset.h"
@@ -2044,7 +2042,7 @@ docstring Text::currentState(CursorData const & cur, bool 
devel_mode) const
 
        // Custom text style
        InsetLayout const & layout = cur.inset().getLayout();
-       if (layout.lyxtype() == InsetLayout::CHARSTYLE)
+       if (layout.lyxtype() == InsetLyXType::CHARSTYLE)
                os << _(", Style: ") << 
translateIfPossible(layout.labelstring());
 
        if (devel_mode) {
diff --git a/src/Text3.cpp b/src/Text3.cpp
index 1d2f5618ea..07d7e80d0a 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -3069,9 +3069,9 @@ bool Text::getStatus(Cursor & cur, FuncRequest const & 
cmd,
                string s = cmd.getArg(0);
                InsetLayout il =
                        
cur.buffer()->params().documentClass().insetLayout(from_utf8(s));
-               if (il.lyxtype() != InsetLayout::CHARSTYLE &&
-                   il.lyxtype() != InsetLayout::CUSTOM &&
-                   il.lyxtype ()!= InsetLayout::STANDARD)
+               if (il.lyxtype() != InsetLyXType::CHARSTYLE &&
+                   il.lyxtype() != InsetLyXType::CUSTOM &&
+                   il.lyxtype ()!= InsetLyXType::STANDARD)
                        enable = false;
                break;
                }
diff --git a/src/frontends/qt/FindAndReplace.cpp 
b/src/frontends/qt/FindAndReplace.cpp
index bd3edcf3c9..72a8f2fc9f 100644
--- a/src/frontends/qt/FindAndReplace.cpp
+++ b/src/frontends/qt/FindAndReplace.cpp
@@ -14,8 +14,6 @@
 
 #include "GuiApplication.h"
 #include "GuiView.h"
-#include "GuiWorkArea.h"
-#include "qt_helpers.h"
 
 #include "Buffer.h"
 #include "BufferList.h"
@@ -24,11 +22,9 @@
 #include "Cursor.h"
 #include "FuncRequest.h"
 #include "Language.h"
-#include "Lexer.h"
 #include "LyX.h"
 #include "lyxfind.h"
 #include "Text.h"
-#include "TextClass.h"
 
 #include "frontends/alert.h"
 
diff --git a/src/frontends/qt/GuiParagraph.cpp 
b/src/frontends/qt/GuiParagraph.cpp
index 3f1e64f219..0bf4fcd085 100644
--- a/src/frontends/qt/GuiParagraph.cpp
+++ b/src/frontends/qt/GuiParagraph.cpp
@@ -23,6 +23,7 @@
 #include "Cursor.h"
 #include "FuncRequest.h"
 #include "GuiView.h"
+#include "Layout.h"
 #include "Lexer.h"
 #include "Paragraph.h"
 #include "ParagraphParameters.h"
diff --git a/src/frontends/qt/GuiToolbar.cpp b/src/frontends/qt/GuiToolbar.cpp
index fbfa967c06..4e906e5e71 100644
--- a/src/frontends/qt/GuiToolbar.cpp
+++ b/src/frontends/qt/GuiToolbar.cpp
@@ -448,11 +448,11 @@ void DynamicMenuButton::loadFlexInsets()
        QMenu * m = menu();
        m->clear();
        string const & menutype = tbitem_.name;
-       InsetLayout::InsetLyXType ftype;
+       InsetLyXType ftype;
        if (menutype == "dynamic-custom-insets")
-               ftype = InsetLayout::CUSTOM;
+               ftype = InsetLyXType::CUSTOM;
        else if (menutype == "dynamic-char-styles")
-               ftype = InsetLayout::CHARSTYLE;
+               ftype = InsetLyXType::CHARSTYLE;
        else {
                // this should have been taken care of earlier
                LASSERT(false, return);
diff --git a/src/frontends/qt/Menus.cpp b/src/frontends/qt/Menus.cpp
index e567c64f36..c30b73807c 100644
--- a/src/frontends/qt/Menus.cpp
+++ b/src/frontends/qt/Menus.cpp
@@ -356,7 +356,7 @@ public:
        void expandFormats(MenuItem::Kind const kind, Buffer const * buf);
        void expandFloatListInsert(Buffer const * buf);
        void expandFloatInsert(Buffer const * buf);
-       void expandFlexInsert(Buffer const * buf, InsetLayout::InsetLyXType 
type);
+       void expandFlexInsert(Buffer const * buf, InsetLyXType type);
        void expandTocSubmenu(std::string const & type, Toc const & toc_list);
        void expandToc2(Toc const & toc_list, size_t from, size_t to, int 
depth, const string & toc_type);
        void expandToc(Buffer const * buf);
@@ -1216,7 +1216,7 @@ void MenuDefinition::expandFloatInsert(Buffer const * buf)
 
 
 void MenuDefinition::expandFlexInsert(
-               Buffer const * buf, InsetLayout::InsetLyXType type)
+               Buffer const * buf, InsetLyXType type)
 {
        if (!buf)
                return;
@@ -1242,7 +1242,7 @@ void MenuDefinition::expandFlexInsert(
                }
        }
        // FIXME This is a little clunky.
-       if (items_.empty() && type == InsetLayout::CUSTOM && 
!buf->hasReadonlyFlag())
+       if (items_.empty() && type == InsetLyXType::CUSTOM && 
!buf->hasReadonlyFlag())
                add(MenuItem(MenuItem::Help, qt_("(No Custom Insets 
Defined)")));
 }
 
@@ -2312,11 +2312,11 @@ void Menus::Impl::expand(MenuDefinition const & 
frommenu,
                }
 
                case MenuItem::CharStyles:
-                       tomenu.expandFlexInsert(buf, InsetLayout::CHARSTYLE);
+                       tomenu.expandFlexInsert(buf, InsetLyXType::CHARSTYLE);
                        break;
 
                case MenuItem::Custom:
-                       tomenu.expandFlexInsert(buf, InsetLayout::CUSTOM);
+                       tomenu.expandFlexInsert(buf, InsetLyXType::CUSTOM);
                        break;
 
                case MenuItem::FloatListInsert:
diff --git a/src/frontends/qt/qt_helpers.cpp b/src/frontends/qt/qt_helpers.cpp
index 27fe094c12..211d286dda 100644
--- a/src/frontends/qt/qt_helpers.cpp
+++ b/src/frontends/qt/qt_helpers.cpp
@@ -14,26 +14,15 @@
 
 #include "qt_helpers.h"
 
-#include "FileDialog.h"
 #include "LengthCombo.h"
+#include "LyXRC.h"
 
 #include "frontends/alert.h"
 
-#include "BufferParams.h"
-#include "FloatList.h"
-#include "FuncRequest.h"
-#include "Language.h"
-#include "LyX.h"
-#include "LyXRC.h"
-#include "LyXAction.h"
-#include "TextClass.h"
-
 #include "support/convert.h"
 #include "support/debug.h"
 #include "support/gettext.h"
-#include "support/Length.h"
 #include "support/lstrings.h"
-#include "support/os.h"
 #include "support/Package.h"
 #include "support/PathChanger.h"
 #include "support/Systemcall.h"
diff --git a/src/insets/Inset.cpp b/src/insets/Inset.cpp
index a5077edda3..45eae990c0 100644
--- a/src/insets/Inset.cpp
+++ b/src/insets/Inset.cpp
@@ -27,6 +27,7 @@
 #include "DispatchResult.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
+#include "InsetLayout.h"
 #include "MetricsInfo.h"
 #include "output_xhtml.h"
 #include "xml.h"
@@ -587,6 +588,12 @@ InsetLayout const & Inset::getLayout() const
 }
 
 
+bool Inset::isPassThru() const
+{
+       return getLayout().isPassThru();
+}
+
+
 bool Inset::undefined() const
 {
        docstring const & n = getLayout().name();
diff --git a/src/insets/Inset.h b/src/insets/Inset.h
index 8b47a05aa1..ab2c535e46 100644
--- a/src/insets/Inset.h
+++ b/src/insets/Inset.h
@@ -17,11 +17,11 @@
 
 #include "ColorCode.h"
 #include "InsetCode.h"
-#include "InsetLayout.h"
 #include "LayoutEnums.h"
 #include "OutputEnums.h"
 #include "OutputParams.h"
 
+#include "support/docstring.h"
 #include "support/strfwd.h"
 #include "support/types.h"
 
@@ -452,7 +452,7 @@ public:
        ///
        virtual InsetLayout const & getLayout() const;
        ///
-       virtual bool isPassThru() const { return getLayout().isPassThru(); }
+       virtual bool isPassThru() const;
        /// Is this inset embedded in a title?
        virtual bool isInTitle() const { return false; }
        /// Is this inset's layout defined in the document's textclass?
diff --git a/src/insets/InsetArgument.cpp b/src/insets/InsetArgument.cpp
index 8382d9542f..3f26f85739 100644
--- a/src/insets/InsetArgument.cpp
+++ b/src/insets/InsetArgument.cpp
@@ -18,6 +18,7 @@
 #include "Cursor.h"
 #include "FuncStatus.h"
 #include "FuncRequest.h"
+#include "InsetLayout.h"
 #include "InsetList.h"
 #include "Language.h"
 #include "Layout.h"
@@ -272,7 +273,7 @@ bool InsetArgument::getStatus(Cursor & cur, FuncRequest 
const & cmd,
 
 string InsetArgument::contextMenuName() const
 {
-       if (decoration() == InsetLayout::CONGLOMERATE)
+       if (decoration() == InsetDecoration::CONGLOMERATE)
                return "context-argument-conglomerate";
        else
                return "context-argument";
@@ -302,12 +303,12 @@ ColorCode InsetArgument::labelColor() const {
 }
 
 
-InsetLayout::InsetDecoration InsetArgument::decoration() const
+InsetDecoration InsetArgument::decoration() const
 {
-       InsetLayout::InsetDecoration dec = getLayout().decoration();
+       InsetDecoration dec = getLayout().decoration();
        if (!decoration_.empty())
                dec = translateDecoration(decoration_);
-       return dec == InsetLayout::DEFAULT ? InsetLayout::CLASSIC : dec;
+       return dec == InsetDecoration::DEFAULT ? InsetDecoration::CLASSIC : dec;
 }
 
 
diff --git a/src/insets/InsetArgument.h b/src/insets/InsetArgument.h
index 1c63e5ccb3..2249f2f8e6 100644
--- a/src/insets/InsetArgument.h
+++ b/src/insets/InsetArgument.h
@@ -12,7 +12,7 @@
 #ifndef INSETARGUMENT_H
 #define INSETARGUMENT_H
 
-
+#include "FontInfo.h"
 #include "InsetCollapsible.h"
 
 
@@ -80,7 +80,7 @@ public:
        /// \name Public functions inherited from InsetCollapsible class
        //@{
        ///
-       InsetLayout::InsetDecoration decoration() const override;
+       InsetDecoration decoration() const override;
        ///
        FontInfo getFont() const override;
        ///
diff --git a/src/insets/InsetBranch.cpp b/src/insets/InsetBranch.cpp
index bb1a090621..c0d6bd31e2 100644
--- a/src/insets/InsetBranch.cpp
+++ b/src/insets/InsetBranch.cpp
@@ -111,7 +111,7 @@ docstring const InsetBranch::buttonLabel(BufferView const 
&) const
        if (inchild && master_selected != child_selected)
                symb += (child_selected ? tick : cross);
 
-       if (decoration() == InsetLayout::MINIMALISTIC)
+       if (decoration() == InsetDecoration::MINIMALISTIC)
                return symb + params_.branch;
 
        docstring s;
diff --git a/src/insets/InsetCollapsible.cpp b/src/insets/InsetCollapsible.cpp
index 58f45b5313..b027e6919a 100644
--- a/src/insets/InsetCollapsible.cpp
+++ b/src/insets/InsetCollapsible.cpp
@@ -86,7 +86,7 @@ InsetCollapsible::~InsetCollapsible()
 
 InsetCollapsible::CollapseStatus InsetCollapsible::status(BufferView const & 
bv) const
 {
-       if (decoration() == InsetLayout::CONGLOMERATE)
+       if (decoration() == InsetDecoration::CONGLOMERATE)
                return status_;
        return view_[&bv].auto_open_ ? Open : status_;
 }
@@ -95,21 +95,21 @@ InsetCollapsible::CollapseStatus 
InsetCollapsible::status(BufferView const & bv)
 InsetCollapsible::Geometry InsetCollapsible::geometry(BufferView const & bv) 
const
 {
        switch (decoration()) {
-       case InsetLayout::CLASSIC:
+       case InsetDecoration::CLASSIC:
                if (status(bv) == Open)
                        return view_[&bv].openinlined_ ? LeftButton : TopButton;
                return ButtonOnly;
 
-       case InsetLayout::MINIMALISTIC: {
+       case InsetDecoration::MINIMALISTIC: {
                return status(bv) == Open ?
                        (tempfile_ ? LeftButton : NoButton)
                        : ButtonOnly;
        }
 
-       case InsetLayout::CONGLOMERATE:
+       case InsetDecoration::CONGLOMERATE:
                return status(bv) == Open ? SubLabel : Corners ;
 
-       case InsetLayout::DEFAULT:
+       case InsetDecoration::DEFAULT:
                break; // this shouldn't happen
        }
 
@@ -263,6 +263,18 @@ bool InsetCollapsible::setMouseHover(BufferView const * 
bv, bool mouse_hover)
 }
 
 
+ColorCode InsetCollapsible::backgroundColor(PainterInfo const &) const
+{
+       return getLayout().bgcolor();
+}
+
+
+ColorCode InsetCollapsible::labelColor() const
+{
+       return getLayout().labelfont().color();
+}
+
+
 void InsetCollapsible::draw(PainterInfo & pi, int x, int y) const
 {
        BufferView const & bv = *pi.base.bv;
@@ -434,8 +446,8 @@ bool InsetCollapsible::editable() const
                return false;
        
        switch (decoration()) {
-       case InsetLayout::CLASSIC:
-       case InsetLayout::MINIMALISTIC:
+       case InsetDecoration::CLASSIC:
+       case InsetDecoration::MINIMALISTIC:
                return status_ == Open;
        default:
                return true;
@@ -684,7 +696,7 @@ docstring const InsetCollapsible::buttonLabel(BufferView 
const & bv) const
 {
        // U+1F512 LOCK
        docstring const locked = tempfile_ ? docstring(1, 0x1F512) : 
docstring();
-       if (decoration() == InsetLayout::MINIMALISTIC)
+       if (decoration() == InsetDecoration::MINIMALISTIC)
                return locked;
        // indicate changed content in label (#8645)
        // ✎ U+270E LOWER RIGHT PENCIL
@@ -707,10 +719,22 @@ void InsetCollapsible::setStatus(Cursor & cur, 
CollapseStatus status)
 }
 
 
-InsetLayout::InsetDecoration InsetCollapsible::decoration() const
+InsetDecoration InsetCollapsible::decoration() const
+{
+       InsetDecoration const dec = getLayout().decoration();
+       return dec == InsetDecoration::DEFAULT ? InsetDecoration::CLASSIC : dec;
+}
+
+
+FontInfo InsetCollapsible::getFont() const
+{
+       return getLayout().font();
+}
+
+
+FontInfo InsetCollapsible::getLabelfont() const
 {
-       InsetLayout::InsetDecoration const dec = getLayout().decoration();
-       return dec == InsetLayout::DEFAULT ? InsetLayout::CLASSIC : dec;
+       return getLayout().labelfont();
 }
 
 
@@ -719,7 +743,7 @@ string InsetCollapsible::contextMenu(BufferView const & bv, 
int x,
 {
        string context_menu = contextMenuName();
        string const it_context_menu = InsetText::contextMenuName();
-       if (decoration() == InsetLayout::CONGLOMERATE)
+       if (decoration() == InsetDecoration::CONGLOMERATE)
                return context_menu + ";" + it_context_menu;
 
        string const ic_context_menu = InsetCollapsible::contextMenuName();
@@ -739,7 +763,7 @@ string InsetCollapsible::contextMenu(BufferView const & bv, 
int x,
 
 string InsetCollapsible::contextMenuName() const
 {
-       if (decoration() == InsetLayout::CONGLOMERATE)
+       if (decoration() == InsetDecoration::CONGLOMERATE)
                return "context-conglomerate";
        else
                return "context-collapsible";
diff --git a/src/insets/InsetCollapsible.h b/src/insets/InsetCollapsible.h
index 55044b47de..e1405ace32 100644
--- a/src/insets/InsetCollapsible.h
+++ b/src/insets/InsetCollapsible.h
@@ -18,6 +18,8 @@
 
 #include "Box.h"
 
+#include "support/unique_ptr.h"
+
 #include <map>
 
 namespace lyx {
@@ -25,6 +27,8 @@ namespace lyx {
 class CursorSlice;
 class InsetLayout;
 
+enum class InsetDecoration : int;
+
 namespace support { class TempFile; }
 
 /** A collapsible text inset
@@ -120,11 +124,11 @@ public:
         */
 
        /// Default looks
-       virtual InsetLayout::InsetDecoration decoration() const;
+       virtual InsetDecoration decoration() const;
        /// Inset font
-       virtual FontInfo getFont() const { return getLayout().font(); }
+       virtual FontInfo getFont() const;
        /// Label font
-       virtual FontInfo getLabelfont() const { return getLayout().labelfont(); 
}
+       virtual FontInfo getLabelfont() const;
        ///
        enum Geometry {
                TopButton,
@@ -145,10 +149,9 @@ public:
        ///
        bool setMouseHover(BufferView const * bv, bool mouse_hover) const 
override;
        ///
-       ColorCode backgroundColor(PainterInfo const &) const override
-               { return getLayout().bgcolor(); }
+       ColorCode backgroundColor(PainterInfo const &) const override;
        ///
-       ColorCode labelColor() const override { return 
getLayout().labelfont().color(); }
+       ColorCode labelColor() const override;
        ///
        InsetCode lyxCode() const override { return COLLAPSIBLE_CODE; }
 
diff --git a/src/insets/InsetERT.cpp b/src/insets/InsetERT.cpp
index d7e6f8a9b3..f0c1f17771 100644
--- a/src/insets/InsetERT.cpp
+++ b/src/insets/InsetERT.cpp
@@ -16,12 +16,13 @@
 #include "Cursor.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
+#include "InsetLayout.h"
 #include "Language.h"
 #include "Lexer.h"
 #include "xml.h"
 #include "ParagraphParameters.h"
 #include "Paragraph.h"
-#include <output_docbook.h>
+#include "output_docbook.h"
 
 #include "support/docstream.h"
 #include "support/gettext.h"
@@ -170,9 +171,9 @@ docstring const InsetERT::buttonLabel(BufferView const & 
bv) const
 {
        // U+1F512 LOCK
        docstring const locked = tempfile_ ? docstring(1, 0x1F512) : 
docstring();
-       if (decoration() == InsetLayout::MINIMALISTIC)
+       if (decoration() == InsetDecoration::MINIMALISTIC)
                return locked;
-       if (decoration() == InsetLayout::CLASSIC)
+       if (decoration() == InsetDecoration::CLASSIC)
                return locked + (isOpen(bv) ? _("ERT") : getNewLabel(_("ERT")));
        return locked + getNewLabel(_("ERT"));
 }
diff --git a/src/insets/InsetFlex.cpp b/src/insets/InsetFlex.cpp
index c91d65ec37..4da349fd13 100644
--- a/src/insets/InsetFlex.cpp
+++ b/src/insets/InsetFlex.cpp
@@ -58,10 +58,10 @@ InsetLayout const & InsetFlex::getLayout() const
 }
 
 
-InsetLayout::InsetDecoration InsetFlex::decoration() const
+InsetDecoration InsetFlex::decoration() const
 {
-       InsetLayout::InsetDecoration const dec = getLayout().decoration();
-       return dec == InsetLayout::DEFAULT ? InsetLayout::CONGLOMERATE : dec;
+       InsetDecoration const dec = getLayout().decoration();
+       return dec == InsetDecoration::DEFAULT ? InsetDecoration::CONGLOMERATE 
: dec;
 }
 
 
@@ -97,11 +97,11 @@ bool InsetFlex::getStatus(Cursor & cur, FuncRequest const & 
cmd,
        case LFUN_INSET_DISSOLVE:
                if (!cmd.argument().empty()) {
                        InsetLayout const & il = getLayout();
-                       InsetLayout::InsetLyXType const type =
+                       InsetLyXType const type =
                                translateLyXType(to_utf8(cmd.argument()));
                        if (il.lyxtype() == type
                            || (il.name() == 
DocumentClass::plainInsetLayout().name()
-                                   && type == InsetLayout::CHARSTYLE)) {
+                                   && type == InsetLyXType::CHARSTYLE)) {
                                FuncRequest temp_cmd(LFUN_INSET_DISSOLVE);
                                return InsetCollapsible::getStatus(cur, 
temp_cmd, flag);
                        } else
@@ -120,12 +120,12 @@ void InsetFlex::doDispatch(Cursor & cur, FuncRequest & 
cmd)
        case LFUN_INSET_DISSOLVE:
                if (!cmd.argument().empty()) {
                        InsetLayout const & il = getLayout();
-                       InsetLayout::InsetLyXType const type =
+                       InsetLyXType const type =
                                translateLyXType(to_utf8(cmd.argument()));
 
                        if (il.lyxtype() == type
                            || (il.name() == 
DocumentClass::plainInsetLayout().name()
-                                   && type == InsetLayout::CHARSTYLE)) {
+                                   && type == InsetLyXType::CHARSTYLE)) {
                                FuncRequest temp_cmd(LFUN_INSET_DISSOLVE);
                                InsetCollapsible::doDispatch(cur, temp_cmd);
                        } else
diff --git a/src/insets/InsetFlex.h b/src/insets/InsetFlex.h
index a781fb8a76..527974adf6 100644
--- a/src/insets/InsetFlex.h
+++ b/src/insets/InsetFlex.h
@@ -15,6 +15,7 @@
 
 #include "InsetCollapsible.h"
 
+
 namespace lyx {
 
 /** The Flex inset, e.g., CharStyle, Custom inset or XML short element
@@ -31,7 +32,7 @@ public:
        ///
        InsetCode lyxCode() const override { return FLEX_CODE; }
        /// Default looks
-       InsetLayout::InsetDecoration decoration() const override;
+       InsetDecoration decoration() const override;
        ///
        void write(std::ostream &) const override;
        /// should paragraph indentation be omitted in any case?
diff --git a/src/insets/InsetIPAMacro.cpp b/src/insets/InsetIPAMacro.cpp
index 82f6c48e84..5d2035b559 100644
--- a/src/insets/InsetIPAMacro.cpp
+++ b/src/insets/InsetIPAMacro.cpp
@@ -16,9 +16,10 @@
 #include "BufferParams.h"
 #include "Dimension.h"
 #include "Encoding.h"
-#include "Font.h"
+#include "FontInfo.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
+#include "InsetLayout.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "MetricsInfo.h"
diff --git a/src/insets/InsetLayout.cpp b/src/insets/InsetLayout.cpp
index c5ed2daa86..0ff5c50ad4 100644
--- a/src/insets/InsetLayout.cpp
+++ b/src/insets/InsetLayout.cpp
@@ -32,28 +32,28 @@ using namespace lyx::support;
 
 namespace lyx {
 
-InsetLayout::InsetDecoration translateDecoration(std::string const & str)
+InsetDecoration translateDecoration(std::string const & str)
 {
        if (compare_ascii_no_case(str, "classic") == 0)
-               return InsetLayout::CLASSIC;
+               return InsetDecoration::CLASSIC;
        if (compare_ascii_no_case(str, "minimalistic") == 0)
-               return InsetLayout::MINIMALISTIC;
+               return InsetDecoration::MINIMALISTIC;
        if (compare_ascii_no_case(str, "conglomerate") == 0)
-               return InsetLayout::CONGLOMERATE;
-       return InsetLayout::DEFAULT;
+               return InsetDecoration::CONGLOMERATE;
+       return InsetDecoration::DEFAULT;
 }
 
 namespace {
 
-InsetLayout::InsetLaTeXType translateLaTeXType(std::string const & str)
+InsetLaTeXType translateLaTeXType(std::string const & str)
 {
        if (compare_ascii_no_case(str, "command") == 0)
-               return InsetLayout::COMMAND;
+               return InsetLaTeXType::COMMAND;
        if (compare_ascii_no_case(str, "environment") == 0)
-               return InsetLayout::ENVIRONMENT;
+               return InsetLaTeXType::ENVIRONMENT;
        if (compare_ascii_no_case(str, "none") == 0)
-               return InsetLayout::NOLATEXTYPE;
-       return InsetLayout::ILT_ERROR;
+               return InsetLaTeXType::NOLATEXTYPE;
+       return InsetLaTeXType::ILT_ERROR;
 }
 
 } // namespace
@@ -256,13 +256,13 @@ bool InsetLayout::read(Lexer & lex, TextClass const & 
tclass,
                        string lt;
                        lex >> lt;
                        lyxtype_ = translateLyXType(lt);
-                       if (lyxtype_  == NOLYXTYPE) {
+                       if (lyxtype_  == InsetLyXType::NOLYXTYPE) {
                                LYXERR0("Unknown LyXType `" << lt << "'.");
                                // this is not really a reason to abort
                                if (validating)
                                        return false;
                        }
-                       if (lyxtype_ == CHARSTYLE) {
+                       if (lyxtype_ == InsetLyXType::CHARSTYLE) {
                                // by default, charstyles force the plain layout
                                multipar_ = false;
                                forceplain_ = true;
@@ -273,7 +273,7 @@ bool InsetLayout::read(Lexer & lex, TextClass const & 
tclass,
                        string lt;
                        lex >> lt;
                        latextype_ = translateLaTeXType(lt);
-                       if (latextype_  == ILT_ERROR) {
+                       if (latextype_  == InsetLaTeXType::ILT_ERROR) {
                                LYXERR0("Unknown LaTeXType `" << lt << "'.");
                                // this is not really a reason to abort
                                if (validating)
@@ -599,17 +599,17 @@ bool InsetLayout::read(Lexer & lex, TextClass const & 
tclass,
 }
 
 
-InsetLayout::InsetLyXType translateLyXType(std::string const & str)
+InsetLyXType translateLyXType(std::string const & str)
 {
        if (compare_ascii_no_case(str, "charstyle") == 0)
-               return InsetLayout::CHARSTYLE;
+               return InsetLyXType::CHARSTYLE;
        if (compare_ascii_no_case(str, "custom") == 0)
-               return InsetLayout::CUSTOM;
+               return InsetLyXType::CUSTOM;
        if (compare_ascii_no_case(str, "end") == 0)
-               return InsetLayout::END;
+               return InsetLyXType::END;
        if (compare_ascii_no_case(str, "standard") == 0)
-               return InsetLayout::STANDARD;
-       return InsetLayout::NOLYXTYPE;
+               return InsetLyXType::STANDARD;
+       return InsetLyXType::NOLYXTYPE;
 }
 
 
diff --git a/src/insets/InsetLayout.h b/src/insets/InsetLayout.h
index 2b9fc02497..4958d364aa 100644
--- a/src/insets/InsetLayout.h
+++ b/src/insets/InsetLayout.h
@@ -27,34 +27,36 @@ namespace lyx {
 class Lexer;
 class TextClass;
 
+
+enum class InsetDecoration : int {
+       CLASSIC,
+       MINIMALISTIC,
+       CONGLOMERATE,
+       DEFAULT
+};
+
+enum class InsetLyXType : int {
+       NOLYXTYPE,
+       CHARSTYLE,
+       CUSTOM,
+       END,
+       STANDARD
+};
+
+enum class InsetLaTeXType : int {
+       NOLATEXTYPE,
+       COMMAND,
+       ENVIRONMENT,
+       ILT_ERROR
+};
+
+
 ///
 class InsetLayout {
 public:
        ///
        InsetLayout() { labelfont_.setColor(Color_error); }
        ///
-       enum InsetDecoration {
-               CLASSIC,
-               MINIMALISTIC,
-               CONGLOMERATE,
-               DEFAULT
-       };
-       ///
-       enum InsetLyXType {
-               NOLYXTYPE,
-               CHARSTYLE,
-               CUSTOM,
-               END,
-               STANDARD
-       };
-       ///
-       enum InsetLaTeXType {
-               NOLATEXTYPE,
-               COMMAND,
-               ENVIRONMENT,
-               ILT_ERROR
-       };
-       ///
        bool read(Lexer & lexrc, TextClass const & tclass,
                        bool validating = false);
        ///
@@ -246,7 +248,7 @@ private:
                * Values are 'charstyle', 'custom' (things that by default look 
like a
                * footnote), 'standard'.
                */
-       InsetLyXType lyxtype_ = STANDARD;
+       InsetLyXType lyxtype_ = InsetLyXType::STANDARD;
        ///
        docstring labelstring_ = from_ascii("UNDEFINED");
        ///
@@ -254,9 +256,9 @@ private:
        ///
        bool contentaslabel_ = false;
        ///
-       InsetDecoration decoration_ = DEFAULT;
+       InsetDecoration decoration_ = InsetDecoration::DEFAULT;
        ///
-       InsetLaTeXType latextype_ = NOLATEXTYPE;
+       InsetLaTeXType latextype_ = InsetLaTeXType::NOLATEXTYPE;
        ///
        std::string latexname_;
        ///
@@ -400,8 +402,8 @@ private:
 };
 
 ///
-InsetLayout::InsetLyXType translateLyXType(std::string const & str);
-InsetLayout::InsetDecoration translateDecoration(std::string const & str);
+InsetLyXType translateLyXType(std::string const & str);
+InsetDecoration translateDecoration(std::string const & str);
 
 } // namespace lyx
 
diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp
index 96b035ed12..e11de52af9 100644
--- a/src/insets/InsetListings.cpp
+++ b/src/insets/InsetListings.cpp
@@ -16,21 +16,19 @@
 #include "Buffer.h"
 #include "BufferView.h"
 #include "BufferParams.h"
-#include "Counters.h"
 #include "Cursor.h"
-#include "DispatchResult.h"
 #include "Encoding.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
 #include "InsetCaption.h"
 #include "InsetLabel.h"
+#include "InsetLayout.h"
 #include "Language.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "output_latex.h"
 #include "output_docbook.h"
 #include "output_xhtml.h"
-#include "TextClass.h"
 #include "TexRow.h"
 #include "texstream.h"
 
@@ -607,9 +605,9 @@ docstring const InsetListings::buttonLabel(BufferView const 
& bv) const
 {
        // FIXME UNICODE
        docstring const locked = tempfile_ ? docstring(1, 0x1F512) : 
docstring();
-       if (decoration() == InsetLayout::MINIMALISTIC)
+       if (decoration() == InsetDecoration::MINIMALISTIC)
                return locked;
-       if (decoration() == InsetLayout::CLASSIC)
+       if (decoration() == InsetDecoration::CLASSIC)
                return locked + (isOpen(bv) ? _("Listing") : 
getNewLabel(_("Listing")));
        return locked + getNewLabel(_("Listing"));
 }
diff --git a/src/insets/InsetNomencl.cpp b/src/insets/InsetNomencl.cpp
index e30131cadd..b0d678dded 100644
--- a/src/insets/InsetNomencl.cpp
+++ b/src/insets/InsetNomencl.cpp
@@ -22,6 +22,7 @@
 #include "Encoding.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
+#include "InsetLayout.h"
 #include "InsetList.h"
 #include "Language.h"
 #include "LaTeXFeatures.h"
diff --git a/src/insets/InsetNote.cpp b/src/insets/InsetNote.cpp
index 6108b838a6..28d8db18e5 100644
--- a/src/insets/InsetNote.cpp
+++ b/src/insets/InsetNote.cpp
@@ -19,16 +19,15 @@
 #include "BufferView.h"
 #include "ColorSet.h"
 #include "Cursor.h"
-#include "DispatchResult.h"
 #include "Exporter.h"
+#include "FontInfo.h"
 #include "FuncRequest.h"
 #include "FuncStatus.h"
+#include "InsetLayout.h"
 #include "LaTeXFeatures.h"
 #include "Lexer.h"
 #include "LyXRC.h"
 #include "output_docbook.h"
-#include "TextClass.h"
-#include "TocBackend.h"
 
 #include "support/debug.h"
 #include "support/docstream.h"
diff --git a/src/insets/InsetQuotes.h b/src/insets/InsetQuotes.h
index 4035e13916..d1f23e4fec 100644
--- a/src/insets/InsetQuotes.h
+++ b/src/insets/InsetQuotes.h
@@ -15,7 +15,7 @@
 
 #include "Inset.h"
 
-#include "support/docstring.h"
+#include <map>
 
 
 namespace lyx {
diff --git a/src/insets/InsetScript.h b/src/insets/InsetScript.h
index 424772cfb9..9eb80dbbd5 100644
--- a/src/insets/InsetScript.h
+++ b/src/insets/InsetScript.h
@@ -12,6 +12,7 @@
 #ifndef INSET_SCRIPT_H
 #define INSET_SCRIPT_H
 
+#include "FontInfo.h"
 #include "InsetText.h"
 
 
diff --git a/src/insets/InsetText.cpp b/src/insets/InsetText.cpp
index 8be79896ca..5c4d32c20c 100644
--- a/src/insets/InsetText.cpp
+++ b/src/insets/InsetText.cpp
@@ -10,6 +10,7 @@
 
 #include <config.h>
 
+#include "InsetLayout.h"
 #include "InsetText.h"
 
 #include "insets/InsetArgument.h"
@@ -469,7 +470,7 @@ void InsetText::latex(otexstream & os, OutputParams const & 
runparams) const
                os << breakln;
        bool needendgroup = false;
        if (!il.latexname().empty()) {
-               if (il.latextype() == InsetLayout::COMMAND) {
+               if (il.latextype() == InsetLaTeXType::COMMAND) {
                        // FIXME UNICODE
                        // FIXME \protect should only be used for fragile
                        //    commands, but we do not provide this information 
yet.
@@ -488,7 +489,7 @@ void InsetText::latex(otexstream & os, OutputParams const & 
runparams) const
                        if (!il.latexparam().empty())
                                os << from_utf8(il.latexparam());
                        os << '{';
-               } else if (il.latextype() == InsetLayout::ENVIRONMENT) {
+               } else if (il.latextype() == InsetLaTeXType::ENVIRONMENT) {
                        if (il.isDisplay())
                                os << breakln;
                        else
@@ -540,13 +541,13 @@ void InsetText::latex(otexstream & os, OutputParams const 
& runparams) const
                os << il.rightdelim();
 
        if (!il.latexname().empty()) {
-               if (il.latextype() == InsetLayout::COMMAND) {
+               if (il.latextype() == InsetLaTeXType::COMMAND) {
                        os << "}";
                        if (!il.postcommandargs().empty())
                                getArgs(os, runparams, true);
                        if (needendgroup)
                                os << "\\endgroup";
-               } else if (il.latextype() == InsetLayout::ENVIRONMENT) {
+               } else if (il.latextype() == InsetLaTeXType::ENVIRONMENT) {
                        // A comment environment doesn't need a % before \n\end
                        if (il.isDisplay() || runparams.inComment)
                                os << breakln;
@@ -924,6 +925,36 @@ bool InsetText::insetAllowed(InsetCode code) const
 }
 
 
+bool InsetText::allowSpellCheck() const
+{
+       return getLayout().spellcheck() && !getLayout().isPassThru();
+}
+
+
+bool InsetText::allowMultiPar() const
+{
+       return getLayout().isMultiPar();
+}
+
+
+bool InsetText::forcePlainLayout(idx_type) const
+{
+       return getLayout().forcePlainLayout();
+}
+
+
+bool InsetText::allowParagraphCustomization(idx_type) const
+{
+       return getLayout().allowParagraphCustomization();
+}
+
+
+bool InsetText::forceLocalFontSwitch() const
+{
+       return getLayout().forceLocalFontSwitch();
+}
+
+
 void InsetText::updateBuffer(ParIterator const & it, UpdateType utype, bool 
const deleted)
 {
        ParIterator it2 = it;
@@ -1245,7 +1276,7 @@ bool InsetText::needsCProtection(bool const maintext, 
bool const fragile) const
                return true;
 
        // Environments generally need cprotection in fragile context
-       if (fragile && getLayout().latextype() == InsetLayout::ENVIRONMENT)
+       if (fragile && getLayout().latextype() == InsetLaTeXType::ENVIRONMENT)
                return true;
 
        if (!getLayout().needsCProtect())
@@ -1253,7 +1284,7 @@ bool InsetText::needsCProtection(bool const maintext, 
bool const fragile) const
 
        // Environments and "no latex" types (e.g., knitr chunks)
        // need cprotection regardless the content
-       if (!maintext && getLayout().latextype() != InsetLayout::COMMAND)
+       if (!maintext && getLayout().latextype() != InsetLaTeXType::COMMAND)
                return true;
 
        // If the inset does not produce output (e.g. Note or Branch),
diff --git a/src/insets/InsetText.h b/src/insets/InsetText.h
index d571806ba6..455f19dfbe 100644
--- a/src/insets/InsetText.h
+++ b/src/insets/InsetText.h
@@ -17,6 +17,7 @@
 #include "ColorCode.h"
 #include "Text.h"
 
+
 namespace lyx {
 
 class CompletionList;
@@ -154,23 +155,20 @@ public:
        ///
        bool insetAllowed(InsetCode) const override;
        ///
-       bool allowSpellCheck() const override { return getLayout().spellcheck() 
&& !getLayout().isPassThru(); }
+       bool allowSpellCheck() const override;
        ///
        virtual bool isMacroScope() const { return false; }
        ///
-       bool allowMultiPar() const override { return getLayout().isMultiPar(); }
+       bool allowMultiPar() const override;
        ///
        bool isInTitle() const override { return intitle_context_; }
        ///
        /// should paragraphs be forced to use the empty layout?
-       bool forcePlainLayout(idx_type = 0) const override
-               { return getLayout().forcePlainLayout(); }
+       bool forcePlainLayout(idx_type = 0) const override;
        /// should the user be allowed to customize alignment, etc.?
-       bool allowParagraphCustomization(idx_type = 0) const override
-               { return getLayout().allowParagraphCustomization(); }
+       bool allowParagraphCustomization(idx_type = 0) const override;
        /// should paragraphs be forced to use a local font language switch?
-       bool forceLocalFontSwitch() const override
-               { return getLayout().forceLocalFontSwitch(); }
+       bool forceLocalFontSwitch() const override;
 
        /// Update the counters of this inset and of its contents
        void updateBuffer(ParIterator const &, UpdateType, bool const deleted = 
false) override;
diff --git a/src/mathed/InsetMathSize.h b/src/mathed/InsetMathSize.h
index 37fa003eb5..783e826439 100644
--- a/src/mathed/InsetMathSize.h
+++ b/src/mathed/InsetMathSize.h
@@ -12,6 +12,7 @@
 #ifndef MATHSIZEINSET_H
 #define MATHSIZEINSET_H
 
+#include "FontEnums.h"
 #include "InsetMathNest.h"
 
 
diff --git a/src/mathed/MathFactory.cpp b/src/mathed/MathFactory.cpp
index 28ed3df317..9a8ab05196 100644
--- a/src/mathed/MathFactory.cpp
+++ b/src/mathed/MathFactory.cpp
@@ -71,6 +71,7 @@
 #include "Buffer.h"
 #include "BufferParams.h"
 #include "Encoding.h"
+#include "FontInfo.h"
 #include "LyX.h" // use_gui
 
 #include <iomanip>
diff --git a/src/output_latex.h b/src/output_latex.h
index 65a41516e1..af40a86489 100644
--- a/src/output_latex.h
+++ b/src/output_latex.h
@@ -14,7 +14,6 @@
 
 #include <utility>
 
-#include "support/docstream.h"
 #include "Layout.h"
 #include "ParagraphList.h"
 
diff --git a/src/tex2lyx/tex2lyx.cpp b/src/tex2lyx/tex2lyx.cpp
index 810567c716..c996f5b1dd 100644
--- a/src/tex2lyx/tex2lyx.cpp
+++ b/src/tex2lyx/tex2lyx.cpp
@@ -22,7 +22,6 @@
 #include "LayoutModuleList.h"
 #include "ModuleList.h"
 #include "Preamble.h"
-#include "TextClass.h"
 
 #include "support/ConsoleApplication.h"
 #include "support/convert.h"
-- 
2.28.0.windows.1

From 2abb7a4d2b013704a0fc7e4c350375877a84bf6a Mon Sep 17 00:00:00 2001
From: Yuriy Skalko <yuriy.ska...@gmail.com>
Date: Thu, 3 Dec 2020 21:51:25 +0200
Subject: [PATCH 2/5] Use range-based for loops

---
 src/LaTeXFeatures.cpp | 51 ++++++++++++++++---------------------------
 1 file changed, 19 insertions(+), 32 deletions(-)

diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp
index 7c23a851ca..fdb1af1626 100644
--- a/src/LaTeXFeatures.cpp
+++ b/src/LaTeXFeatures.cpp
@@ -1229,14 +1229,10 @@ string const LaTeXFeatures::getPackageOptions() const
 {
        ostringstream packageopts;
        // Output all the package option stuff we have been asked to do.
-       map<string, string>::const_iterator it =
-               params_.documentClass().packageOptions().begin();
-       map<string, string>::const_iterator en =
-               params_.documentClass().packageOptions().end();
-       for (; it != en; ++it)
-               if (mustProvide(it->first))
-                       packageopts << "\\PassOptionsToPackage{" << it->second 
<< "}"
-                                << "{" << it->first << "}\n";
+       for (auto const & p : params_.documentClass().packageOptions())
+               if (mustProvide(p.first))
+                       packageopts << "\\PassOptionsToPackage{" << p.second << 
"}"
+                                << "{" << p.first << "}\n";
        return packageopts.str();
 }
 
@@ -1849,16 +1845,14 @@ docstring const LaTeXFeatures::getTClassPreamble() const
 
        tcpreamble << tclass.preamble();
 
-       list<docstring>::const_iterator cit = usedLayouts_.begin();
-       list<docstring>::const_iterator end = usedLayouts_.end();
-       for (; cit != end; ++cit)
+       for (docstring const & layout : usedLayouts_)
                // For InPreamble layouts, we output the preamble stuff earlier
                // (before the layouts). See Paragraph::Private::validate.
-               if (!tclass[*cit].inpreamble)
-                       tcpreamble << tclass[*cit].preamble();
+               if (!tclass[layout].inpreamble)
+                       tcpreamble << tclass[layout].preamble();
 
-       cit = usedInsetLayouts_.begin();
-       end = usedInsetLayouts_.end();
+       list<docstring>::const_iterator cit = usedInsetLayouts_.begin();
+       list<docstring>::const_iterator end = usedInsetLayouts_.end();
        TextClass::InsetLayouts const & ils = tclass.insetLayouts();
        for (; cit != end; ++cit) {
                TextClass::InsetLayouts::const_iterator it = ils.find(*cit);
@@ -1878,13 +1872,11 @@ docstring const LaTeXFeatures::getTClassHTMLPreamble() 
const
 
        tcpreamble << tclass.htmlpreamble();
 
-       list<docstring>::const_iterator cit = usedLayouts_.begin();
-       list<docstring>::const_iterator end = usedLayouts_.end();
-       for (; cit != end; ++cit)
-               tcpreamble << tclass[*cit].htmlpreamble();
+       for (docstring const & layout : usedLayouts_)
+               tcpreamble << tclass[layout].htmlpreamble();
 
-       cit = usedInsetLayouts_.begin();
-       end = usedInsetLayouts_.end();
+       list<docstring>::const_iterator cit = usedInsetLayouts_.begin();
+       list<docstring>::const_iterator end = usedInsetLayouts_.end();
        TextClass::InsetLayouts const & ils = tclass.insetLayouts();
        for (; cit != end; ++cit) {
                TextClass::InsetLayouts::const_iterator it = ils.find(*cit);
@@ -2215,10 +2207,8 @@ void LaTeXFeatures::getFloatDefinitions(otexstream & os) 
const
        // \newfloat{algorithm}{htbp}{loa}
        // \providecommand{\algorithmname}{Algorithm}
        // \floatname{algorithm}{\protect\algorithmname}
-       UsedFloats::const_iterator cit = usedFloats_.begin();
-       UsedFloats::const_iterator end = usedFloats_.end();
-       for (; cit != end; ++cit) {
-               Floating const & fl = floats.getType(cit->first);
+       for (auto const & cit : usedFloats_) {
+               Floating const & fl = floats.getType(cit.first);
 
                // For builtin floats we do nothing.
                if (fl.isPredefined())
@@ -2267,7 +2257,7 @@ void LaTeXFeatures::getFloatDefinitions(otexstream & os) 
const
                        // used several times, when the same style is still in
                        // effect. (Lgb)
                }
-               if (cit->second)
+               if (cit.second)
                        // The subfig package is loaded later
                        os << "\n\\AtBeginDocument{\\newsubfloat{" << 
from_ascii(fl.floattype()) << "}}\n";
        }
@@ -2312,13 +2302,10 @@ void LaTeXFeatures::expandMultiples()
 {
        for (Features::iterator it = features_.begin(); it != features_.end();) 
{
                if (contains(*it, ',')) {
-                       vector<string> const multiples = 
getVectorFromString(*it, ",");
-                       vector<string>::const_iterator const end = 
multiples.end();
-                       vector<string>::const_iterator itm = multiples.begin();
                        // Do nothing if any multiple is already required
-                       for (; itm != end; ++itm) {
-                               if (!isRequired(*itm))
-                                       require(*itm);
+                       for (string const & pkg : getVectorFromString(*it, 
",")) {
+                               if (!isRequired(pkg))
+                                       require(pkg);
                        }
                        features_.erase(it);
                        it = features_.begin();
-- 
2.28.0.windows.1

-- 
lyx-devel mailing list
lyx-devel@lists.lyx.org
http://lists.lyx.org/mailman/listinfo/lyx-devel

Reply via email to