]> git.lyx.org Git - lyx.git/blobdiff - lib/chkconfig.ltx
Ignore whitelines on header. Fix reading the first body line.
[lyx.git] / lib / chkconfig.ltx
index 3e992653cf433e0d6833a9343ce41fe2673562d6..248935acf484cbdeeddaf0847c6f3356b6c47d64 100644 (file)
 
 % we do not want to stop on errors
 \nonstopmode\makeatletter
-% Have we been called from the configure script?
-\@ifundefined{srcdir}
- {\message{%
-**** WARNING: For proper results, you should not run this script directly.^^J%
-**** Please use the `configure' script.^^J}
-  \newcommand\srcdir{.}}
- {\def\input@path{{\srcdir/}}}
 
 %%% Some useful macros.
 %   Several commands are defined to test for packages:
 %    \AddLayout{<layout>} adds an entry for <layout> in textclass.lst
 %    \AddVariable{<name>}{<value>} creates a new variable chk_<name>,
 %      and gives it the value <value>.
-%    \TestDocClass[<file>]{<name>} tests whether <name>.cls (or <file>,
-%      if it is provided) exists and creates a new entry with
-%      \AddLayout if this is the case. Note that you will probably not
-%      need to use this directly, since the configure script generates
-%      the needed macro calls automatically.
+%    \TestDocClass{<name>}{<command>} if layout <name> has not already
+%      been tested for, execute <command>. Note that you will
+%      probably not need to use this directly, since the configure
+%      script generates the needed macro calls automatically.
 %    \TestPackage[<file>]{<name>} tests whether <name>.sty (or <file>,
 %      if it is provided) exists.
 %   Both commands call \AddVariable to give value 'yes' or 'no' to
   \fi}
 \newcommand{\TestPackage}[2][\default]{
   \TestItem[#1]{#2}{package}{sty}{\AddPackage{#2}}{}}
-\newcommand{\TestDocClass}[1]{
+\newcommand{\TestDocClass}[2]{
    \def\layoutname{#1}  % remember the name of the layout file
    \@ifundefined{layout@#1}
-     {\bgroup
-        \catcode`\#=9  % consider # as a space
-        \input{layouts/#1.layout}  % read the layout file
-      \egroup
+     {#2  % execute the command
       \global\@namedef{layout@#1}{}}
      {} % we have already tried this one.
 }
   \TestItem[#1]{\layoutname}{document class}{cls}
            {\AddLayout[\firstelement]{\layoutname}{#2}{true}}
            {\AddLayout[\firstelement]{\layoutname}{#2}{false}}
-  \expandafter\endinput
 }
 \newcommand{\DeclareLinuxDocClass}[2][\default]{
   \message{^^J\prefix checking for linuxdoc class \layoutname... }
      \AddLayout[#1]{\layoutname}{#2}{false}}
     {\message{yes^^J}
      \AddLayout[#1]{\layoutname}{#2}{true}}
-  \expandafter\endinput
 }
 % Only for compatibility. Will be removed later.
 \let\DeclareSGMLClass=\DeclareDocBookClass
      \AddLayout[#1]{\layoutname}{#2}{false}}
     {\message{yes^^J}
      \AddLayout[#1]{\layoutname}{#2}{true}}
-  \expandafter\endinput
 }
 
 % Stolen from article.cls
 \message{^^J\prefix checking for LaTeX version... \fmtversion}
 \AddVariable{fmtversion}{\fmtversion}
 
+%%% And now, the list of available languages
+% The trick is to know that \the\everyjob contains something like
+%  \typeout{LaTeX2e <2001/06/01>}
+%  \typeout{Babel <v3.7h> and hyphenation patterns for american, french, german, ngerman, nohyphenation, loaded.}
+% All we have to do is to extract the list from there:
+% (1) concatenate all the messages that are displayed everytime the
+% format is loaded. The is done by redefining locally \typeout to
+% append its argument to the macro \mesg.
+\def\mesg{}
+{\def\typeout#1{\xdef\mesg{\mesg #1}}
+ \the\everyjob}
+% (2) strip the useless parts from \mesg. This uses the fact that TeX
+% allows to define macros with parameters delimited by arbitrary text.
+\def\strip#1patterns for #2, loaded.#3\endmark{\def\langs{#2}}
+\expandafter\strip\mesg\endmark
+% (3) handle the result
+\message{^^J\prefix checking for available hyphenation patterns... \langs}
+\AddVariable{languages}{\langs}
+
 %%% Check for ec fonts. Most of this code has been shamelessely stolen
 %%% from the file ltxcheck.tex in the LaTeX distribution. In particular,
 %%% don't ask me how the macro \ecrm works...