[LyX/master] Fix preview with a nested preview not being shown (#10795)

2018-01-05 Thread Scott Kostyshak
commit 94c65074e029937b549f5ed5af1001fadbe408be
Author: Guillaume MM 
Date:   Wed Jan 3 19:58:50 2018 +0100

Fix preview with a nested preview not being shown (#10795)

Regression at db581113.
---
 src/graphics/PreviewLoader.cpp |9 -
 1 files changed, 4 insertions(+), 5 deletions(-)

diff --git a/src/graphics/PreviewLoader.cpp b/src/graphics/PreviewLoader.cpp
index 22b0f23..ac14fbb 100644
--- a/src/graphics/PreviewLoader.cpp
+++ b/src/graphics/PreviewLoader.cpp
@@ -239,7 +239,7 @@ private:
/// We don't own this
static lyx::Converter const * pconverter_;
 
-   signals2::scoped_connection connection_;
+   Trackable trackable_;
 };
 
 
@@ -738,10 +738,9 @@ void PreviewLoader::Impl::startLoading(bool wait)
 
// Initiate the conversion from LaTeX to bitmap images files.
ForkedCall::sigPtr convert_ptr = make_shared();
-   // This is a scoped connection
-   connection_ = convert_ptr->connect([this](pid_t pid, int retval){
-   finishedGenerating(pid, retval);
-   });
+   convert_ptr->connect(ForkedProcess::slot([this](pid_t pid, int retval){
+   finishedGenerating(pid, retval);
+   }).track_foreign(trackable_.p()));
 
ForkedCall call(buffer_.filePath());
int ret = call.startScript(command, convert_ptr);


[LyX/master] * cs.po

2018-01-05 Thread Pavel Sanda
commit 78882517295105879cc4a9399357171d3a3897be
Author: Pavel Sanda 
Date:   Fri Jan 5 23:42:03 2018 +0100

* cs.po
---
 po/cs.po |  250 +-
 1 files changed, 102 insertions(+), 148 deletions(-)

diff --git a/po/cs.po b/po/cs.po
index 8cf6106..c3aa09b 100644
--- a/po/cs.po
+++ b/po/cs.po
@@ -4970,18 +4970,16 @@ msgid "Bet&ween rows:"
 msgstr "&Mezi řádky:"
 
 #: src/frontends/qt4/ui/TabularUi.ui:1304
-#, fuzzy
 msgid "&Multi-page table"
-msgstr "Otočit tabulku"
+msgstr "&Vícestranná tabulka"
 
 #: src/frontends/qt4/ui/TabularUi.ui:1310
 msgid "Select for tables that span multiple pages"
 msgstr "Použít pro tabulky rozsahem na více stran"
 
 #: src/frontends/qt4/ui/TabularUi.ui:1313
-#, fuzzy
 msgid "&Use multi-page table"
-msgstr "Použít &dlouhou tabulku"
+msgstr "Použít ví&cestrannou tabulku"
 
 #: src/frontends/qt4/ui/TabularUi.ui:1323
 msgid "Row settings"
@@ -5082,14 +5080,12 @@ msgid "Page &break on current row"
 msgstr "Zalo&m stranu na aktuálním řádku"
 
 #: src/frontends/qt4/ui/TabularUi.ui:1540
-#, fuzzy
 msgid "Horizontal alignment of the multi-page table"
-msgstr "Horizontální zarovnání pro dlouhou tabulku"
+msgstr "Horizontální zarovnání pro vícestrannou tabulku"
 
 #: src/frontends/qt4/ui/TabularUi.ui:1543
-#, fuzzy
 msgid "Multi-page table alignment"
-msgstr "Zarovnání dlouhé tabulky"
+msgstr "Zarovnání vícestranné tabulky"
 
 #: src/frontends/qt4/ui/TexinfoUi.ui:74
 msgid "Close this dialog"
@@ -5130,14 +5126,12 @@ msgid "BibTeX databases"
 msgstr "Databáze BibTeX-u"
 
 #: src/frontends/qt4/ui/TexinfoUi.ui:185
-#, fuzzy
 msgid "Biblatex bibliography styles"
-msgstr "Styl bibliografie"
+msgstr "Styl bibliografie Biblatex-u"
 
 #: src/frontends/qt4/ui/TexinfoUi.ui:190
-#, fuzzy
 msgid "Biblatex citation styles"
-msgstr "Natbib citační styl pro použití"
+msgstr "Citační styl Biblatex-u"
 
 #: src/frontends/qt4/ui/TexinfoUi.ui:214
 msgid "Toggles view of the file list"
@@ -20247,38 +20241,32 @@ msgid "Next note"
 msgstr "Další poznámka"
 
 #: lib/ui/stdtoolbars.inc:249
-#, fuzzy
 msgid "LyX Documentation Tools"
-msgstr "Dokumenty LyX-u (*.lyx)"
+msgstr "Nástroje dokumentace LyX-u"
 
 #: lib/ui/stdtoolbars.inc:250 src/insets/Inset.cpp:119
 msgid "Info"
 msgstr "Info"
 
 #: lib/ui/stdtoolbars.inc:251
-#, fuzzy
 msgid "Menu Separator"
-msgstr "Oddělovač výběru|O"
+msgstr "Oddělovač menu"
 
 #: lib/ui/stdtoolbars.inc:253
-#, fuzzy
 msgid "LyX Logo"
-msgstr "My Logo"
+msgstr "Logo LyX-u"
 
 #: lib/ui/stdtoolbars.inc:254
-#, fuzzy
 msgid "TeX Logo"
-msgstr "Log LaTeX-u"
+msgstr "Logo TeX-u"
 
 #: lib/ui/stdtoolbars.inc:255
-#, fuzzy
 msgid "LaTeX Logo"
-msgstr "Log LaTeX-u"
+msgstr "Logo LaTeX-u"
 
 #: lib/ui/stdtoolbars.inc:256
-#, fuzzy
 msgid "LaTeX2e Logo"
-msgstr "Log LaTeX-u"
+msgstr "Logo pro LaTeX2e"
 
 #: lib/ui/stdtoolbars.inc:259
 msgid "View Other Formats"
@@ -24512,7 +24500,6 @@ msgid "Spreadsheet"
 msgstr "Tabulka"
 
 #: lib/xtemplates/gnumeric.xtemplate:16
-#, fuzzy
 msgid ""
 "A spreadsheet made with Gnumeric, LibreOffice, OpenOffice or Excel.\n"
 "It imports as a multi-page table, so any length\n"
@@ -24521,19 +24508,17 @@ msgid ""
 "both for gnumeric and excel files.\n"
 msgstr ""
 "Tabulka vytvořená v prostředí Gnumeric, Libre/OpenOffice nebo Excelu.\n"
-"Import převádí do dlouhých tabulek (longtable), excesivní šířka "
-"neošetřována.\n"
+"Import převádí do vícestranných tabulek, takže je akceptována libovolná 
délka.\n"
+"Eexcesivní šířka neošetřována.\n"
 "Pro konverzi je potřebný program gnumeric.\n"
 
 #: lib/xtemplates/inkscape.xtemplate:38
-#, fuzzy
 msgid "Inkscape"
-msgstr "Na šířk&u"
+msgstr "Inkscape"
 
 #: lib/xtemplates/inkscape.xtemplate:39 lib/xtemplates/inkscape.xtemplate:44
-#, fuzzy
 msgid "Inkscape figure"
-msgstr "Vožit plovoucí obrázek"
+msgstr "Inkscape obrázek"
 
 #: lib/xtemplates/inkscape.xtemplate:41
 msgid ""
@@ -24541,6 +24526,9 @@ msgid ""
 "Note that using this template automatically uses the \n"
 "document text in the image (like with the Xfig template).\n"
 msgstr ""
+"Vložit obrázek pro inkscape.\n"
+"Použití této šablony automaticky používá text uvnitř obrázku\n"
+"(jako v případě šablony pro Xfig).\n"
 
 #: lib/xtemplates/lilypond.xtemplate:15 lib/xtemplates/lilypond.xtemplate:21
 msgid "Lilypond typeset music"
@@ -24614,9 +24602,8 @@ msgstr "Obrázky"
 
 #: lib/xtemplates/vector_graphics.xtemplate:15
 #: lib/xtemplates/vector_graphics.xtemplate:24
-#, fuzzy
 msgid "Vector graphics"
-msgstr "&Vektorový formát obrázku"
+msgstr "Vektorový obrázek"
 
 #: lib/xtemplates/vector_graphics.xtemplate:17
 msgid ""
@@ -24662,9 +24649,8 @@ msgid "sxd"
 msgstr "sxd"
 
 #: lib/configure.py:616
-#, fuzzy
 msgid "sxd|OpenDocument"
-msgstr "OpenDocument"
+msgstr "sxd|OpenDocument"
 
 #: lib/configure.py:619
 msgid "Grace"
@@ -24679,9 +24665,8 @@ msgid "SVG"
 msgstr "SVG"
 
 #: lib/configure.py:626
-#, fuzzy
 msgid "SVG (compressed)"
-msgstr "Komprimovat dokument|K"
+msgstr "SVG (komprimovaný)"
 
 #: lib/

[LyX/2.3.x] ru.po: fix msgmerge warnings

2018-01-05 Thread Uwe Stöhr
commit 6cdd0b9fe0871494d585dbe13d73ea1469a0b4a7
Author: Uwe Stöhr 
Date:   Fri Jan 5 21:52:37 2018 +0100

ru.po: fix msgmerge warnings
---
 po/ru.po |   11 ---
 1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/po/ru.po b/po/ru.po
index aa2635a..c2d3a15 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9364,19 +9364,16 @@ msgid "Enter the frame title here"
 msgstr ""
 
 #: lib/layouts/beamer.layout:487
-#, fuzzy
 msgid "PlainFrame"
-msgstr "BeginPlainFrame"
+msgstr ""
 
 #: lib/layouts/beamer.layout:489
-#, fuzzy
 msgid "Frame (plain)"
-msgstr "LaTeX (plain)"
+msgstr ""
 
 #: lib/layouts/beamer.layout:498
-#, fuzzy
 msgid "FragileFrame"
-msgstr "BeginFrame"
+msgstr ""
 
 #: lib/layouts/beamer.layout:500
 msgid "Frame (fragile)"
@@ -9384,7 +9381,7 @@ msgstr "Рамка (хрупкая)"
 
 #: lib/layouts/beamer.layout:509
 msgid "AgainFrame"
-msgstr "AgainFrame"
+msgstr ""
 
 #: lib/layouts/beamer.layout:515 lib/layouts/powerdot.layout:126
 #: lib/layouts/seminar.layout:111 lib/layouts/slides.layout:91


[LyX/master] ru.po: fix msgmerge warnings

2018-01-05 Thread Uwe Stöhr
commit e0fe49dda06711fe4ee8d7b14b4f8cfc99e8d830
Author: Uwe Stöhr 
Date:   Fri Jan 5 21:52:15 2018 +0100

ru.po: fix msgmerge warnings
---
 po/ru.po |   11 ---
 1 files changed, 4 insertions(+), 7 deletions(-)

diff --git a/po/ru.po b/po/ru.po
index aa2635a..c2d3a15 100644
--- a/po/ru.po
+++ b/po/ru.po
@@ -9364,19 +9364,16 @@ msgid "Enter the frame title here"
 msgstr ""
 
 #: lib/layouts/beamer.layout:487
-#, fuzzy
 msgid "PlainFrame"
-msgstr "BeginPlainFrame"
+msgstr ""
 
 #: lib/layouts/beamer.layout:489
-#, fuzzy
 msgid "Frame (plain)"
-msgstr "LaTeX (plain)"
+msgstr ""
 
 #: lib/layouts/beamer.layout:498
-#, fuzzy
 msgid "FragileFrame"
-msgstr "BeginFrame"
+msgstr ""
 
 #: lib/layouts/beamer.layout:500
 msgid "Frame (fragile)"
@@ -9384,7 +9381,7 @@ msgstr "Рамка (хрупкая)"
 
 #: lib/layouts/beamer.layout:509
 msgid "AgainFrame"
-msgstr "AgainFrame"
+msgstr ""
 
 #: lib/layouts/beamer.layout:515 lib/layouts/powerdot.layout:126
 #: lib/layouts/seminar.layout:111 lib/layouts/slides.layout:91


[LyX/master] Move the inPixels(MetricsBase) help from Length to MetricsBase.

2018-01-05 Thread Jean-Marc Lasgouttes
commit d77b05db80497cb0b5ce6ca1497165d968c234be
Author: Jean-Marc Lasgouttes 
Date:   Fri Jan 5 19:59:31 2018 +0100

Move the inPixels(MetricsBase) help from Length to MetricsBase.

A basic class like Length should not depend on something from
frontend.

This change allows to remove several dummy implementations of
theFontMetrics().
---
 src/Length.cpp|   16 
 src/Length.h  |8 
 src/MetricsInfo.cpp   |   14 ++
 src/MetricsInfo.h |8 
 src/insets/InsetBox.cpp   |   10 +-
 src/insets/InsetLine.cpp  |6 +++---
 src/insets/InsetSpace.cpp |3 +--
 src/insets/InsetTabular.cpp   |   10 +-
 src/mathed/InsetMathGrid.cpp  |2 +-
 src/mathed/InsetMathHull.cpp  |4 ++--
 src/mathed/InsetMathKern.cpp  |2 +-
 src/mathed/InsetMathSpace.cpp |2 +-
 src/mathed/MathSupport.cpp|2 +-
 src/support/tests/dummy_functions.cpp |   16 
 src/tests/dummy_functions.cpp |   16 
 src/tex2lyx/dummy_impl.cpp|   16 
 16 files changed, 42 insertions(+), 93 deletions(-)

diff --git a/src/Length.cpp b/src/Length.cpp
index 42188d8..a4d77f3 100644
--- a/src/Length.cpp
+++ b/src/Length.cpp
@@ -17,9 +17,6 @@
 
 #include "Length.h"
 #include "LyXRC.h"
-#include "MetricsInfo.h"
-
-#include "frontends/FontMetrics.h"
 
 #include "support/debug.h"
 #include "support/docstream.h"
@@ -309,19 +306,6 @@ double Length::inInch(double text_width, double em_width) 
const
 }
 
 
