commit 3cc3ff39a044a484faaaefbecf2a2937f7f102ef
Author: Enrico Forestieri <for...@lyx.org>
Date:   Thu Jun 8 04:24:29 2017 +0200

    Simplify preamble code when using listings
    
    Following an idea from Guillame.
---
 lib/layouts/stdinsets.inc    |   74 +++++++++++++++++++++++++++++------------
 src/insets/InsetListings.cpp |    9 +++++
 src/insets/InsetListings.h   |    2 +-
 src/insets/InsetTOC.cpp      |    8 +++-
 4 files changed, 68 insertions(+), 25 deletions(-)

diff --git a/lib/layouts/stdinsets.inc b/lib/layouts/stdinsets.inc
index 1ef2c52..6ee56de 100644
--- a/lib/layouts/stdinsets.inc
+++ b/lib/layouts/stdinsets.inc
@@ -274,21 +274,42 @@ InsetLayout TOC:Listings
        # We need the [[List of Listings]] context, since "Listings" is also
        # the name of the inset and translated differently.
        # "Listings[[List of Listings]]" is the name of the "List of listings"
-       # ("Listings" is the predefined english name) in listings.sty and
-       # minted.sty, so it must be used here as well.
+       # ("Listings" is the predefined english name) in listings.sty, so it
+       # must be used here as well.
        BabelPreamble
-               \ifx\minted\undefined
-               
\addto\captions$$lang{\renewcommand{\lstlistlistingname}{_(Listings[[List of 
Listings]])}}\else
-               
\addto\captions$$lang{\renewcommand{\listoflistingscaption}{_(Listings[[List of 
Listings]])}}\fi
+               
\addto\captions$$lang{\renewcommand{\lstlistlistingname}{_(Listings[[List of 
Listings]])}}
        EndBabelPreamble
-       # Either commands do not need to be defined in LangPreamble, since
-       # listings.sty or minted.sty do that already. However they need to be
-       # redefined in order to be used for non-english single-language
-       # documents.
+       # The command does not need to be defined in LangPreamble, since
+       # listings.sty does that already. However it needs to be redefined
+       # in order to be used for non-english single-language documents.
        LangPreamble
-               \ifx\minted\undefined
-               \renewcommand{\lstlistlistingname}{_(Listings[[List of 
Listings]])}\else
-               \renewcommand{\listoflistingscaption}{_(Listings[[List of 
Listings]])}\fi
+               \renewcommand{\lstlistlistingname}{_(Listings[[List of 
Listings]])}
+       EndLangPreamble
+       FixedWidthPreambleEncoding true
+  HTMLTag h2
+  HTMLStyle
+    div.lyxtoc-flat {
+      margin: 0em 0em 0em 1em;
+      font-size: large;
+      font-weight: normal;
+    }
+  EndHTMLStyle
+End
+
+InsetLayout TOC:MintedListings
+       # We need the [[List of Listings]] context, since "Listings" is also
+       # the name of the inset and translated differently.
+       # "Listings[[List of Listings]]" is the name of the "List of listings"
+       # ("Listings" is the predefined english name) in minted.sty so it
+       # must be used here as well.
+       BabelPreamble
+               
\addto\captions$$lang{\renewcommand{\listoflistingscaption}{_(Listings[[List of 
Listings]])}}
+       EndBabelPreamble
+       # The command does not need to be defined in LangPreamble, since
+       # minted.sty does that already. However it needs to be redefined
+       # in order to be used for non-english single-language documents.
+       LangPreamble
+               \renewcommand{\listoflistingscaption}{_(Listings[[List of 
Listings]])}
        EndLangPreamble
        FixedWidthPreambleEncoding true
   HTMLTag h2
@@ -303,18 +324,13 @@ End
 
 InsetLayout Include:Listings
        BabelPreamble
-               \ifx\minted\undefined
-               
\addto\captions$$lang{\renewcommand{\lstlistingname}{_(Listing)}}\else
-               
\addto\captions$$lang{\renewcommand{\listingscaption}{_(Listing)}}\fi
+               
\addto\captions$$lang{\renewcommand{\lstlistingname}{_(Listing)}}
        EndBabelPreamble
-       # Either commands do not need to be defined in LangPreamble, since
-       # listings.sty or minted.sty do that already. However they need to be
-       # redefined in order to be used for non-english single-language
-       # documents.
+       # The command does not need to be defined in LangPreamble, since
+       # listings.sty does that already. However it needs to be redefined
+       # in order to be used for non-english single-language documents.
        LangPreamble
-               \ifx\minted\undefined
-               \renewcommand{\lstlistingname}{_(Listing)}\else
-               \renewcommand{\listingscaption}{_(Listing)}\fi
+               \renewcommand{\lstlistingname}{_(Listing)}
        EndLangPreamble
        FixedWidthPreambleEncoding true
 End
@@ -356,6 +372,20 @@ InsetLayout Listings
        EndHTMLStyle
 End
 
+InsetLayout MintedListings
+       CopyStyle Listings
+       BabelPreamble
+               
\addto\captions$$lang{\renewcommand{\listingscaption}{_(Listing)}}
+       EndBabelPreamble
+       # The command does not need to be defined in LangPreamble, since
+       # minted.sty does that already. However it needs to be redefined
+       # in order to be used for non-english single-language documents.
+       LangPreamble
+               \renewcommand{\listingscaption}{_(Listing)}
+       EndLangPreamble
+       FixedWidthPreambleEncoding true
+End
+
 InsetLayout Branch
        Decoration            classic
        LabelFont
diff --git a/src/insets/InsetListings.cpp b/src/insets/InsetListings.cpp
index 033b72e..7be13bc 100644
--- a/src/insets/InsetListings.cpp
+++ b/src/insets/InsetListings.cpp
@@ -72,6 +72,15 @@ Inset::DisplayType InsetListings::display() const
 }
 
 
+docstring InsetListings::layoutName() const
+{
+       if (buffer().params().use_minted)
+               return from_ascii("MintedListings");
+       else
+               return from_ascii("Listings");
+}
+
+
 void InsetListings::write(ostream & os) const
 {
        os << "listings" << "\n";
diff --git a/src/insets/InsetListings.h b/src/insets/InsetListings.h
index 902fa04..aa46765 100644
--- a/src/insets/InsetListings.h
+++ b/src/insets/InsetListings.h
@@ -48,7 +48,7 @@ private:
        /// lstinline is inlined, normal listing is displayed
        DisplayType display() const;
        ///
-       docstring layoutName() const { return from_ascii("Listings"); }
+       docstring layoutName() const;
        ///
        void write(std::ostream & os) const;
        ///
diff --git a/src/insets/InsetTOC.cpp b/src/insets/InsetTOC.cpp
index dabfd21..d617b08 100644
--- a/src/insets/InsetTOC.cpp
+++ b/src/insets/InsetTOC.cpp
@@ -96,8 +96,12 @@ void InsetTOC::doDispatch(Cursor & cur, FuncRequest & cmd) {
 
 docstring InsetTOC::layoutName() const
 {
-       if (getCmdName() == "lstlistoflistings")
-               return from_ascii("TOC:Listings");
+       if (getCmdName() == "lstlistoflistings") {
+               if (buffer().params().use_minted)
+                       return from_ascii("TOC:MintedListings");
+               else
+                       return from_ascii("TOC:Listings");
+       }
        return from_ascii("TOC");
 }
 

Reply via email to