commit d213b72978d74231df380d67648a45da168ea57d
Author: Juergen Spitzmueller <[email protected]>
Date:   Sat Jan 14 10:45:57 2023 +0100

    Introduce pkglist format
    
    This allows us to check and reconfigure if the pkglist format is not
    current
---
 lib/chkconfig.ltx     |    2 ++
 src/LaTeXPackages.cpp |   12 ++++++++++++
 2 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/lib/chkconfig.ltx b/lib/chkconfig.ltx
index d7c161c..ff95d46 100644
--- a/lib/chkconfig.ltx
+++ b/lib/chkconfig.ltx
@@ -185,6 +185,8 @@
 \newwrite{\layouts} \immediate\openout \layouts = textclass.lst.tmp
 \newwrite{\vars} \immediate\openout \vars = chkconfig.vars
 \newwrite{\packages} \immediate\openout \packages = packages.lst.tmp
+% Version of the packages list
+\immediate\write\packages{!!fileformat 2}
 
 \immediate\write\layouts{%
 # This file declares layouts and their associated definition files.^^J%
diff --git a/src/LaTeXPackages.cpp b/src/LaTeXPackages.cpp
index bee3055..e708df1 100644
--- a/src/LaTeXPackages.cpp
+++ b/src/LaTeXPackages.cpp
@@ -23,6 +23,7 @@
 #include "support/FileName.h"
 #include "support/filetools.h"
 #include "support/lstrings.h"
+#include "support/Package.h"
 
 
 using namespace std;
@@ -51,6 +52,7 @@ void LaTeXPackages::getAvailable()
        packages_.clear();
 
        bool finished = false;
+       string lstformat = "1";
        // Parse config-file
        while (lex.isOK() && !finished) {
                switch (lex.lex()) {
@@ -62,10 +64,20 @@ void LaTeXPackages::getAvailable()
                        // Parse optional version info
                        lex.eatLine();
                        string const v = trim(lex.getString());
+                       if (p == "!!fileformat") {
+                               lstformat = v;
+                               continue;
+                       }
                        packages_.insert(make_pair(p, v));
                }
                }
        }
+       // Check if the pkglist has current format.
+       // Reconfigure and re-parse if not.
+       if (lstformat != "2") {
+               package().reconfigureUserLyXDir("");
+               getAvailable();
+       }
 }
 
 
-- 
lyx-cvs mailing list
[email protected]
http://lists.lyx.org/mailman/listinfo/lyx-cvs

Reply via email to