-int Length::inPixels(MetricsBase const & base) const
-{
-   FontInfo fi = base.font;
-   if (unit_ == Length::MU)
-   // mu is 1/18th of an em in the math symbol font
-   fi.setFamily(SYMBOL_FAMILY);
-   else
-   // Math style is only taken into account in the case of mu
-   fi.setStyle(LM_ST_TEXT);
-   return inPixels(base.textwidth, theFontMetrics(fi).em());
-}
-
-
 int Length::inBP() const
 {
// return any Length value as a one with
diff --git a/src/Length.h b/src/Length.h
index 8f192f8..aaf1923 100644
--- a/src/Length.h
+++ b/src/Length.h
@@ -20,8 +20,6 @@
 
 namespace lyx {
 
-class MetricsBase;
-
 // Solaris/x86 version 9 and earlier define these
 #undef PC
 #undef SP
@@ -98,12 +96,6 @@ public:
 */
int inPixels(int text_width, int em_width = 0) const;
 
-   /** return the on-screen size of this length
-*
-*  This version of the function uses the current inset width as
-*  width and the EM value of the current font.
-*/
-   int inPixels(MetricsBase const &) const;
/// return the value in Big Postscript points.
/// Caution: Inaccurate for em, ex, mu and percent units.
int inBP() const;
diff --git a/src/MetricsInfo.cpp b/src/MetricsInfo.cpp
index 60a0045..93782f9 100644
--- a/src/MetricsInfo.cpp
+++ b/src/MetricsInfo.cpp
@@ -19,6 +19,7 @@
 
 #include "mathed/MathSupport.h"
 
+#include "frontends/FontMetrics.h"
 #include "frontends/Painter.h"
 
 #include "support/docstring.h"
@@ -94,6 +95,19 @@ Changer MetricsBase::changeEnsureMath(Inset::mode_type mode)
 }
 
 
+int MetricsBase::inPixels(Length const & len) const
+{
+   FontInfo fi = font;
+   if (len.unit() == Length::MU)
+   // mu is 1/18th of an em in the math symbol font
+   fi.setFamily(SYMBOL_FAMILY);
+   else
+   // Math style is only taken into account in the case of mu
+   fi.setStyle(LM_ST_TEXT);
+   return len.inPixels(textwidth, theFontMetrics(fi).em());
+}
+
+
 /
 //
 // MetricsInfo
diff --git a/src/MetricsInfo.h b/src/MetricsInfo.h
index ff0b1c6..f6b9ea8 100644
--- a/src/MetricsInfo.h
+++ b/src/MetricsInfo.h
@@ -30,6 +30,7 @@ namespace lyx {
 
 namespace frontend { class Painter; }
 class BufferView;
+class Length;
 class MacroContext;
 
 
@@ -69,6 +70,13 @@ public:
int solidLineOffset() const { return solid_line_offset_; }
///
int dottedLineThickness() const { return dotted_line_thickness_; }
+   /** return the on-screen size of this length
+*
+*  This version of the function uses the current inset width as
+*  width and the EM value of the current font.
+*/
+   int inPixels(Length const & len) const;
+
 private:
int solid_line_thickness_;
int solid_line_offset_;
diff --git a/src/insets/InsetBox.cpp b/src/insets/InsetBox.cpp
index c593c4c..96edf43 100644
--- a/src/insets/InsetBox.cpp
+++ b/src/insets/InsetBox.cpp
@@ -182,15 +182,15 @@ bool InsetBox::allowMultiPar() const
 }
 
 
-void InsetBox::metrics(MetricsInfo & m, Dimension & dim) const
+void InsetBox::metrics(MetricsInfo & mi, Dimension & dim) const
 

[LyX/master] Update buffer when an inset or an INFO inset has bee inserted

2018-01-05 Thread Jean-Marc Lasgouttes
commit 806f40dbd4e861e3def104f26a8b70ed8c3ba386
Author: Jean-Marc Lasgouttes 
Date:   Fri Jan 5 19:29:45 2018 +0100

Update buffer when an inset or an INFO inset has bee inserted

This is important for info inset, since if updateBuffer needs to be
run in redoParagraph (for the macro code), crashes can happen.

Fixes bug #10944.
---
 src/Text3.cpp |2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/src/Text3.cpp b/src/Text3.cpp
index 0c5699b..7686687 100644
--- a/src/Text3.cpp
+++ b/src/Text3.cpp
@@ -1197,6 +1197,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
if (cur.selection())
cutSelection(cur, true, false);
cur.insert(inset);
+   cur.forceBufferUpdate();
if (inset->editable() && inset->asInsetText())
inset->edit(cur, true);
else
@@ -1934,6 +1935,7 @@ void Text::dispatch(Cursor & cur, FuncRequest & cmd)
break;
cur.recordUndo();
insertInset(cur, inset);
+   cur.forceBufferUpdate();
cur.posForward();
break;
}


