The keytests were previously enabled by default if the necessary
dependencies were found. They require a GUI and mouse so can
sometimes be annoying. Further, they are not currently reliable.
They are thus now disabled by default.
is output when a branch is NOT activated. Fixes bug #7698.
At the moment, inversion is controlled through the branch settings
dialog. There is no provision for inserting inverted insets directly,
or for changing them from the context menu. Both of these could be
done, of course. The latter would need LFUN_BRANCH_TOGGLE_INVERTED.
With both Qt4 and Qt5, when using a click-to-focus policy, the first
attempt to paste a selection by middle mouse in an external application
which has no focus may fail. It is not clear why this succeeds for some
applications and fails for others, but refreshing the timestamp of the
selection request cures the issue. The cmake part is by Kornel.
See also this thread:
http://thread.gmane.org/gmane.editors.lyx.devel/162491
MSVC does not need a special flag to specify the standard. Using --std=c++14
produces a warning, but compilation succeeds, so the old code did mistakenly
choose --std=c++14 for MSVC.
Older gcc versions (e.g. the first one which has usable std::regex: gcc 4.9)
require the --std=c++11 flag to be set. Otherwise std::regex is not made
available. Therefore we need to keep the flag in the loop.
These files were aded with windows line ends before we did set the text=auto
attribute for all files in .gitattributes, and this caused phantom changes on
linux workspaces after .gitattributes was introduced.
Now these files appear with linux line ends on linux workspaces and with
windows line ends on windows workspaces, like all source files.
The external date inset was implemented as a demonstrator for external insets
in general. It was never intended for production code. Now that we have several
external insets defined we do not need the demonstrator anymore. This fixes
bugs #4398 and #9948.
This was dead code that did never work, and most of it was boilerplate that
you can steel in 15 minutes from any existing math inset. Apart from that it
did contain a pointer to InsetXYMatrix which would create the same problems
we saw with the macros.
XeTeX with TeX fonts is only safe with ASCII input encoding (see #9740)
and we therefore force "ascii" when exporting with XeTeX and 8-bit TeX-fonts.
However, "utf8-plain" is a "power-user" option, which allows to switch off LyX's
encoding of the LaTeX file:
keep this also for "XeTeX with TeX fonts".
The user is responsible to ensure all characters can be processed and are
correctly shown in the output. The provided test sample shows the problems
with this encoding without special measures (like loading fontspec in the
user-preamble or a document class).
Boost.Signals is deprecated. This fixes bug #9943.
The only thing left to do is to rewrite (or get rid of) the boost -mt test
in config/lyxinclude.m4 not to use signals anymore.
As discussed on the list. If no C++11 compiler is found configuration stops
with an error. There are now unneeded parts of boost, the will be removed in
a second commit.
For a suffixed version (with suffix 2.3) and installation dir (/usr/local)
the new paths are:
binary -> /usr/local/bin
system-lib -> /usr/local/share/lyx2.3
fonts -> /usr/local/fonts/truetype/lyx2.3
manuals -> /usr/local/man/man1
locales -> /usr/local/share/locale
tex -> /usr/local/texmf/tex/latex/lyx2.3
The essential hints came from Guillaume amd Jean-Marc at bug #8883.
Tested by comparing the output of
python generate_symbols_list.py `kpsewhich fontmath.ltx`
with lib/symbols.
Also read files with universal line endings and write files using native line
endings, so the script can also be used on windows without changing the line
endings.
The new functions parBottomSpaging and parTopSapcing return below/above each paragraph.
This allows to remove the TopBottomSpace argument and makes the code a
bit clearer.
Now that Row has a pit() member, it is possible to use it instead of passing an extra pit_type parameter to a function which already has access to a Row.
Change the various paint* helpers to take a single row element as argument.
Do not update x_ in the various paint* helpers. Constify them. Update x_ in paintText and paintOnlyInsets instead.
Remove an empty call to paintForeignMark in paintInset (the call did nothing since orig_x == x_ at this point).
It is actually easier to set the 20 pixels margin in redoParagraph, since it is not necessary to take newlines in account when deciding what is the real last row of the paragraph.
Moreover this solves the following bug (present in 2.1.x too): when the document ends with a newling, the bottom margin disappears.
Update PAINTING_ANALYSIS with new tasks.
* remove optional arguments to the helpers that use a FontInfo
* add a textwidth argument to the text() methods that are used by rowpainter.
Now textwidth is only computed if a null value was passed to the
text() method. This means that in the use case of rowpainter, no
textwidth needs to be computed.
On mingw-w64, long long (64bit wide) is larger than long (32bit wide).
Therefore we need some more specializations for string, docstring,
otextstream and << overloaded ostream functions. The configuration code
is by me, the source code changes by Shankar Giri Venkita Giri (bug 10053).
Lyx files converted from 2.1 to 2.2 contain parbeak and latexpar separators that
would not appear if the lyx file was written in 2.2 from scratch. The script
removes latexpar separators and transforms parbreak separators into plain
separators. Then it displays a diff of the resulting pdf files (requires
diffpdf) for manual control. All lyx files shipped with lyx should be updated in
this way. See #10068.
example usage:
cd lib/doc
../development/tools/separator-convert.sh Math.lyx
This is what the polib version does already. If a translation is marked
fuzzy then it is not used, so if the other file contains a non-fuzzy
translation we do not throw away useful information if we overtake it.
If the -o option is given, we may overwrite existing translations with
translations from the other .po file. In this case, we have to delete or set
the fuzzy flag accoring to the updated translation.
This is the same as the parbreak separator and is represented on screen
as the old parbreak. Old parbreak separators are converted to latexpar
separators when they are used for introducing blank lines in the
latex output rather than for separating environments.
Instead, parbreak separators are now represented on screen by a
double line. In essence, latexpar and parbreak separators produce
the same output but are represented differently on screen.
The context menu does not account for latexpar separators and only
"true" separators can be turned each into the other one.
The term LongTable has been deprecated and moreover the renaming makes the interface easier to the eye.
File format updated to 507. (conversion based on jamatos patch)
Layout format updated to 60.
tex2ylx tests updated.
Document EmbeddedObjects.lyx has been updated.
In collaboration with Günter Milde:
1.) Allow char ':' be part of a ctest-label
2.) Eliminate redundant label naming and directory names
(The testnames should not repeat the directory name)
When updating to the latest TeX Live revision, these exports now
succeed.
Inspecting the differences between the "good" PDF and the "bad" PDF
(where the test failed) there are three differences, which can be
found on the printed page numbers 81 and 82 (PDF page numbers 91 and
92). The accented i in "lím" was printed incorrectly (and the
missing glyph was correctly detected). After the update the
character is printed correctly and there is no longer an error.
The package that caused the change is likely babel or babel-spanish.
You can see the log from the TeX Live update that caused the fix by
seeing the attachment to the message here:
https://www.mail-archive.com/search?l=mid&q=20160313015902.lny3g5aujh4c4aps%40scott-Za1510
It could happen that the variable was set in creating a previous test-case.
Some combinations in the controlling files (suspiciousTests, unrelibleTests, ...)
did not set this variable.
Nothing changes for already cached values.
With fresh build-dir and in 'AUTO'-mode we try to determine if the c++ compiler
is able to use this feature.
- fixed typos and updated translation
- support for Krita
- updated support for Gimp
- updated backup detection for TeXLive (generic detection always works independently)
- safeguard for a variable issue
* Increase LyX format
* New function convert_info_insets in lyx2lyx_tools.py
Use this function in the future for future updates of info insets
* Convert "inset-modify tabular" to "tabular-feature" in info insets
* Remove icon naming hack regarding "inset-modify tabular"
- build4-2010.bat: MSVC 2010 and Qt 4.8.7 (as backup)
- build5-2010.bat: MSVC 2010 and Qt 5.5.1
I tested both scripts thoroughly and the resulting LyX build is stable. Please feel free to modify them if something can be improved.
Increment LyX format to 504.
With this new parameter, the user can indicate that some other parameters that
are frequently switched must not be recorded in the file (as if they were a
setting specific to the user or transient, rather than a document setting). This
will play nicer with version control systems.
See the discussion, e.g.:
http://thread.gmane.org/gmane.editors.lyx.devel/157824/focus=157993 (third
solution mentioned)
TODO:
* The interface remains to be set up. We cannot change this setting from LyX
for now.
* If save_transient_properties is false, we should read the user setting as a
per-user-per-document (session) setting (e.g. like the cursor position).
* Once the above is done, we can treat \justification the same way (but it would
be even better if \justification was moved to lyxrc).
* sort and comment remaining unsorted filter patterns in suspiciousTests
(mostly just move to TODO and state what needs to be done).
* comment the patterns for achemso and Math,
(LuTeX incompatibility fixed in TeXLive 2016-01-07).
Simplify the logic for language package selection and make it more consistent:
Use polyglossia with non-TeX fonts (system fonts/Unicode fonts) for all
export flavours (XeTeX, LuaTeX, DVI-LuaTeX), if the language package setting
is "auto" and there is no language not supported by Babel and no package
providing Babel.
This solves some Babel-related autotest cases and leads to some new failures
due to the polyglossia language nesting problem.
* missing characters in linguistics example with system fonts
* language nesting problem in fr/linguistics example
* 110f505b63 solved one failure (Basque example file)
Works with system-fonts due to font substitution in the test-script.
TODO: set system fonts that work in the lyx source(s) to allow compilation
"by hand".
testcases_speed_lyx21 added to suspiciousTests
Handling unknown body token: `\begin_manifest'at line ...
Literate_lyx16 and noweb2lyx_lyx16 added to ignoredTests
Plenty of warnings (~ 390)
New sublabels LyXBug, ERT.
Renamed sublabel TeXLimit to TeXissue.
More sorting and unification of regular expressions.
Removing double entries.
Fixes for some expressions (eu_UserGuide_pdf, examples/ja/(knitr|lilypond|sweave))
Since the stop condition is that the last two consecutive created
files are identical, we do not need to check the last file.
Also checking for load of the created files is not needed, because
exporting the previous file implicitly loads too.
Exporting to some previous lyx format:
Inside the loop
Stop at export with errors/warnings
Stop if exported file not loadable
Stop if exported file identical to previous exported file (OK case)
This is done through creating MD5SUM
We test here, if any \end_{somethig} matches \begin_{something}.
Exeptions are \end_index and \end_branch ATM, they should
match \index and \branch respectively.
Also added new testfile.
Remove patterns matching tests now ignored (CJK/Korean, latex8).
Move patterns matching documents in the attic under new sublabel.
Add more verbose comments.
Comment by Günter Milde:
Actually, *all* Spanish manuals either fail or have wrong output with
Unicode TeX engines and 8-bit fonts. The reason is known: a bug in Babel
that uses utf8 strings whenever Xe- or LuaTeX is detected.
Always-Babel now set in the example document.
Adapted the autotest categorization:
* fails for some developers (why?)
* wrong output with pdflatex/LuaTeX and DVI (missing landscape slides).
he.po in branch contains a number of translations where the translation is
identical with the original text (e.g. for encoding names) which look suspicios
to me. Therefore I did not want to merge these and leave the decision to the
translator. No information is lost, since these "translations" can easily be
recreated from the original texts by copy-paste.
Previously all labels got the depth '7' while processing 'suspiciousTestss'.
The depth is used to sort how our labels are used to build a test-label.
Say a test gets label a, b, and c, with depth 3, 8 and 2.
The constructed test-label will be "b🅰️c"
For new (to be implemented) 'reason-labels' it is more convenient to assign them higher values.
suspiciousTests: Remove Tutorial from the regex
suspendedTests: Explicit list of languages needed
ignoredTests: Language-string is separated from other strings only by '/'. '|', '_', '(' and ')'
This is useful if you know that the translation of a particular language has
not been updated at all in master, but the stable version has been worked on.
Some characters (like ") are escaped in .po files. These are handled correctly
by polib, but the self written parser did not yet take them into account.
We need to remove the #~ prefix of each line, since it is re-added after
wrapping, and because otherwise the comparison with entries from polib
does not work.
Now it is possible to specify the target directory, and the command line syntax
follows the standard rules: It uses options for optional arguments, and one
positional argument for the single required argument.
LyXMacros.cmake: Overseen the macro 'setmarkedtestlabel()' which added it automatically
if the test was to invert the test result.
ExportTests.cmake: Correct label handling
Surprisingly I could not find a tool that merges updated translations into a
.po file in a way that
a) merges only missing translations (does not overwrite existing ones)
b) produces a minimal diff so that there is a chance to manually check the result
Therefore I wrote my own. You can use it for a single language
python development/tools/mergepo.py ../lyx-2.1/po fr
or for all languages:
python development/tools/mergepo.py ../lyx-2.1/po
The python code is not the most elegant one, but it works. What is missing is
a command line switch to merge changed translations as well. This is useful
for languages that have not yet received any translation update in the
development branch, only in the stable branch: In this case we know that
translations that are not identical in both branches should be overtaken from
the stabkle one.
This works around a limitation of the test machinery, which never switches
TeX fonts on for format that need that, it only switches TeX fonts off for
formats needing it.
Thanks to Kornel we do now have the infrastructure for running dedicated
export tests. This is the first one, showing a language nesting bug which is
already in 2.1. It is inverted for now, but this will hopefully change soon.
- also remove support metafile2eps because:
- it is outdated
- unnecessary third-party program since ImageMagick can do this too
- needs unnecessarily installation time
and introduce sublabels
Sublabels section in *.Tests starts with 'Sublabel: name'
and is valid until start of a new sublabel.
'name' contains only ascii characters [a-z]+
The files will be locatet in the build-directory "Testing/Temporary" as
LastFailedAccessibleURLS.log
LastFailedInaccessibleURLS.log
LastFailedKnownInvalidURLS.log
To test all export use 'ctest -L export'. This is unchanged.
The following lists directories and assigned sub-label
lib/doc: manuals
lib/templates: templates
lib/examples: examples
development/mathmacro: mathmacros
autotests: autotests
Now
'ctest -L export' should be without errors
If there _are_ errors, the appropriate test should go to nonstandardTests
'ctest -L reverted' should be without errors
If there _are_ errors, the appropriate test should go to nonstandardTests
'ctest -L nonstandard'
Tests here may, or may not fail. Depends of installed tex extensions
All comments in revertedTests comes from Günter Milde
Non standard test is new. It should collect all tests
which may not work because of some missing non-standard
tex package or some exotic system font.
texindy requires some more Perl and unfortunately the path tho the perl.exe in Windows' PATh environment variable.
The new EnvVarUpdate.nsh contains a function to modify Windows environment variables easily.
Thanks Scott for the idea to modify the document. This seems to work, but I am
not surer whether it is safe in all cases, so better warn if this is used.
Also MacOSX ReadMe files. Note that a few lib/doc files are
also "updated" because trailing spaces are removed, but their file
formats are the same because they were recently updated at 83672113.
I did "git checkout LFUNs.lyx" because this file is generated
automatically and has a special header.
gen_lfuns.py does now produce the current file format, and and LFUNs.lyx was
re-created with the updated script.
There is one difference if you compare this version of LFUNs.lyx with the old
version updated by lyx2lyx: All occurences of LyX, TeX etc. in the lfun
descriptions are no longer output as logos. I do consider this as a feature,
since the old version did also output the TeX part of BibTeX as a logo, as well
as places where the names were part of some syntax, e.g. lyx::LyXRC::LyXRCTags.
lyx2lyx did not yet know about /systemlyxdir/ and set \origin to the path
where my git tree lives instead. This path is not usable except on my machine,
so better write something more usable instead.
This is a special command line switch of lyx2lyx, so it does not interfere
with normal usage. I did not try to deduce the systemlyxdir from lyx2lyx to
be on the safe side.
This is one part of bug 9744: If you toggle between TeX fonts and non-TeX
fonts, the settings of the other choice are no longer thrown away, but stored
and re-activated if you switch back. Most parts of the patch are purely
mechanical (duplicating some BufferParams members), the only non-mechanical
change is in the GUI logic.
The file was updated to format 14 in fc22ba16 but the format line
was missing. A missing format line is interpreted as format 0, I
believe, which could lead to incorrect conversion to later formats.
All dvi_texF and pdf5_texF testcases are nov candidates for being suspended.
After commit 279d084, now export/.*/Math_(dvi3|pdf5)_texF fails,
therefore the tests are also inverted.
This file holds regular expression to select which of the inverted
export test cases will be suspended.
These tests will not be executed with the call 'ctest -L export'.
These exports correctly fail now that we've switched to polyglossia.
Although they compiled without error with babel, the resulting PDFs
had gibberish.
I believe these tests were fixed by TeX Live updates.
Comparing the log files for a system where the tests fail with a
system where the tests pass, below are some of the differences
between the "good" and "bad" logs:
bad:
LaTeX2e <2015/01/01>
Babel <3.9l>
Package: fontspec 2015/03/14 v2.4c
Package: expl3 2015/03/01 v5547 L3 programming layer
good:
LaTeX2e <2015/01/01> patch level 2
Babel <3.9m>
Package: fontspec 2015/07/22 v2.4d
Package: expl3 2015/07/30 v5724 L3 programming layer
Many of our documents have babel-specific preamble code. By putting
this code in a \@ifpackageloaded{babel}{}{} conditional, XeTeX and
LuaTeX compilation with polyglossia now works. This fixes some
LuaTeX tests that were broken by edd37de8 and also allows us to
uninvert some XeTeX tests.
Note that in some of the files although the preambles were fixed to
allow for polyglossia, they still do not compile without errors:
es/Math.lyx
es/Customization.lyx
de/Customization.lyx
Similar fixes might be desired in other manuals but these at least
fix regressions in the tests.
PolyglossiaOpts are case-sensitive so "latin" must be changed to
"Latin". Without this change, compiling examples/sr/Braille.lyx
with LuaTeX and system fonts gives the following error:
Package Polyglossia Error: Unknown script `latin' for Serbian
language
Many of our Spanish documents use babel-specific features in the
documents, e.g. to write "sin" in Spanish ("sen"). Because babel
seems to have good support for Spanish, I am setting the "Always
babel" for the manuals.
This fixes several LuaTeX tests with non-TeX fonts. A XeTeX test is
also reverted accordingly.
We already have a CoordCache of insets dimensions. It is not necessary
to store the same information in two places.
Give a name to CoordCache tables types to improve code readability.
Remove ParagraphMetrics::singleWidth, which is not used anymore.
- there are some new packages required by LyX's supported document classes and example files
(this list is only used when LyX is installed the first time on a PC together with MiKTeX to shorten the installation time)
This is a work in progress intended to start collective work towards improving the performance of our painting process.
The intent is to make it a living document that is updated as code evolves.
- the long awaited MiKTeX installer is available, this fixes many installation errors in LyX is installed for the first time (I will provide a new installer build as soon as I find more time)
Being able to compile document with zipped .eps files was a useful feature of
the graphicxs package 20 years ago, but the LyX support is no longer relevant:
- The flag is ignored if preview is on
- If pdflatex is used then uncompressing happens during the compilation anyway
- If set, the flag prevents LyX from issuing proper error messages if
something with the image is wrong
- For hard disk capacities from 20 years ago not uncompressing is a useful
feature, but for current hard disk capacities it does not matter
- The external inset does not have it, and if we want to merge both insets
one day we would need to implement it there, which is even more difficult
than in InsetGraphics
We do not currently have any Arabic documents, but when we do, these
fonts will be used for the tests that use system fonts.
They can be installed on Debian-type systems from the
'fonts-sil-scheherazade' package.
Since lyX 2.0 we support to use the in_preamble tag. This allows to support more commands. For an unknown reason I forgot the jss.layout when I updated the other layouts once.
Fileformat change
The general problem is that Acrobat opens PDF files with write access so that PDF files cannot be modified externally by LyX/LaTeX.
The old pdfview used the programs pdfopen and pdfclose to open and close PDF files in Acrobat and it additionally closed and opened the PDF whenever it was changed (to simulate LyX's update button).
Since Acrobat DC (aka Acrobat 15) it is no longer possible to close PDF files in Acrobat. Due to changes in the Acrobat API also the pdfopen program can no longer be used.
Besides this the approach of updating the PDF whenever it changed was always a hack that often killed Acrobat. The reason is that one cannot immediately update the PDF view if the PDF is changed because depending on the size LaTeX needs up to several seconds to generate the PDF. If the PDF is opened while TeX is still creating is one get error messages from Acrobat Acrobat must be restarted - very annoying. During the years I experimented with a wait time to minimize these problems but of course it can never be solved.
The new pdfview version uses a completely different approach:
- it checks if the PDF is opened by Acrobat by reading the window name. If it is found this program windows will be closed. So Acrobat is not ended and other opened PDF files stay opened.
- to update the PDF view from within LyX one has to press the view button, not the update button. Only this way we know that TeX is ready and the PDF can be opened by Acrobat with write permissions.
The math parser could not handle multicolumn grids. This is a problem because
there is no true ERT in math (everything is parsed).
Now multicolumn cells are parsed correctly. The display is also somewhat OK,
but apart from that any multicolumn related UI is missing. Since the file
format change is now done the UI can be added at any later point. The most
important part of bug 396 is now fixed: tex2lyx does not create invalid .lyx
files anymore for formulas containing \multicolumn.
I updated the tex2lyx test cases that produce correct output. tex2lyx does
still produce invalid output for the test cases which are not updated because
of the previous format change.
The "save-as" part of the bug is fixed by extending the \textclass tag
such that, if a local layout file is used, its path relative to the
document directory is now stored together with the name. If a relative
path cannot be used, an absolute one is used but, in this case, the
document is not usable on a different platform.
The "copy" part is fixed by introducing a new \origin tag, which is
written when the file is saved. This tag stores the absolute path of
the document directory. If the document is manually copied to a
different location, the local layout file is retrivied by using
\origin (which is only updated on save).
This new tag may prove useful also for locating other files when the
document is manually moved to a different directory.
As in the original implementation the files needed for the layout
(for example, a latex class) had to be in the same directory as the
layout file, this directory has also to be added to TEXINPUTS.
The GNU libstdc++ that ships witch gcc 5 can be used with the same ABI as
older versions, or with a new ABI which is conformant to the C++11 standard.
LyX did not build if the latter was used:
https://kojipkgs.fedoraproject.org//work/tasks/1267/9651267/build.log
This is now fixed by detecting the ABI version and disabling the wrong forward
declarations. At the same time, STD_STRING_USES_COW is switched off for the
C++11 ABI version, because the std::basic_string implementation is now C++11
conformant. Since the GNU libstdc++ can also used by other compilers such as
clang, we must not test for the compiler version.
The bug that caused these tests to enter into infinite loops
(and have a memory leak) has been fixed. These tests now
pass on an updated TeX Live 2014 as well as the current TeX
Live 2015 pretest.
One of the tests is also disabled for es/Math.lyx. However,
the other test passes for es/Math.lyx. To reproduce,
open fr/Math.lyx, click "Use non-TeX fonts", and choose
e.g. "FreeSans" for the three fonts. Then view as PDF (LuaTeX).
I put a note to look into why this one fails.
This is the rersult of a discussion on the list. Now all special characters
have meaningful names, and it is clear that the LyX file syntax is not LaTeX.
According to fix#9432, Scott found a new crash
1. start a new LyX document, english GUI
2. alt+m f to create a fraction
3. alt+m r to insert a root
4. undo
Recent versions of the cygwin X11 server come with a startup script
that explicitly uses '-nolisten tcp' for improved security. This means
that mentioning a host part in the DISPLAY variable precludes correct
operation. So, leave blank the host part such that only local connections
are attempted. Even if a user can override this setting in the own
~/.lyxprofile, novice users (and even experienced ones, at first) would be
probably confused by the "Error: Can't open display: localhost:0" message
and thus it is better to make this work out of the box.
Previously, LyX did replace some words with typeset logos, and there was no
way to prvent this except putting them, in ERT (bug #4752). Now we have
special insets for these words, and standard text is left alone.
Previously, consecutive dashes in .lyx files were combined to endash and emdash
in some cases, and in other cases they were output as is. This made the code
complicated, and resulted in inconsitencies ((bug #3647).
Now, a dash in a .lyx file is always a dash in the output, for all flavours.
The special handling is moved to the input side, so that you still get an
endash if you type two hyphens. If needed, this can be changed or made
customizable without the need to update the file format again. Many thanks
for the fruitful mailing list dicsussion, which contributed significantly to
the final version.
- the installer now re-synchronize MiKTeX's package database before installing or updating LaTeX-packages. This assures that new packages and renamed packages can automatically be installed when they are missing (fixes bug #9370)
- update the list of LaTeX packages that have to be installed when LyX is installed via the bundle installer for the first time on a PC
- add support for Turkish spell-checking
As discussed on the list. We don't need it anymore, either we have a modern
compiler that supports C++11, or we fall back to boost. I kept and adjusted
the regex #define, since we cannot use std regex completely yet.
The old detection did only work if CFLAGS contained -std=c++11, since ciso646
was only included for __cplusplus > 199711.
Thanks to Koernel for the cmake part.
This makes the script usable on windows and speeds it up by an order of
magnitude, since no new process needs to be forked for each layout file.
It also does not conevrt .old files again.