[LyX/master] Account for Qt 5.10

2018-01-05 Thread Enrico Forestieri
commit 6253cc4c51e4e36125c33a8c427e27493435ddc8
Author: Enrico Forestieri 
Date:   Fri Jan 5 19:27:24 2018 +0100

Account for Qt 5.10

Fix regular sed expression in order to catch a second digit in the
Qt minor version number.
---
 config/qt4.m4 |2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/config/qt4.m4 b/config/qt4.m4
index 1cf557d..f53f243 100644
--- a/config/qt4.m4
+++ b/config/qt4.m4
@@ -211,7 +211,7 @@ AC_DEFUN([QT_DO_IT_ALL],
QT_FIND_TOOL([QT_RCC], [rcc])
 
dnl Safety check
-   mocqtver=`$QT_MOC -v 2>&1 | sed -e 
's/.*\([[0-9]]\.[[0-9]]\.[[0-9]]\).*/\1/'`
+   mocqtver=`$QT_MOC -v 2>&1 | sed -e 
's/.*\([[0-9]]\.[[0-9]]*\.[[0-9]]\).*/\1/'`
if test "x$mocqtver" != "x$QTLIB_VERSION"; then
LYX_WARNING([The found moc compiler is for Qt $mocqtver but the 
Qt library version is $QTLIB_VERSION.])
fi


[LyX/master] Remove 'premature optimization' that proved buggy

2018-01-05 Thread Jean-Marc Lasgouttes
commit 76f0a3dd4ee5c7958c6dea79628ef8c2ac2c59bd
Author: Jean-Marc Lasgouttes 
Date:   Wed Jan 3 18:28:55 2018 +0100

Remove 'premature optimization' that proved buggy

At some time it seemed like a good idea in breakRow() to return early
when the row was bound to be empty. It turns out that this creates two
symptoms:

* empty paragraphs will not have an end of paragraph marker

* since row width is not correctly computed in this case, caret ghosts
  can appear in master.

This commit removes the oprimization and replace the do {} while()
construct to a straightforward while() {}.

Related to bug #10952.
---
 src/TextMetrics.cpp |   12 ++--
 1 files changed, 2 insertions(+), 10 deletions(-)

diff --git a/src/TextMetrics.cpp b/src/TextMetrics.cpp
index 89d999d..3b4e1ff 100644
--- a/src/TextMetrics.cpp
+++ b/src/TextMetrics.cpp
@@ -844,11 +844,6 @@ bool TextMetrics::breakRow(Row & row, int const 
right_margin) const
// the width available for the row.
int const width = max_width_ - row.right_margin;
 
-   if (pos >= end || row.width() > width) {
-   row.endpos(end);
-   return need_new_row;
-   }
-
 #if 0
//FIXME: As long as leftMargin() is not correctly implemented for
// MARGIN_RIGHT_ADDRESS_BOX, we should also not do this here.
@@ -867,10 +862,7 @@ bool TextMetrics::breakRow(Row & row, int const 
right_margin) const
// or the end of the par, then build a representation of the row.
pos_type i = pos;
FontIterator fi = FontIterator(*this, par, row.pit(), pos);
-   do {
-   // this can happen for an empty row after a newline
-   if (i >= end)
-   break;
+   while (i < end && row.width() <= width) {
char_type c = par.getChar(i);
// The most special cases are handled first.
if (par.isInset(i)) {
@@ -952,7 +944,7 @@ bool TextMetrics::breakRow(Row & row, int const 
right_margin) const
 
++i;
++fi;
-   } while (i < end && row.width() <= width);
+   }
row.finalizeLast();
row.endpos(i);
 


[LyX/2.3.x] Minor re-ordering of the Insert menu

2018-01-05 Thread Juergen Spitzmueller
commit bd9c62d018981b99583ec19d0dc1524caba1761b
Author: Juergen Spitzmueller 
Date:   Fri Jan 5 11:08:23 2018 +0100

Minor re-ordering of the Insert menu

(cherry picked from commit 016393a0dd0a259655e0b3a44e8950f931d01486)
---
 lib/ui/stdmenus.inc |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/ui/stdmenus.inc b/lib/ui/stdmenus.inc
index e0a79ce..37c1067 100644
--- a/lib/ui/stdmenus.inc
+++ b/lib/ui/stdmenus.inc
@@ -392,13 +392,14 @@ Menuset
Item "Hyperlink...|k" "href-insert"
Item "Footnote|F" "footnote-insert"
Item "Marginal Note|M" "marginalnote-insert"
+   Item "Program Listing[[Menu]]" "listing-insert"
+   Item "Date" "date-insert"
Separator
EnvironmentSeparators
Separator
Arguments
+   Separator
Item "TeX Code" "ert-insert"
-   Item "Program Listing[[Menu]]" "listing-insert"
-   Item "Date" "date-insert"
Item "Preview|w" "preview-insert"
End
 


[LyX/master] Minor re-ordering of the Insert menu

2018-01-05 Thread Juergen Spitzmueller
commit 016393a0dd0a259655e0b3a44e8950f931d01486
Author: Juergen Spitzmueller 
Date:   Fri Jan 5 11:08:23 2018 +0100

Minor re-ordering of the Insert menu
---
 lib/ui/stdmenus.inc |5 +++--
 1 files changed, 3 insertions(+), 2 deletions(-)

diff --git a/lib/ui/stdmenus.inc b/lib/ui/stdmenus.inc
index fc0db39..57077ed 100644
--- a/lib/ui/stdmenus.inc
+++ b/lib/ui/stdmenus.inc
@@ -392,13 +392,14 @@ Menuset
Item "Hyperlink...|k" "href-insert"
Item "Footnote|F" "footnote-insert"
Item "Marginal Note|M" "marginalnote-insert"
+   Item "Program Listing[[Menu]]" "listing-insert"
+   Item "Date" "date-insert"
Separator
EnvironmentSeparators
Separator
Arguments
+   Separator
Item "TeX Code" "ert-insert"
-   Item "Program Listing[[Menu]]" "listing-insert"
-   Item "Date" "date-insert"
Item "Preview|w" "preview-insert"
End