diff options
author | No Author <no-author@gcc.gnu.org> | 1999-02-16 08:57:56 +0000 |
---|---|---|
committer | No Author <no-author@gcc.gnu.org> | 1999-02-16 08:57:56 +0000 |
commit | 3a81931d583a6f85e84da0ca3ed0df90fca44a88 (patch) | |
tree | 7da3f6c9d93d317d9be2b2fb1aa2de68ee2924ae | |
parent | 7d6964b4aa96040d4da9ac93ae32f01b9a13d9d6 (diff) | |
download | gcc-prereleases/egcs-1.1.2-prerelease-1.tar.gz |
This commit was manufactured by cvs2svn to create tagprereleases/egcs-1.1.2-prerelease-1
'egcs_1_1_2_prerelease_1'.
From-SVN: r25236
77 files changed, 0 insertions, 24646 deletions
diff --git a/texinfo/cygnus/Makefile.in b/texinfo/cygnus/Makefile.in deleted file mode 100644 index 178c463cc45..00000000000 --- a/texinfo/cygnus/Makefile.in +++ /dev/null @@ -1,69 +0,0 @@ -# Makefile for Cygnus overrides to Texinfo distribution. -*- Indented-Text -*- -# Copyright (C) 1993 Free Software Foundation, Inc. - -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -#### Start of system configuration section. #### - -srcdir = @srcdir@ -VPATH = @srcdir@ - -LN = ln -RM = rm -f - -SHELL = /bin/sh - -# We do not use texi2dvi because (a) we need no index, and -# (b) texi2dvi monkeys with TEXINPUTS -TEX = tex - -#### End of system configuration section. #### - -all: dvi - -sub-all: -check: -installcheck: -info: -install-info: - -TAGS: - -dvi: license.dvi lgpl.dvi - -install: - -uninstall: - -Makefile: Makefile.in ../config.status - cd ..; $(SHELL) ./config.status - -clean mostlyclean: - $(RM) license.?? license.??? liblic.?? liblic.??? lgpl.?? lgpl.??? - -distclean realclean: clean - $(RM) Makefile config.status fsf-texi.tex - -license.dvi: texiplus.tex texinfo.tex $(srcdir)/../license.texi $(srcdir)/../gpl.texinfo fsf-texi.tex - TEXINPUTS=$(srcdir):.:$(srcdir)/.. $(TEX) $(srcdir)/../license.texi - -lgpl.dvi: texiplus.tex texinfo.tex $(srcdir)/../liblic.texi $(srcdir)/../lgpl.texinfo fsf-texi.tex - TEXINPUTS=$(srcdir):.:$(srcdir)/.. $(TEX) $(srcdir)/../liblic.texi - mv liblic.dvi lgpl.dvi - -fsf-texi.tex: $(srcdir)/../texinfo.tex - cp $(srcdir)/../texinfo.tex fsf-texi.tex - -force: diff --git a/texinfo/cygnus/texinfo.tex b/texinfo/cygnus/texinfo.tex deleted file mode 100644 index 8546205c1f2..00000000000 --- a/texinfo/cygnus/texinfo.tex +++ /dev/null @@ -1,7 +0,0 @@ -%$Id: texinfo.tex,v 1.1.1.1 1998/03/23 04:42:12 law Exp $ -% Cover file to permit easy management of FSF texinfo.tex and use of -% Cygnus local revisions. -% First we get the official FSF one: -\input fsf-texi.tex -@c Now we get the Cygnus mods to override things we like to do differently: -@input texiplus.tex diff --git a/texinfo/cygnus/texiplus.tex b/texinfo/cygnus/texiplus.tex deleted file mode 100644 index 01a4e1316a6..00000000000 --- a/texinfo/cygnus/texiplus.tex +++ /dev/null @@ -1,325 +0,0 @@ -@tex -%% Cygnus revisions to texinfo.tex, TeX macros to handle texinfo files -% Copyright (C) 1991 Free Software Foundation, Inc. -%% Maintained at Cygnus Support as: -%%$Id: texiplus.tex,v 1.1.1.1 1998/03/23 04:42:12 law Exp $ - -%This texi+.tex file is free software; you can redistribute it and/or -%modify it under the terms of the GNU General Public License as -%published by the Free Software Foundation; either version 1, or (at - -{\let\fsfvn=\texinfoversion -\xdef\texinfoversion{\fsfvn\ (Cygnus)}} -\message{Loading Cygnus texinfo revisions [\texinfoversion]:} - -% Print the version number if in a .fmt file. -\everyjob{\message{[Cygnus Texinfo \texinfoversion]}} - -\globaldefs=1 % Escape the bounds of @tex/@end tex surrounding us - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%CROPMARKS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% These differ only slightly from FSF defaults; all crop dimens are -% defined here (whether different or not) for ease in revising. -\cornerlong=1pc\cornerthick=.3pt % These set size of cropmarks -\outerhsize=7in -\outervsize=9in -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\newif\ifdraft\drafttrue % Extra markings; turn off with @finalout - -% There are only two small changes to standard \title from texinfo -% (1) to include DRAFT marking on title page unless @finalout -% (2) to include a title-sized \tt font -% However, since \title is local to \titlepage, we have to redefine -% *that* whole damned thing. -%%%%%%%%%%This is sensitive to conflict w/FSF changes!**************** -\def\titlepage{\begingroup \parindent=0pt \textfonts - \let\subtitlerm=\tenrm -% I deinstalled the following change because \cmr12 is undefined. -% This change was not in the ChangeLog anyway. --rms. -% \let\subtitlerm=\cmr12 - \def\subtitlefont{\subtitlerm \normalbaselineskip = 13pt \normalbaselines}% - % - \def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines}% - % - % Leave some space at the very top of the page. - \vglue\titlepagetopglue - % - % Now you can print the title using @title. - \def\title{\parsearg\titlezzz}% -%changes from FSF only in following line: - \def\titlezzz##1{{\let\tentt=\titlett - \leftline{\titlefont{##1\ifdraft\hfill DRAFT\fi }}} -%end real changes from FSF version - % print a rule at the page bottom also. - \finishedtitlepagefalse -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% The ``width \hsize'' below should be unnecessary, since the rule is -% supposed to default to the smallest enclosing box...but *something* -% in texiplus breaks that default, so we force it to hsize. - \vskip4pt \hrule height 4pt width \hsize \vskip4pt}% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - % No rule at page bottom unless we print one at the top with @title. - \finishedtitlepagetrue - % - % Now you can put text using @subtitle. - \def\subtitle{\parsearg\subtitlezzz}% - \def\subtitlezzz##1{{\subtitlefont \rightline{##1}}}% - % - % @author should come last, but may come many times. - \def\author{\parsearg\authorzzz}% - \def\authorzzz##1{\ifseenauthor\else\vskip 0pt plus 1filll\seenauthortrue\fi - {\authorfont \leftline{##1}}}% - % - % Most title ``pages'' are actually two pages long, with space - % at the top of the second. We don't want the ragged left on the second. - \let\oldpage = \page - \def\page{% - \iffinishedtitlepage\else - \finishtitlepage - \fi - \oldpage - \let\page = \oldpage - \hbox{}}% -% \def\page{\oldpage \hbox{}} -} -\def\finishtitlepage{% -% same comment re ``width \hsize'' as on last hrule... - \vskip4pt \hrule width \hsize height 2pt - \vskip\titlepagebottomglue - \finishedtitlepagetrue -} -%%%%%%%%%%end sensitive to conflict w/FSF changes!******************** - -% Cygnus uses different default page headings and footers -\def\leadline{\ \leaders\hrule height 2.5pt depth -2pt\hfil\ } -\def\manvers{}% Empty default version in case manual doesn't supply -% This is for _explicitly_ turning headers off. Note that we're more -% literal-minded than the FSF: we don't turn off _footers_! This -% means that, unlike with the FSF macros, our ``@headings off'' do not -% return to the default Texinfo heading-state of the document. -% Reconsider if this gives trouble... -\def\HEADINGSoff{ -\global\evenheadline={\hfil} -\global\evenfootline={\line{\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t\leadline\manvers}} -\global\oddheadline={\hfil} -\global\oddfootline={\line {\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t\leadline\manvers}}} -% SINGLEPAGE: -\def\HEADINGSsingle{ -\global\pageno=1\HEADINGSsinglex} -\def\HEADINGSsinglex{ -\global\evenfootline={% -{\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t}% -\leadline\manvers} -\global\oddfootline={% -{\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t}% -\leadline\manvers} -\global\evenheadline={\ftfnt\thischapter\leadline - \ifdraft DRAFT\leadline\fi - \bf\folio} -\global\oddheadline={\ftfnt\thischapter\leadline - \ifdraft DRAFT\leadline\fi - \bf\folio} -} -% -% DOUBLEPAGE: -% use hrule leaders to delimit headings, footings from -% body; timestamp footer; pagenos outside *bottom* to -% permit moving chaptername to outside *top* (for easier -% skimming). 1990 dec 31, pesch@cygnus.com -\def\HEADINGSdouble{ -\global\pageno=1\HEADINGSdoublex} -\def\HEADINGSdoublex{ -\global\evenfootline={% -{\bf\folio}\ftfnt\leadline\ifdraft DRAFT\quad\fi -\ftfnt\manvers\qquad\today -} -\global\oddfootline={% -{\let\,=\thinspace\ftfnt c\,y\,g\,n\,u\,s\quad s\,u\,p\,p\,o\,r\,t}% -\leadline{\bf\folio}% -} -\global\evenheadline={\ftfnt\thistitle\leadline\ifdraft DRAFT\fi} -\global\oddheadline={\rm\leadline\thischapter} -} - -% CHANGE to @finalout ---also use it to remove DRAFT markings from -% title, footers -%% For a final copy, take out the rectangles -%% that mark overfull boxes (in case you have decided -%% that the text looks ok even though it passes the margin). -\def\finalout{\overfullrule=0pt -%% Also take out ``DRAFT'' markings - \global\draftfalse - } - -%Font overrides; we use PostScript when possible. -\font\textrm=pncr scaled \magstephalf -\font\texttt=pcrr -\font\textbf=pncb scaled \magstephalf -\font\textit=pncri scaled \magstephalf -\font\textsl=pcrro -\font\textsf=slcrst at 9.5pt -% FIXME: figure out, test dvips smallcaps kluge -%\font\textsc=Times-SmallCaps scaled \magstephalf -\font\ftfnt=phvr at 8pt % Cygnus Support footer-font - -\font\defbf=pncb scaled \magstep1 %was 1314 - -\font\ninett=pcrr at 9pt -\let\indtt=\ninett -\font\indrm=pncr at 9pt -\font\indit=pncri at 9pt -\font\indsl=pcrro at 9pt -\let\indsf=\indrm -\let\indbf=\indrm -\let\indsc=\indrm - -\font\chaprm=pncb at 17pt -\font\chapit=pncbi at 17pt -\font\chapsl=pcrbo at 16pt -\font\chaptt=pcrb at 16pt -\font\chapsf=slcrst at 16pt -\let\chapbf=\chaprm -% \chapfonts mod from FSF vn is to include baselineskip, for the few -% cases where a title chapter overflows its line. -\def\chapfonts{\baselineskip=19pt% - \let\tenrm=\chaprm \let\tenit=\chapit \let\tensl=\chapsl - \let\tenbf=\chapbf \let\tentt=\chaptt \let\smallcaps=\chapsc - \let\tensf=\chapsf \let\teni=\chapi \let\tensy=\chapsy - \resetmathfonts} - - -\font\secrm=pncb at 14pt -\font\secit=pncbi at 14pt -\font\secsl=pcrbo at 13pt -\font\sectt=pcrb at 13pt -\font\secsf=slcrst at 13pt -\font\secbf=pncb at 14pt - -\font\ssecrm=pncr at 13pt -\font\ssecit=pncri at 13pt -\font\ssecsl=pcrro at 12pt -\font\ssectt=pcrr at 12pt -\font\ssecsf=slcrst at 12pt -\font\ssecbf=pncb at 13pt - -\font\titlerm=pncb at 21pt -\font\titlett=pcrr at 20pt -\font\authorrm=pncr scaled \magstep2 - -\font\truesecrm=pncr at 12pt - -% Fonts for short table of contents -\font\shortcontrm=pncr at 12pt -\font\shortcontbf=pncb at 12pt -\font\shortcontsl=pncri at 12pt - -% \smartitalic{ARG} outputs arg in italics, followed by an italic correction -% unless the following character is such as not to need one. -\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} -\def\smartitalic#1{{\it #1}\futurelet\next\smartitalicx} -% \smartitalic is used for @emph; FSF keeps trying to make it match -% @var. -% -% \smartslant{ARG} outputs arg in a slanted font, followed by an -% italic correction unless the following character is such as not to need one. -\def\smartslantx{\ifx\next,\else\ifx\next-\else\ifx\next.\else\/\fi\fi\fi} -\def\smartslant#1{{\sl #1}\futurelet\next\smartslantx} - -\let\i=\smartitalic -\let\var=\smartslant -\let\dfn=\smartitalic -\let\emph=\smartitalic -\let\cite=\smartitalic - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% @altref, if called explicitly (inside @iftex), switches the @ref -% printed output so it lacks the square brackets used by default. -% While we're at it, we use double quotes instead of square brackets -% (or no decorator at all, depending on state of @altref toggle). -% Unfortunately this requires reproducing the entire damn xrefX -% definition. WARNING: may need to track texinfo.tex changes to xrefX... -\newif\ifbra\bratrue -\def\altref{\ifbra\brafalse\else\bratrue\fi}% Toggle. -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Begin duplicate xrefX: -\def\xrefX[#1,#2,#3,#4,#5,#6]{\begingroup% -\def\printedmanual{\ignorespaces #5}% -\def\printednodename{\ignorespaces #3}% -% -\setbox1=\hbox{\printedmanual}% -\setbox0=\hbox{\printednodename}% -\ifdim \wd0=0pt% -\def\printednodename{\ignorespaces #1}% -%%% Uncommment the following line to make the actual chapter or section title -%%% appear inside the square brackets. -%\def\printednodename{#1-title}% -\fi% -% -% -% If we use \unhbox0 and \unhbox1 to print the node names, TeX does -% not insert empty discretionaries after hyphens, which means that it -% will not find a line break at a hyphen in a node names. Since some -% manuals are best written with fairly long node names, containing -% hyphens, this is a loss. Therefore, we simply give the text of -% the node name again, so it is as if TeX is seeing it for the first -% time. -\ifdim \wd1>0pt -section ``\printednodename'' in \cite{\printedmanual}% -\else% -\turnoffactive% -%%%%%%%%%%%%%%%Here's the change for @altref: -\ifbra -\refx{#1-snt}{} ``\printednodename,'' page\tie\refx{#1-pg}{}% -\else -\refx{#1-snt}{} \printednodename, page\tie\refx{#1-pg}{}% -\fi -%%%%%%%%%%%%%%%end change for @altref -\fi -\endgroup} -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%:End duplicate xrefX -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% \widen: let examples (or whatever) fall into margins. Symmetric. Cancel -% ``@widen{N}'' with ``@widen{-N}''. -\newdimen\extra\extra=0pt % for ``widen'' -\global\def\widen#1{\advance\extra by #1% -\advance\leftskip by -#1\advance\rightskip by -#1} -% -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% ONLY INTENDED CHANGES from FSF smallbook: tolerance and page centering -% Use @smallbook to reset parameters for 7x9.5 format (or else 7x9.25) -\def\smallbook{ - -% These values for secheadingskip and subsecheadingskip are -% experiments. RJC 7 Aug 1992 -\global\secheadingskip = 17pt plus 6pt minus 3pt -\global\subsecheadingskip = 14pt plus 6pt minus 3pt - -\global\lispnarrowing = 0.3in -\setleading{12pt} -\advance\topskip by -1cm -\global\parskip 3pt plus 1pt -\global\hsize = 5in -\advance\normaloffset by .75in % half of difference from 6.5in default hsize -\global\vsize=7.5in -\advance\voffset by .7in % half of difference from 8.9in default vsize -\global\tolerance=1400 -\global\hfuzz=1pt -\global\contentsrightmargin=0pt - -\global\pagewidth=\hsize -\global\pageheight=\vsize - -\global\let\smalllisp=\smalllispx -\global\let\smallexample=\smalllispx -\global\def\Esmallexample{\Esmalllisp} -}\textfonts - -\globaldefs=0 % this is NOT redundant; the \endgroup done by@end tex - % would restore the value, but before doing that would - % screw up if globaldefs=1 were allowed to remain here. -@end tex -@rm -@smallbook -@c some manuals (notably as) contain stuff that only looks good in -@c smallbook; this switch controls its appearance, by local convention -@set SMALL diff --git a/texinfo/cygnus/tocfix b/texinfo/cygnus/tocfix deleted file mode 100755 index c03ca8807fe..00000000000 --- a/texinfo/cygnus/tocfix +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/sh -# tocfix - move a DVI file table of contents to its proper position - -# TeX puts the table of contents at the end of the DVI file. -# If you're printing multiple pages per sheet, you can't fix it -# on the printout. This program moves the TOC to be right after -# the titlepage and copyright page. -# It's a safe no-op to run this program on a DVI file more than once. - -# Some explanation: the TOC has negative page numbers, represented -# to dviselect by an underscore. The titlepage and copyright page -# have TeX page numbers 1 and 2, but so do the first two pages of the -# first chapter. So we have to use absolute, as opposed to TeX, -# page numbers to get them right, represented to dviselect by an -# equals sign. - -# This program assumes that the DVI file has the standard Texinfo -# format -- a titlepage, a copyright page, then the real text. - -# djm@cygnus.com (David MacKenzie) - -trap 'rm -f new-*.dvi title.dvi toc.dvi body_plus_toc.dvi body.dvi; exit 1' 1 3 15 - -if [ $# -eq 0 ]; then - echo "Usage; tocfix dvifile..." >&2; exit 1 -fi - -for dvi -do - dviselect -i $dvi -o title.dvi =1:2 - dviselect -i $dvi -o toc.dvi :_1 - dviselect -i $dvi -o body_plus_toc.dvi =3: - dviselect -i body_plus_toc.dvi -o body.dvi 1: - dviconcat -o new-$dvi title.dvi toc.dvi body.dvi - mv new-$dvi $dvi - rm -f title.dvi toc.dvi body_plus_toc.dvi body.dvi -done diff --git a/texinfo/emacs/Makefile.am b/texinfo/emacs/Makefile.am deleted file mode 100644 index e2e98af28d5..00000000000 --- a/texinfo/emacs/Makefile.am +++ /dev/null @@ -1,21 +0,0 @@ -## Makefile.am for texinfo/emacs. -## $Id: Makefile.am,v 1.1.1.1 1998/03/23 04:42:12 law Exp $ -## Run automake in .. to produce Makefile.in from this. - -# Do not byte compile our Elisp files by default. -ELCFILES = - -# Do not install our Elisp files by default, either. -noinst_LISP = info.el informat.el makeinfo.el \ - texinfmt.el texinfo.el texnfo-upd.el - -EXTRA_DIST = README elisp-comp new-useful-setqs $(noinst_LISP) - -install-data-local: - @echo "WARNING: You must (compile and) install the Emacs Lisp files" - @echo "WARNING: manually. See ./emacs/README for some considerations." - -# For some reason these do not get defined. -distclean-lisp: -clean-lisp: -mostlyclean-lisp: diff --git a/texinfo/emacs/Makefile.in b/texinfo/emacs/Makefile.in deleted file mode 100644 index f200fa5934d..00000000000 --- a/texinfo/emacs/Makefile.in +++ /dev/null @@ -1,204 +0,0 @@ -# Makefile.in generated automatically by automake 1.2 from Makefile.am - -# Copyright (C) 1994, 1995, 1996, 1997 Free Software Foundation, Inc. -# This Makefile.in is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Do not byte compile our Elisp files by default. - - -SHELL = /bin/sh - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ -prefix = @prefix@ -exec_prefix = @exec_prefix@ - -bindir = @bindir@ -sbindir = @sbindir@ -libexecdir = @libexecdir@ -datadir = @datadir@ -sysconfdir = @sysconfdir@ -sharedstatedir = @sharedstatedir@ -localstatedir = @localstatedir@ -libdir = @libdir@ -infodir = @infodir@ -mandir = @mandir@ -includedir = @includedir@ -oldincludedir = /usr/include - -pkgdatadir = $(datadir)/@PACKAGE@ -pkglibdir = $(libdir)/@PACKAGE@ -pkgincludedir = $(includedir)/@PACKAGE@ - -top_builddir = .. - -ACLOCAL = @ACLOCAL@ -AUTOCONF = @AUTOCONF@ -AUTOMAKE = @AUTOMAKE@ -AUTOHEADER = @AUTOHEADER@ - -INSTALL = @INSTALL@ -INSTALL_PROGRAM = @INSTALL_PROGRAM@ -INSTALL_DATA = @INSTALL_DATA@ -INSTALL_SCRIPT = @INSTALL_SCRIPT@ -transform = @program_transform_name@ - -NORMAL_INSTALL = true -PRE_INSTALL = true -POST_INSTALL = true -NORMAL_UNINSTALL = true -PRE_UNINSTALL = true -POST_UNINSTALL = true -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -CC = @CC@ -DATADIRNAME = @DATADIRNAME@ -EXEEXT = @EXEEXT@ -GENCAT = @GENCAT@ -GMOFILES = @GMOFILES@ -GMSGFMT = @GMSGFMT@ -GT_NO = @GT_NO@ -GT_YES = @GT_YES@ -INSTOBJEXT = @INSTOBJEXT@ -INTLDEPS = @INTLDEPS@ -INTLLIBS = @INTLLIBS@ -INTLOBJS = @INTLOBJS@ -MAINT = @MAINT@ -MAKEINFO = @MAKEINFO@ -MKINSTALLDIRS = @MKINSTALLDIRS@ -MSGFMT = @MSGFMT@ -PACKAGE = @PACKAGE@ -POFILES = @POFILES@ -POSUB = @POSUB@ -RANLIB = @RANLIB@ -TERMLIBS = @TERMLIBS@ -TEXCONFIG = @TEXCONFIG@ -TEXMF = @TEXMF@ -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ -USE_NLS = @USE_NLS@ -VERSION = @VERSION@ -l = @l@ - -ELCFILES = - -# Do not install our Elisp files by default, either. -noinst_LISP = info.el informat.el makeinfo.el \ - texinfmt.el texinfo.el texnfo-upd.el - -EXTRA_DIST = README elisp-comp new-useful-setqs $(noinst_LISP) -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -CONFIG_HEADER = ../config.h -CONFIG_CLEAN_FILES = -LISP = $(noinst_LISP) - -lispdir = @lispdir@ -EMACS = @EMACS@ -DIST_COMMON = README Makefile.am Makefile.in elisp-comp - - -DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) - -TAR = tar -GZIP = --best -default: all - -.SUFFIXES: -.SUFFIXES: .el .elc -$(srcdir)/Makefile.in: @MAINT@ Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) - cd $(top_srcdir) && $(AUTOMAKE) --cygnus emacs/Makefile - -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status - cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - -.el.elc: - @echo 'WARNING: Warnings can be ignored. :-)' - if test $(EMACS) != no; then \ - EMACS=$(EMACS) $(SHELL) $(srcdir)/elisp-comp $<; \ - fi -tags: TAGS -TAGS: - - -distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) - -subdir = emacs - -distdir: $(DISTFILES) - @for file in $(DISTFILES); do \ - if test -f $$file; then d=.; else d=$(srcdir); fi; \ - test -f $(distdir)/$$file \ - || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ - || cp -p $$d/$$file $(distdir)/$$file; \ - done -info: -dvi: -check: all - $(MAKE) -installcheck: -install-info: -install-exec: - @$(NORMAL_INSTALL) - -install-data: install-data-local - @$(NORMAL_INSTALL) - -install: install-exec install-data all - @: - -uninstall: - -all: Makefile $(LISP) $(ELCFILES) - -install-strip: - $(MAKE) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' INSTALL_SCRIPT='$(INSTALL_PROGRAM)' install -installdirs: - - -mostlyclean-generic: - test -z "$(MOSTLYCLEANFILES)" || rm -f $(MOSTLYCLEANFILES) - -clean-generic: - test -z "$(CLEANFILES)" || rm -f $(CLEANFILES) - -distclean-generic: - rm -f Makefile $(DISTCLEANFILES) - rm -f config.cache config.log stamp-h stamp-h[0-9]* - test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) - -maintainer-clean-generic: - test -z "$(MAINTAINERCLEANFILES)" || rm -f $(MAINTAINERCLEANFILES) - test -z "$(BUILT_SOURCES)" || rm -f $(BUILT_SOURCES) -mostlyclean: mostlyclean-lisp mostlyclean-generic - -clean: clean-lisp clean-generic mostlyclean - -distclean: distclean-lisp distclean-generic clean - rm -f config.status - -maintainer-clean: maintainer-clean-lisp maintainer-clean-generic \ - distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - -.PHONY: default mostlyclean-lisp distclean-lisp clean-lisp \ -maintainer-clean-lisp tags distdir info dvi installcheck install-info \ -install-exec install-data install uninstall all installdirs \ -mostlyclean-generic distclean-generic clean-generic \ -maintainer-clean-generic clean mostlyclean distclean maintainer-clean - - -install-data-local: - @echo "WARNING: You must (compile and) install the Emacs Lisp files" - @echo "WARNING: manually. See ./emacs/README for some considerations." - -# For some reason these do not get defined. -distclean-lisp: -clean-lisp: -mostlyclean-lisp: - -# Tell versions [3.59,3.63) of GNU make to not export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/texinfo/emacs/README b/texinfo/emacs/README deleted file mode 100644 index 23053166c3f..00000000000 --- a/texinfo/emacs/README +++ /dev/null @@ -1,17 +0,0 @@ -This directory contains Emacs Lisp sources related to Texinfo. - -M-x texinfo-format-buffer is no longer the standard way to make .info -files, and may or may not work. Use makeinfo instead. See the -`makeinfo advantages' in the manual for why. - -The files here may or may not be newer than the versions in the latest -Emacs distribution -- there is only one master source, so it simply -depends on what was released later. Use whatever works better for you. - -They are not compiled or installed by default, because of the above, and -also due to the wide variations in sites' Emacs installations. - -Even if you do install them, you may not want to compile them if your -site is running multiple versions of Emacs, since .elc files are not -portable between all Emacs releases. If you do want to compile them, -just run the ./elisp-comp shell script. diff --git a/texinfo/emacs/detexinfo.el b/texinfo/emacs/detexinfo.el deleted file mode 100644 index fda99091c49..00000000000 --- a/texinfo/emacs/detexinfo.el +++ /dev/null @@ -1,250 +0,0 @@ -;;; Here is a handy keybinding: - -(global-set-key "\C-x\\" 'detexinfo) - -;;;;;;;;;;;;;;;; detexinfo.el ;;;;;;;;;;;;;;;; -;;; -;;; Remove Texinfo commands from a Texinfo source file. -;;; -;;; Copyright (C) 1991, 1992 Free Software Foundation -;;; Robert J. Chassell -;;; bugs to bug-texinfo@prep.ai.mit.edu -;;; -;;; ==> test version <== -;;; Fails if Texinfo source file contains formatting errors. -;;; -;;; Version 0.05 - 3 Jun 1992 -;;; Add to list of removed commands. Improve messages. -;;; -;;; Version 0.04 - 27 Jan 1992 -;;; Rewrite to insert detexinfo'd text into a temporary buffer. -;;; -;;; Version 0.03 - 27 Dec 1991 -;;; Improved messages. -;;; -;;; Version 0.02 - 13 Nov 1991 -;;; detexinfo-remove-inline-cmd, detexinfo-syntax-table: Handle -;;; nested commands. -;;; detexinfo: Handle nested @'s, eg @samp{@}} and @samp{@@}; -;;; replace @TeX{} with TeX. -;;; -;;; Version 0.01 - 13 Nov 1991 -;;; -;;; Based on detex.el, by Bengt Martensson, 4 Oct 1987 -;;; -;;;;;;;;;;;;;;;; - -(defvar detexinfo-buffer-name "*detexinfo*" - "*Name of the temporary buffer used by \\[detexinfo].") - -(defvar detexinfo-syntax-table nil) - -(if detexinfo-syntax-table - nil - (setq detexinfo-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\[ "." detexinfo-syntax-table) - (modify-syntax-entry ?\] "." detexinfo-syntax-table) - (modify-syntax-entry ?\" "." detexinfo-syntax-table) - (modify-syntax-entry ?\\ "." detexinfo-syntax-table) - (modify-syntax-entry ?\( "." detexinfo-syntax-table) - (modify-syntax-entry ?\) "." detexinfo-syntax-table) - (modify-syntax-entry ?{ "(}" detexinfo-syntax-table) - (modify-syntax-entry ?} "){" detexinfo-syntax-table)) - -(defun detexinfo () - "Remove Texinfo commands from current buffer, copying result to new buffer. -BUG: Fails if Texinfo source file contains formatting errors." - (interactive) - (let ((input-buffer (current-buffer))) - ;; Find a buffer to use. - (switch-to-buffer (get-buffer-create detexinfo-buffer-name)) - (setq major-mode 'detexinfo-mode) - (set-syntax-table detexinfo-syntax-table) - (erase-buffer) - (insert-buffer-substring input-buffer) - - ;; Replace @{ and @} with %#* and *#% temporarily, so @samp{@{} works. - ;; What is a better way of doing this?? - (goto-char (point-min)) - (while (search-forward "@{" nil t) ; e.g., @samp{@{} - (replace-match "%#*")) - (goto-char (point-min)) - (while (search-forward "@}" nil t) - (forward-char -3) ; e.g., @samp{@@} - (if (looking-at "@") ; Two @@ in a row - (progn - (delete-char 2) - (insert "%&%#")) - (forward-char 1) - (delete-char 2) - (insert "*#%"))) - - (goto-char (point-min)) - ;; Remove @refill, the only inline command without braces. - (while (search-forward "@refill" nil t) - (replace-match "")) - ;; Replace @TeX{} with TeX - (goto-char (point-min)) - (while (search-forward "@TeX{}" nil t) (replace-match "TeX" t t)) - - (detexinfo-remove-line-cmds-without-arg) - (detexinfo-remove-inline-cmds-without-arg) - (detexinfo-remove-inline-cmds-keep-arg) - (detexinfo-remove-line-cmds-deletable-arg) - (detexinfo-remove-line-cmds-maybe-delete-arg) - (detexinfo-remove-line-cmds-keep-arg) - - ;; Now replace %#*, *#%, and %&%# with {, }, and @@. - (goto-char (point-min)) - (while (search-forward "%#*" nil t) - (replace-match "{")) - (goto-char (point-min)) - (while (search-forward "*#%" nil t) - (replace-match "}")) - (goto-char (point-min)) - (while (search-forward "%&%#" nil t) - (replace-match "@@")) - - ;; Scan for remaining two character @-commands - (goto-char (point-min)) - (while (search-forward "@" nil t) - (cond ((looking-at "[*:]") - (delete-region (1- (point)) (1+ (point)))) - ((looking-at "[{}^@.'`]\"?!") - (delete-region (1- (point)) (point))))) - - (goto-char (point-min)) - (message "Done...removed Texinfo commands from buffer. You may save it."))) - -(defun detexinfo-remove-whole-line (cmd) - "Delete Texinfo line command CMD at beginning of line and rest of line." - (goto-char (point-min)) - (while - (re-search-forward - (concat "^@" cmd "[ \n]+") (point-max) t) - (goto-char (match-beginning 0)) - (delete-region - (point) (save-excursion (end-of-line) (1+ (point)))))) - -(defun detexinfo-remove-inline-cmd (cmd) - "Delete Texinfo inline command CMD, eg. @point, @code." - (goto-char (point-min)) - (while - (re-search-forward (concat "@" cmd "{") (point-max) t) - (save-excursion - (forward-char -1) - (forward-sexp 1) - (delete-char -1)) ; delete right brace - (delete-region (point) (match-beginning 0)))) - -;;;;;;;;;;;;;;;; - -;;; 1. @setfilename and other line commands with args to delete - -(defvar detexinfo-line-cmds-deletable-arg - '("enumerate" "ftable" "vtable" "itemize" "table" - "setfilename" "settitle" "setchapternewpage" - "footnotestyle" "paragraphindent" - "include" "need" "sp" - "clear" "ifclear" "ifset" "set" - "defcodeindex" "defindex" "syncodeindex" "synindex") - "List of Texinfo commands whose arguments should be deleted.") - -(defun detexinfo-remove-line-cmds-deletable-arg () - "Delete Texinfo line commands together with their args, eg @setfilename." - (message "Removing commands such as @enumerate...with their arguments...") - (mapcar 'detexinfo-remove-whole-line - detexinfo-line-cmds-deletable-arg)) - -;;; 2. @cindex and other cmds with args that may be deleted -;;; This list is here just to make it easier to revise the -;;; categories. In particular, you might want to keep the index entries. - -(defvar detexinfo-line-cmds-maybe-delete-arg - '("cindex" "findex" "kindex" "pindex" "tindex" "vindex" "node" - "c" "comment" "end" "headings" "printindex" "vskip" - "evenfooting" "evenheading" "everyfooting" "everyheading" - "oddfooting" "oddheading") - "List of Texinfo commands whose arguments may possibly be deleted.") - -(defun detexinfo-remove-line-cmds-maybe-delete-arg () - "Delete Texinfo line commands together with their arguments, eg, @cindex." - (message "Removing commands such as @cindex...with their arguments...") - (mapcar 'detexinfo-remove-whole-line - detexinfo-line-cmds-maybe-delete-arg)) - -;;; 3. @chapter and other line cmds with args to keep. - -(defvar detexinfo-line-cmds-keep-arg - '("top" "chapter" "section" "subsection" "subsubsection" - "unnumbered" "unnumberedsec" "unnumberedsubsec" "unnumberedsubsubsec" - "majorheading" "chapheading" "heading" "subheading" "subsubheading" - "appendix" "appendixsec" "appendixsubsec" "appendixsubsubsec" - "item" "itemx" - "title" "subtitle" "center" "author" "exdent" - "defcv" "deffn" "defivar" "defmac" "defmethod" "defop" "defopt" - "defspec" "deftp" "deftypefn" "deftypefun" "deftypvr" - "deftypevar" "defun" "defvar" "defvr") - "List of Texinfo line commands whose arguments should be kept.") - -(defun detexinfo-remove-line-cmds-keep-arg () - "Delete Texinfo line commands but keep their arguments, eg @chapter." - (message "Removing commands such as @chapter...but not their arguments...") - (mapcar 'detexinfo-remove-line-cmd-keep-arg - detexinfo-line-cmds-keep-arg)) - -(defun detexinfo-remove-line-cmd-keep-arg (cmd) - "Delete Texinfo line command CMD but keep its argument, eg @chapter." - (goto-char (point-min)) - (while - (re-search-forward - (concat "^@" cmd "[ \n]+") (point-max) t) - (delete-region (match-beginning 0) (match-end 0)))) - -;;; 4. @bye and other line commands without args. - -(defvar detexinfo-line-cmds-without-arg - '("bye" "contents" "display" "example" "finalout" - "flushleft" "flushright" "format" "group" "ifhtml" "ifinfo" "iftex" - "ignore" "lisp" "menu" "noindent" "page" "quotation" - "shortcontents" "smallbook" "smallexample" "smalllisp" - "summarycontents" "tex" "thischapter" "thischaptername" - "thisfile" "thispage" "thissection" "thistitle" "titlepage") - "List of Texinfo commands without arguments that should be deleted.") - -(defun detexinfo-remove-line-cmds-without-arg () - "Delete line Texinfo commands that lack args, eg. @example." - (message "Removing commands such as @example...that lack arguments...") - (mapcar 'detexinfo-remove-whole-line - detexinfo-line-cmds-without-arg)) - -;;; 5. @equiv and other inline cmds without args. - -(defvar detexinfo-inline-cmds-without-arg - '("equiv" "error" "expansion" "point" "print" "result" - "asis" "br" "bullet" "dots" "minus" "today") - "List of Texinfo inline commands without arguments that should be deleted.") - -(defun detexinfo-remove-inline-cmds-without-arg () - "Delete Texinfo inline commands in that lack arguments." - (message "Removing within line commands such as @result...") - (mapcar 'detexinfo-remove-inline-cmd - detexinfo-inline-cmds-without-arg)) - -;;; 6. @code and other inline cmds with args to keep - -(defvar detexinfo-inline-cmds-keep-arg - '("b" "cartouche" "cite" "code" "copyright" "ctrl" "dfn" "dmn" - "emph" "file" "footnote" "i" "inforef" - "kbd" "key" "pxref" "r" "ref" "samp" "sc" "titlefont" - "strong" "t" "var" "w" "xref") - "List of Texinfo inline commands with arguments that should be kept.") - -(defun detexinfo-remove-inline-cmds-keep-arg () - "Delete Texinfo inline commands but keep its arg, eg. @code." - (message - "Removing within line commands such as @code...but not their arguments...") - (mapcar 'detexinfo-remove-inline-cmd - detexinfo-inline-cmds-keep-arg)) - -;;;;;;;;;;;;;;;; end detexinfo.el ;;;;;;;;;;;;;;;; diff --git a/texinfo/emacs/elisp-comp b/texinfo/emacs/elisp-comp deleted file mode 100755 index eb16b5da1bf..00000000000 --- a/texinfo/emacs/elisp-comp +++ /dev/null @@ -1,7 +0,0 @@ -#!/bin/sh -# $Id: elisp-comp,v 1.1.1.1 1997/08/21 22:57:57 jason Exp $ -# Trivial script to compile the Elisp files. -setpath=${TMPDIR-/tmp}/elc.$$ -echo "(setq load-path (cons nil load-path))" > $setpath -emacs -batch -l $setpath -f batch-byte-compile "$@" -rm -f $setpath diff --git a/texinfo/emacs/info.el b/texinfo/emacs/info.el deleted file mode 100644 index ec21f5b9ff9..00000000000 --- a/texinfo/emacs/info.el +++ /dev/null @@ -1,2032 +0,0 @@ -;;; info.el --- info package for Emacs. - -;; Copyright (C) 1985, 86, 92, 93, 94, 95, 96, 97 Free Software -;; Foundation, Inc. - -;; Maintainer: FSF -;; Keywords: help - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; Note that nowadays we expect info files to be made using makeinfo. - -;;; Code: - -(defgroup info nil - "Info subsystem" - :group 'help - :group 'docs) - - -(defvar Info-history nil - "List of info nodes user has visited. -Each element of list is a list (FILENAME NODENAME BUFFERPOS).") - -(defcustom Info-enable-edit nil - "*Non-nil means the \\<Info-mode-map>\\[Info-edit] command in Info can edit the current node. -This is convenient if you want to write info files by hand. -However, we recommend that you not do this. -It is better to write a Texinfo file and generate the Info file from that, -because that gives you a printed manual as well." - :type 'boolean - :group 'info) - -(defvar Info-enable-active-nodes nil - "Non-nil allows Info to execute Lisp code associated with nodes. -The Lisp code is executed when the node is selected.") -(put 'Info-enable-active-nodes 'risky-local-variable t) - -(defcustom Info-fontify t - "*Non-nil enables highlighting and fonts in Info nodes." - :type 'boolean - :group 'info) - -(defcustom Info-fontify-maximum-menu-size 30000 - "*Maximum size of menu to fontify if `Info-fontify' is non-nil." - :type 'integer - :group 'info) - -(defvar Info-directory-list - (let ((path (getenv "INFOPATH")) - ;; This is for older Emacs versions - ;; which might get this info.el from the Texinfo distribution. - (path-separator (if (boundp 'path-separator) path-separator - (if (eq system-type 'ms-dos) ";" ":"))) - (source (expand-file-name "info/" source-directory)) - (sibling (if installation-directory - (expand-file-name "info/" installation-directory))) - alternative) - (if path - (let ((list nil) - idx) - (while (> (length path) 0) - (setq idx (or (string-match path-separator path) (length path)) - list (cons (substring path 0 idx) list) - path (substring path (min (1+ idx) - (length path))))) - (nreverse list)) - (if (and sibling (file-exists-p sibling)) - (setq alternative sibling) - (setq alternative source)) - (if (or (member alternative Info-default-directory-list) - (not (file-exists-p alternative)) - ;; On DOS/NT, we use movable executables always, - ;; and we must always find the Info dir at run time. - (if (or (eq system-type 'ms-dos) (eq system-type 'windows-nt)) - nil - ;; Use invocation-directory for Info only if we used it for - ;; exec-directory also. - (not (string= exec-directory - (expand-file-name "lib-src/" - installation-directory))))) - Info-default-directory-list - (reverse (cons alternative - (cdr (reverse Info-default-directory-list))))))) - "List of directories to search for Info documentation files. -nil means not yet initialized. In this case, Info uses the environment -variable INFOPATH to initialize it, or `Info-default-directory-list' -if there is no INFOPATH variable in the environment. -The last element of `Info-default-directory-list' is the directory -where Emacs installs the Info files that come with it. - -If you run the Emacs executable from the `src' directory in the Emacs -source tree, the `info' directory in the source tree is used as the last -element, in place of the installation Info directory. This is useful -when you run a version of Emacs without installing it.") - -(defcustom Info-additional-directory-list nil - "List of additional directories to search for Info documentation files. -These directories are not searched for merging the `dir' file." - :type '(repeat directory) - :group 'info) - -(defvar Info-current-file nil - "Info file that Info is now looking at, or nil. -This is the name that was specified in Info, not the actual file name. -It doesn't contain directory names or file name extensions added by Info.") - -(defvar Info-current-subfile nil - "Info subfile that is actually in the *info* buffer now, -or nil if current info file is not split into subfiles.") - -(defvar Info-current-node nil - "Name of node that Info is now looking at, or nil.") - -(defvar Info-tag-table-marker nil - "Marker pointing at beginning of current Info file's tag table. -Marker points nowhere if file has no tag table.") - -(defvar Info-tag-table-buffer nil - "Buffer used for indirect tag tables.") - -(defvar Info-current-file-completions nil - "Cached completion list for current Info file.") - -(defvar Info-index-alternatives nil - "List of possible matches for last Info-index command.") - -(defvar Info-standalone nil - "Non-nil if Emacs was started solely as an Info browser.") - -(defvar Info-suffix-list - (if (eq system-type 'ms-dos) - '( (".gz" . "gunzip") - (".z" . "gunzip") - (".inf" . nil) - ("" . nil)) - '( (".info.Z". "uncompress") - (".info.Y". "unyabba") - (".info.gz". "gunzip") - (".info.z". "gunzip") - (".info". nil) - ("-info.Z". "uncompress") - ("-info.Y". "unyabba") - ("-info.gz". "gunzip") - ("-info.z". "gunzip") - ("-info". nil) - ("/index.Z". "uncompress") - ("/index.Y". "unyabba") - ("/index.gz". "gunzip") - ("/index.z". "gunzip") - ("/index". nil) - (".Z". "uncompress") - (".Y". "unyabba") - (".gz". "gunzip") - (".z". "gunzip") - ("". nil))) - "List of file name suffixes and associated decoding commands. -Each entry should be (SUFFIX . STRING); the file is given to -the command as standard input. If STRING is nil, no decoding is done. -Because the SUFFIXes are tried in order, the empty string should -be last in the list.") - -;; Concatenate SUFFIX onto FILENAME. SUFFIX should start with a dot. -;; First, on ms-dos, delete some of the extension in FILENAME -;; to make room. -(defun info-insert-file-contents-1 (filename suffix) - (if (not (eq system-type 'ms-dos)) - (concat filename suffix) - (let* ((sans-exts (file-name-sans-extension filename)) - ;; How long is the extension in FILENAME (not counting the dot). - (ext-len (max 0 (- (length filename) (length sans-exts) 1))) - ext-left) - ;; SUFFIX starts with a dot. If FILENAME already has one, - ;; get rid of the one in SUFFIX (unless suffix is empty). - (or (and (<= ext-len 0) - (not (eq (aref filename (1- (length filename))) ?.))) - (= (length suffix) 0) - (setq suffix (substring suffix 1))) - ;; How many chars of that extension should we keep? - (setq ext-left (min ext-len (max 0 (- 3 (length suffix))))) - ;; Get rid of the rest of the extension, and add SUFFIX. - (concat (substring filename 0 (- (length filename) - (- ext-len ext-left))) - suffix)))) - -(defun info-insert-file-contents (filename &optional visit) - "Insert the contents of an info file in the current buffer. -Do the right thing if the file has been compressed or zipped." - (let ((tail Info-suffix-list) - fullname decoder) - (if (file-exists-p filename) - ;; FILENAME exists--see if that name contains a suffix. - ;; If so, set DECODE accordingly. - (progn - (while (and tail - (not (string-match - (concat (regexp-quote (car (car tail))) "$") - filename))) - (setq tail (cdr tail))) - (setq fullname filename - decoder (cdr (car tail)))) - ;; Try adding suffixes to FILENAME and see if we can find something. - (while (and tail - (not (file-exists-p (info-insert-file-contents-1 - filename (car (car tail)))))) - (setq tail (cdr tail))) - ;; If we found a file with a suffix, set DECODER according to the suffix - ;; and set FULLNAME to the file's actual name. - (setq fullname (info-insert-file-contents-1 filename (car (car tail))) - decoder (cdr (car tail))) - (or tail - (error "Can't find %s or any compressed version of it" filename))) - ;; check for conflict with jka-compr - (if (and (featurep 'jka-compr) - (jka-compr-installed-p) - (jka-compr-get-compression-info fullname)) - (setq decoder nil)) - (insert-file-contents fullname visit) - (if decoder - (let ((buffer-read-only nil) - (default-directory (or (file-name-directory fullname) - default-directory))) - (call-process-region (point-min) (point-max) decoder t t))))) - -;;;###autoload (add-hook 'same-window-buffer-names "*info*") - -;;;###autoload -(defun info (&optional file) - "Enter Info, the documentation browser. -Optional argument FILE specifies the file to examine; -the default is the top-level directory of Info. - -In interactive use, a prefix argument directs this command -to read a file name from the minibuffer. - -The search path for Info files is in the variable `Info-directory-list'. -The top-level Info directory is made by combining all the files named `dir' -in all the directories in that path." - (interactive (if current-prefix-arg - (list (read-file-name "Info file name: " nil nil t)))) - (if file - (Info-goto-node (concat "(" file ")")) - (if (get-buffer "*info*") - (pop-to-buffer "*info*") - (Info-directory)))) - -;;;###autoload -(defun info-standalone () - "Run Emacs as a standalone Info reader. -Usage: emacs -f info-standalone [filename] -In standalone mode, \\<Info-mode-map>\\[Info-exit] exits Emacs itself." - (setq Info-standalone t) - (if (and command-line-args-left - (not (string-match "^-" (car command-line-args-left)))) - (condition-case err - (progn - (info (car command-line-args-left)) - (setq command-line-args-left (cdr command-line-args-left))) - (error (send-string-to-terminal - (format "%s\n" (if (eq (car-safe err) 'error) - (nth 1 err) err))) - (save-buffers-kill-emacs))) - (info))) - -;; Go to an info node specified as separate filename and nodename. -;; no-going-back is non-nil if recovering from an error in this function; -;; it says do not attempt further (recursive) error recovery. -(defun Info-find-node (filename nodename &optional no-going-back) - ;; Convert filename to lower case if not found as specified. - ;; Expand it. - (if filename - (let (temp temp-downcase found) - (setq filename (substitute-in-file-name filename)) - (if (string= (downcase filename) "dir") - (setq found t) - (let ((dirs (if (string-match "^\\./" filename) - ;; If specified name starts with `./' - ;; then just try current directory. - '("./") - (if (file-name-absolute-p filename) - ;; No point in searching for an - ;; absolute file name - '(nil) - (if Info-additional-directory-list - (append Info-directory-list - Info-additional-directory-list) - Info-directory-list))))) - ;; Search the directory list for file FILENAME. - (while (and dirs (not found)) - (setq temp (expand-file-name filename (car dirs))) - (setq temp-downcase - (expand-file-name (downcase filename) (car dirs))) - ;; Try several variants of specified name. - (let ((suffix-list Info-suffix-list)) - (while (and suffix-list (not found)) - (cond ((file-exists-p - (info-insert-file-contents-1 - temp (car (car suffix-list)))) - (setq found temp)) - ((file-exists-p - (info-insert-file-contents-1 - temp-downcase (car (car suffix-list)))) - (setq found temp-downcase))) - (setq suffix-list (cdr suffix-list)))) - (setq dirs (cdr dirs))))) - (if found - (setq filename found) - (error "Info file %s does not exist" filename)))) - ;; Record the node we are leaving. - (if (and Info-current-file (not no-going-back)) - (setq Info-history - (cons (list Info-current-file Info-current-node (point)) - Info-history))) - ;; Go into info buffer. - (or (eq major-mode 'Info-mode) (pop-to-buffer "*info*")) - (buffer-disable-undo (current-buffer)) - (or (eq major-mode 'Info-mode) - (Info-mode)) - (widen) - (setq Info-current-node nil) - (unwind-protect - (progn - ;; Switch files if necessary - (or (null filename) - (equal Info-current-file filename) - (let ((buffer-read-only nil)) - (setq Info-current-file nil - Info-current-subfile nil - Info-current-file-completions nil - buffer-file-name nil) - (erase-buffer) - (if (eq filename t) - (Info-insert-dir) - (info-insert-file-contents filename t) - (setq default-directory (file-name-directory filename))) - (set-buffer-modified-p nil) - ;; See whether file has a tag table. Record the location if yes. - (goto-char (point-max)) - (forward-line -8) - ;; Use string-equal, not equal, to ignore text props. - (if (not (or (string-equal nodename "*") - (not - (search-forward "\^_\nEnd tag table\n" nil t)))) - (let (pos) - ;; We have a tag table. Find its beginning. - ;; Is this an indirect file? - (search-backward "\nTag table:\n") - (setq pos (point)) - (if (save-excursion - (forward-line 2) - (looking-at "(Indirect)\n")) - ;; It is indirect. Copy it to another buffer - ;; and record that the tag table is in that buffer. - (let ((buf (current-buffer)) - (tagbuf - (or Info-tag-table-buffer - (generate-new-buffer " *info tag table*")))) - (setq Info-tag-table-buffer tagbuf) - (save-excursion - (set-buffer tagbuf) - (buffer-disable-undo (current-buffer)) - (setq case-fold-search t) - (erase-buffer) - (insert-buffer-substring buf)) - (set-marker Info-tag-table-marker - (match-end 0) tagbuf)) - (set-marker Info-tag-table-marker pos))) - (set-marker Info-tag-table-marker nil)) - (setq Info-current-file - (if (eq filename t) "dir" filename)))) - ;; Use string-equal, not equal, to ignore text props. - (if (string-equal nodename "*") - (progn (setq Info-current-node nodename) - (Info-set-mode-line)) - ;; Search file for a suitable node. - (let ((guesspos (point-min)) - (regexp (concat "Node: *" (regexp-quote nodename) " *[,\t\n\177]"))) - ;; First get advice from tag table if file has one. - ;; Also, if this is an indirect info file, - ;; read the proper subfile into this buffer. - (if (marker-position Info-tag-table-marker) - (save-excursion - (let ((m Info-tag-table-marker) - found found-mode) - (save-excursion - (set-buffer (marker-buffer m)) - (goto-char m) - (beginning-of-line) ;so re-search will work. - (setq found (re-search-forward regexp nil t)) - (if found - (setq guesspos (read (current-buffer)))) - (setq found-mode major-mode)) - (if found - (progn - ;; If this is an indirect file, determine - ;; which file really holds this node and - ;; read it in. - (if (not (eq found-mode 'Info-mode)) - ;; Note that the current buffer must be - ;; the *info* buffer on entry to - ;; Info-read-subfile. Thus the hackery - ;; above. - (setq guesspos (Info-read-subfile guesspos)))) - (error "No such node: %s" nodename))))) - (goto-char (max (point-min) (- guesspos 1000))) - ;; Now search from our advised position (or from beg of buffer) - ;; to find the actual node. - (catch 'foo - (while (search-forward "\n\^_" nil t) - (forward-line 1) - (let ((beg (point))) - (forward-line 1) - (if (re-search-backward regexp beg t) - (throw 'foo t)))) - (error "No such node: %s" nodename))) - (Info-select-node))) - ;; If we did not finish finding the specified node, - ;; go back to the previous one. - (or Info-current-node no-going-back (null Info-history) - (let ((hist (car Info-history))) - (setq Info-history (cdr Info-history)) - (Info-find-node (nth 0 hist) (nth 1 hist) t) - (goto-char (nth 2 hist))))) - (goto-char (point-min))) - -;; Cache the contents of the (virtual) dir file, once we have merged -;; it for the first time, so we can save time subsequently. -(defvar Info-dir-contents nil) - -;; Cache for the directory we decided to use for the default-directory -;; of the merged dir text. -(defvar Info-dir-contents-directory nil) - -;; Record the file attributes of all the files from which we -;; constructed Info-dir-contents. -(defvar Info-dir-file-attributes nil) - -;; Construct the Info directory node by merging the files named `dir' -;; from various directories. Set the *info* buffer's -;; default-directory to the first directory we actually get any text -;; from. -(defun Info-insert-dir () - (if (and Info-dir-contents Info-dir-file-attributes - ;; Verify that none of the files we used has changed - ;; since we used it. - (eval (cons 'and - (mapcar '(lambda (elt) - (let ((curr (file-attributes (car elt)))) - ;; Don't compare the access time. - (if curr (setcar (nthcdr 4 curr) 0)) - (setcar (nthcdr 4 (cdr elt)) 0) - (equal (cdr elt) curr))) - Info-dir-file-attributes)))) - (insert Info-dir-contents) - (let ((dirs Info-directory-list) - buffers buffer others nodes dirs-done) - - (setq Info-dir-file-attributes nil) - - ;; Search the directory list for the directory file. - (while dirs - (let ((truename (file-truename (expand-file-name (car dirs))))) - (or (member truename dirs-done) - (member (directory-file-name truename) dirs-done) - ;; Try several variants of specified name. - ;; Try upcasing, appending `.info', or both. - (let* (file - (attrs - (or - (progn (setq file (expand-file-name "dir" truename)) - (file-attributes file)) - (progn (setq file (expand-file-name "DIR" truename)) - (file-attributes file)) - (progn (setq file (expand-file-name "dir.info" truename)) - (file-attributes file)) - (progn (setq file (expand-file-name "DIR.INFO" truename)) - (file-attributes file))))) - (setq dirs-done - (cons truename - (cons (directory-file-name truename) - dirs-done))) - (if attrs - (save-excursion - (or buffers - (message "Composing main Info directory...")) - (set-buffer (generate-new-buffer "info dir")) - (insert-file-contents file) - (setq buffers (cons (current-buffer) buffers) - Info-dir-file-attributes - (cons (cons file attrs) - Info-dir-file-attributes)))))) - (or (cdr dirs) (setq Info-dir-contents-directory - (file-name-as-directory (car dirs)))) - (setq dirs (cdr dirs)))) - - (or buffers - (error "Can't find the Info directory node")) - ;; Distinguish the dir file that comes with Emacs from all the - ;; others. Yes, that is really what this is supposed to do. - ;; If it doesn't work, fix it. - (setq buffer (car buffers) - others (cdr buffers)) - - ;; Insert the entire original dir file as a start; note that we've - ;; already saved its default directory to use as the default - ;; directory for the whole concatenation. - (insert-buffer buffer) - - ;; Look at each of the other buffers one by one. - (while others - (let ((other (car others))) - ;; In each, find all the menus. - (save-excursion - (set-buffer other) - (goto-char (point-min)) - ;; Find each menu, and add an elt to NODES for it. - (while (re-search-forward "^\\* Menu:" nil t) - (let (beg nodename end) - (forward-line 1) - (setq beg (point)) - (search-backward "\n\^_") - (search-forward "Node: ") - (setq nodename (Info-following-node-name)) - (search-forward "\n\^_" nil 'move) - (beginning-of-line) - (setq end (point)) - (setq nodes (cons (list nodename other beg end) nodes)))))) - (setq others (cdr others))) - ;; Add to the main menu a menu item for each other node. - (re-search-forward "^\\* Menu:") - (forward-line 1) - (let ((menu-items '("top")) - (nodes nodes) - (case-fold-search t) - (end (save-excursion (search-forward "\^_" nil t) (point)))) - (while nodes - (let ((nodename (car (car nodes)))) - (save-excursion - (or (member (downcase nodename) menu-items) - (re-search-forward (concat "^\\* " - (regexp-quote nodename) - "::") - end t) - (progn - (insert "* " nodename "::" "\n") - (setq menu-items (cons nodename menu-items)))))) - (setq nodes (cdr nodes)))) - ;; Now take each node of each of the other buffers - ;; and merge it into the main buffer. - (while nodes - (let ((nodename (car (car nodes)))) - (goto-char (point-min)) - ;; Find the like-named node in the main buffer. - (if (re-search-forward (concat "\n\^_.*\n.*Node: " - (regexp-quote nodename) - "[,\n\t]") - nil t) - (progn - (search-forward "\n\^_" nil 'move) - (beginning-of-line) - (insert "\n")) - ;; If none exists, add one. - (goto-char (point-max)) - (insert "\^_\nFile: dir\tNode: " nodename "\n\n* Menu:\n\n")) - ;; Merge the text from the other buffer's menu - ;; into the menu in the like-named node in the main buffer. - (apply 'insert-buffer-substring (cdr (car nodes)))) - (setq nodes (cdr nodes))) - ;; Kill all the buffers we just made. - (while buffers - (kill-buffer (car buffers)) - (setq buffers (cdr buffers))) - (message "Composing main Info directory...done")) - (setq Info-dir-contents (buffer-string))) - (setq default-directory Info-dir-contents-directory)) - -;; Note that on entry to this function the current-buffer must be the -;; *info* buffer; not the info tags buffer. -(defun Info-read-subfile (nodepos) - ;; NODEPOS is either a position (in the Info file as a whole, - ;; not relative to a subfile) or the name of a subfile. - (let (lastfilepos - lastfilename) - (if (numberp nodepos) - (save-excursion - (set-buffer (marker-buffer Info-tag-table-marker)) - (goto-char (point-min)) - (search-forward "\n\^_") - (forward-line 2) - (catch 'foo - (while (not (looking-at "\^_")) - (if (not (eolp)) - (let ((beg (point)) - thisfilepos thisfilename) - (search-forward ": ") - (setq thisfilename (buffer-substring beg (- (point) 2))) - (setq thisfilepos (read (current-buffer))) - ;; read in version 19 stops at the end of number. - ;; Advance to the next line. - (forward-line 1) - (if (> thisfilepos nodepos) - (throw 'foo t)) - (setq lastfilename thisfilename) - (setq lastfilepos thisfilepos)) - (forward-line 1))))) - (setq lastfilename nodepos) - (setq lastfilepos 0)) - ;; Assume previous buffer is in Info-mode. - ;; (set-buffer (get-buffer "*info*")) - (or (equal Info-current-subfile lastfilename) - (let ((buffer-read-only nil)) - (setq buffer-file-name nil) - (widen) - (erase-buffer) - (info-insert-file-contents lastfilename) - (set-buffer-modified-p nil) - (setq Info-current-subfile lastfilename))) - (goto-char (point-min)) - (search-forward "\n\^_") - (if (numberp nodepos) - (+ (- nodepos lastfilepos) (point))))) - -;; Select the info node that point is in. -(defun Info-select-node () - (save-excursion - ;; Find beginning of node. - (search-backward "\n\^_") - (forward-line 2) - ;; Get nodename spelled as it is in the node. - (re-search-forward "Node:[ \t]*") - (setq Info-current-node - (buffer-substring-no-properties (point) - (progn - (skip-chars-forward "^,\t\n") - (point)))) - (Info-set-mode-line) - ;; Find the end of it, and narrow. - (beginning-of-line) - (let (active-expression) - (narrow-to-region (point) - (if (re-search-forward "\n[\^_\f]" nil t) - (prog1 - (1- (point)) - (if (looking-at "[\n\^_\f]*execute: ") - (progn - (goto-char (match-end 0)) - (setq active-expression - (read (current-buffer)))))) - (point-max))) - (if Info-enable-active-nodes (eval active-expression)) - (if Info-fontify (Info-fontify-node)) - (run-hooks 'Info-selection-hook)))) - -(defun Info-set-mode-line () - (setq mode-line-buffer-identification - (concat - " Info: (" - (if Info-current-file - (file-name-nondirectory Info-current-file) - "") - ")" - (or Info-current-node "")))) - -;; Go to an info node specified with a filename-and-nodename string -;; of the sort that is found in pointers in nodes. - -(defun Info-goto-node (nodename) - "Go to info node named NAME. Give just NODENAME or (FILENAME)NODENAME." - (interactive (list (Info-read-node-name "Goto node: "))) - (let (filename) - (string-match "\\s *\\((\\s *\\([^\t)]*\\)\\s *)\\s *\\|\\)\\(.*\\)" - nodename) - (setq filename (if (= (match-beginning 1) (match-end 1)) - "" - (substring nodename (match-beginning 2) (match-end 2))) - nodename (substring nodename (match-beginning 3) (match-end 3))) - (let ((trim (string-match "\\s *\\'" filename))) - (if trim (setq filename (substring filename 0 trim)))) - (let ((trim (string-match "\\s *\\'" nodename))) - (if trim (setq nodename (substring nodename 0 trim)))) - (if transient-mark-mode (deactivate-mark)) - (Info-find-node (if (equal filename "") nil filename) - (if (equal nodename "") "Top" nodename)))) - -;; This function is used as the "completion table" while reading a node name. -;; It does completion using the alist in completion-table -;; unless STRING starts with an open-paren. -(defun Info-read-node-name-1 (string predicate code) - (let ((no-completion (and (> (length string) 0) (eq (aref string 0) ?\()))) - (cond ((eq code nil) - (if no-completion - string - (try-completion string completion-table predicate))) - ((eq code t) - (if no-completion - nil - (all-completions string completion-table predicate))) - ((eq code 'lambda) - (if no-completion - t - (assoc string completion-table)))))) - -(defun Info-read-node-name (prompt &optional default) - (let* ((completion-ignore-case t) - (completion-table (Info-build-node-completions)) - (nodename (completing-read prompt 'Info-read-node-name-1 nil t))) - (if (equal nodename "") - (or default - (Info-read-node-name prompt)) - nodename))) - -(defun Info-build-node-completions () - (or Info-current-file-completions - (let ((compl nil)) - (save-excursion - (save-restriction - (if (marker-buffer Info-tag-table-marker) - (let ((marker Info-tag-table-marker)) - (set-buffer (marker-buffer marker)) - (widen) - (goto-char marker) - (while (re-search-forward "\nNode: \\(.*\\)\177" nil t) - (setq compl - (cons (list (buffer-substring (match-beginning 1) - (match-end 1))) - compl)))) - (widen) - (goto-char (point-min)) - (while (search-forward "\n\^_" nil t) - (forward-line 1) - (let ((beg (point))) - (forward-line 1) - (if (re-search-backward "Node: *\\([^,\n]*\\) *[,\n\t]" - beg t) - (setq compl - (cons (list (buffer-substring (match-beginning 1) - (match-end 1))) - compl)))))))) - (setq Info-current-file-completions compl)))) - -(defun Info-restore-point (hl) - "If this node has been visited, restore the point value when we left." - (while hl - (if (and (equal (nth 0 (car hl)) Info-current-file) - ;; Use string-equal, not equal, to ignore text props. - (string-equal (nth 1 (car hl)) Info-current-node)) - (progn - (goto-char (nth 2 (car hl))) - (setq hl nil)) ;terminate the while at next iter - (setq hl (cdr hl))))) - -(defvar Info-last-search nil - "Default regexp for \\<Info-mode-map>\\[Info-search] command to search for.") - -(defun Info-search (regexp) - "Search for REGEXP, starting from point, and select node it's found in." - (interactive "sSearch (regexp): ") - (if transient-mark-mode (deactivate-mark)) - (if (equal regexp "") - (setq regexp Info-last-search) - (setq Info-last-search regexp)) - (let ((found ()) current - (onode Info-current-node) - (ofile Info-current-file) - (opoint (point)) - (ostart (window-start)) - (osubfile Info-current-subfile)) - (save-excursion - (save-restriction - (widen) - (if (null Info-current-subfile) - (progn (re-search-forward regexp) (setq found (point))) - (condition-case err - (progn (re-search-forward regexp) (setq found (point))) - (search-failed nil))))) - (if (not found) ;can only happen in subfile case -- else would have erred - (unwind-protect - (let ((list ())) - (save-excursion - (set-buffer (marker-buffer Info-tag-table-marker)) - (goto-char (point-min)) - (search-forward "\n\^_\nIndirect:") - (save-restriction - (narrow-to-region (point) - (progn (search-forward "\n\^_") - (1- (point)))) - (goto-char (point-min)) - (search-forward (concat "\n" osubfile ": ")) - (beginning-of-line) - (while (not (eobp)) - (re-search-forward "\\(^.*\\): [0-9]+$") - (goto-char (+ (match-end 1) 2)) - (setq list (cons (cons (read (current-buffer)) - (buffer-substring - (match-beginning 1) (match-end 1))) - list)) - (goto-char (1+ (match-end 0)))) - (setq list (nreverse list) - current (car (car list)) - list (cdr list)))) - (while list - (message "Searching subfile %s..." (cdr (car list))) - (Info-read-subfile (car (car list))) - (setq list (cdr list)) -;; (goto-char (point-min)) - (if (re-search-forward regexp nil t) - (setq found (point) list ()))) - (if found - (message "") - (signal 'search-failed (list regexp)))) - (if (not found) - (progn (Info-read-subfile osubfile) - (goto-char opoint) - (Info-select-node) - (set-window-start (selected-window) ostart))))) - (widen) - (goto-char found) - (Info-select-node) - ;; Use string-equal, not equal, to ignore text props. - (or (and (string-equal onode Info-current-node) - (equal ofile Info-current-file)) - (setq Info-history (cons (list ofile onode opoint) - Info-history))))) - -;; Extract the value of the node-pointer named NAME. -;; If there is none, use ERRORNAME in the error message; -;; if ERRORNAME is nil, just return nil. -(defun Info-extract-pointer (name &optional errorname) - (save-excursion - (goto-char (point-min)) - (forward-line 1) - (if (re-search-backward (concat name ":") nil t) - (progn - (goto-char (match-end 0)) - (Info-following-node-name)) - (if (eq errorname t) - nil - (error "Node has no %s" (capitalize (or errorname name))))))) - -;; Return the node name in the buffer following point. -;; ALLOWEDCHARS, if non-nil, goes within [...] to make a regexp -;; saying which chars may appear in the node name. -(defun Info-following-node-name (&optional allowedchars) - (skip-chars-forward " \t") - (buffer-substring-no-properties - (point) - (progn - (while (looking-at (concat "[" (or allowedchars "^,\t\n") "]")) - (skip-chars-forward (concat (or allowedchars "^,\t\n") "(")) - (if (looking-at "(") - (skip-chars-forward "^)"))) - (skip-chars-backward " ") - (point)))) - -(defun Info-next () - "Go to the next node of this node." - (interactive) - (Info-goto-node (Info-extract-pointer "next"))) - -(defun Info-prev () - "Go to the previous node of this node." - (interactive) - (Info-goto-node (Info-extract-pointer "prev[ious]*" "previous"))) - -(defun Info-up () - "Go to the superior node of this node." - (interactive) - (Info-goto-node (Info-extract-pointer "up")) - (Info-restore-point Info-history)) - -(defun Info-last () - "Go back to the last node visited." - (interactive) - (or Info-history - (error "This is the first Info node you looked at")) - (let (filename nodename opoint) - (setq filename (car (car Info-history))) - (setq nodename (car (cdr (car Info-history)))) - (setq opoint (car (cdr (cdr (car Info-history))))) - (setq Info-history (cdr Info-history)) - (Info-find-node filename nodename) - (setq Info-history (cdr Info-history)) - (goto-char opoint))) - -(defun Info-directory () - "Go to the Info directory node." - (interactive) - (Info-find-node "dir" "top")) - -(defun Info-follow-reference (footnotename) - "Follow cross reference named NAME to the node it refers to. -NAME may be an abbreviation of the reference name." - (interactive - (let ((completion-ignore-case t) - completions default alt-default (start-point (point)) str i bol eol) - (save-excursion - ;; Store end and beginning of line. - (end-of-line) - (setq eol (point)) - (beginning-of-line) - (setq bol (point)) - - (goto-char (point-min)) - (while (re-search-forward "\\*note[ \n\t]*\\([^:]*\\):" nil t) - (setq str (buffer-substring - (match-beginning 1) - (1- (point)))) - ;; See if this one should be the default. - (and (null default) - (<= (match-beginning 0) start-point) - (<= start-point (point)) - (setq default t)) - ;; See if this one should be the alternate default. - (and (null alt-default) - (and (<= bol (match-beginning 0)) - (<= (point) eol)) - (setq alt-default t)) - (setq i 0) - (while (setq i (string-match "[ \n\t]+" str i)) - (setq str (concat (substring str 0 i) " " - (substring str (match-end 0)))) - (setq i (1+ i))) - ;; Record as a completion and perhaps as default. - (if (eq default t) (setq default str)) - (if (eq alt-default t) (setq alt-default str)) - ;; Don't add this string if it's a duplicate. - ;; We use a loop instead of "(assoc str completions)" because - ;; we want to do a case-insensitive compare. - (let ((tail completions) - (tem (downcase str))) - (while (and tail - (not (string-equal tem (downcase (car (car tail)))))) - (setq tail (cdr tail))) - (or tail - (setq completions - (cons (cons str nil) - completions)))))) - ;; If no good default was found, try an alternate. - (or default - (setq default alt-default)) - ;; If only one cross-reference found, then make it default. - (if (eq (length completions) 1) - (setq default (car (car completions)))) - (if completions - (let ((input (completing-read (if default - (concat "Follow reference named: (" - default ") ") - "Follow reference named: ") - completions nil t))) - (list (if (equal input "") - default input))) - (error "No cross-references in this node")))) - (let (target beg i (str (concat "\\*note " (regexp-quote footnotename)))) - (while (setq i (string-match " " str i)) - (setq str (concat (substring str 0 i) "[ \t\n]+" (substring str (1+ i)))) - (setq i (+ i 6))) - (save-excursion - (goto-char (point-min)) - (or (re-search-forward str nil t) - (error "No cross-reference named %s" footnotename)) - (goto-char (+ (match-beginning 0) 5)) - (setq target - (Info-extract-menu-node-name "Bad format cross reference" t))) - (while (setq i (string-match "[ \t\n]+" target i)) - (setq target (concat (substring target 0 i) " " - (substring target (match-end 0)))) - (setq i (+ i 1))) - (Info-goto-node target))) - -(defun Info-extract-menu-node-name (&optional errmessage multi-line) - (skip-chars-forward " \t\n") - (let ((beg (point)) - str i) - (skip-chars-forward "^:") - (forward-char 1) - (setq str - (if (looking-at ":") - (buffer-substring-no-properties beg (1- (point))) - (skip-chars-forward " \t\n") - (Info-following-node-name (if multi-line "^.,\t" "^.,\t\n")))) - (while (setq i (string-match "\n" str i)) - (aset str i ?\ )) - ;; Collapse multiple spaces. - (while (string-match " +" str) - (setq str (replace-match " " t t str))) - str)) - -;; No one calls this. -;;(defun Info-menu-item-sequence (list) -;; (while list -;; (Info-menu (car list)) -;; (setq list (cdr list)))) - -(defun Info-complete-menu-item (string predicate action) - (let ((case-fold-search t)) - (cond ((eq action nil) - (let (completions - (pattern (concat "\n\\* \\(" - (regexp-quote string) - "[^:\t\n]*\\):"))) - (save-excursion - (set-buffer Info-complete-menu-buffer) - (goto-char (point-min)) - (search-forward "\n* Menu:") - (while (re-search-forward pattern nil t) - (setq completions (cons (cons (format "%s" - (buffer-substring - (match-beginning 1) - (match-end 1))) - (match-beginning 1)) - completions)))) - (try-completion string completions predicate))) - ((eq action t) - (let (completions - (pattern (concat "\n\\* \\(" - (regexp-quote string) - "[^:\t\n]*\\):"))) - (save-excursion - (set-buffer Info-complete-menu-buffer) - (goto-char (point-min)) - (search-forward "\n* Menu:") - (while (re-search-forward pattern nil t) - (setq completions (cons (cons (format "%s" - (buffer-substring - (match-beginning 1) - (match-end 1))) - (match-beginning 1)) - completions)))) - (all-completions string completions predicate))) - (t - (save-excursion - (set-buffer Info-complete-menu-buffer) - (goto-char (point-min)) - (search-forward "\n* Menu:") - (re-search-forward (concat "\n\\* " - (regexp-quote string) - ":") - nil t)))))) - - -(defun Info-menu (menu-item) - "Go to node for menu item named (or abbreviated) NAME. -Completion is allowed, and the menu item point is on is the default." - (interactive - (let ((completions '()) - ;; If point is within a menu item, use that item as the default - (default nil) - (p (point)) - beg - (last nil)) - (save-excursion - (goto-char (point-min)) - (if (not (search-forward "\n* menu:" nil t)) - (error "No menu in this node")) - (setq beg (point)) - (and (< (point) p) - (save-excursion - (goto-char p) - (end-of-line) - (re-search-backward "\n\\* \\([^:\t\n]*\\):" beg t) - (setq default (format "%s" (buffer-substring - (match-beginning 1) - (match-end 1))))))) - (let ((item nil)) - (while (null item) - (setq item (let ((completion-ignore-case t) - (Info-complete-menu-buffer (current-buffer))) - (completing-read (if default - (format "Menu item (default %s): " - default) - "Menu item: ") - 'Info-complete-menu-item nil t))) - ;; we rely on the fact that completing-read accepts an input - ;; of "" even when the require-match argument is true and "" - ;; is not a valid possibility - (if (string= item "") - (if default - (setq item default) - ;; ask again - (setq item nil)))) - (list item)))) - ;; there is a problem here in that if several menu items have the same - ;; name you can only go to the node of the first with this command. - (Info-goto-node (Info-extract-menu-item menu-item))) - -(defun Info-extract-menu-item (menu-item) - (setq menu-item (regexp-quote menu-item)) - (save-excursion - (goto-char (point-min)) - (or (search-forward "\n* menu:" nil t) - (error "No menu in this node")) - (or (re-search-forward (concat "\n\\* " menu-item ":") nil t) - (re-search-forward (concat "\n\\* " menu-item) nil t) - (error "No such item in menu")) - (beginning-of-line) - (forward-char 2) - (Info-extract-menu-node-name))) - -;; If COUNT is nil, use the last item in the menu. -(defun Info-extract-menu-counting (count) - (save-excursion - (goto-char (point-min)) - (or (search-forward "\n* menu:" nil t) - (error "No menu in this node")) - (if count - (or (search-forward "\n* " nil t count) - (error "Too few items in menu")) - (while (search-forward "\n* " nil t) - nil)) - (Info-extract-menu-node-name))) - -(defun Info-nth-menu-item () - "Go to the node of the Nth menu item. -N is the digit argument used to invoke this command." - (interactive) - (Info-goto-node - (Info-extract-menu-counting - (- (aref (this-command-keys) (1- (length (this-command-keys)))) ?0)))) - -(defun Info-top-node () - "Go to the Top node of this file." - (interactive) - (Info-goto-node "Top")) - -(defun Info-final-node () - "Go to the final node in this file." - (interactive) - (Info-goto-node "Top") - (let (Info-history) - ;; Go to the last node in the menu of Top. - (Info-goto-node (Info-extract-menu-counting nil)) - ;; If the last node in the menu is not last in pointer structure, - ;; move forward until we can't go any farther. - (while (Info-forward-node t t) nil) - ;; Then keep moving down to last subnode, unless we reach an index. - (while (and (not (string-match "\\<index\\>" Info-current-node)) - (save-excursion (search-forward "\n* Menu:" nil t))) - (Info-goto-node (Info-extract-menu-counting nil))))) - -(defun Info-forward-node (&optional not-down no-error) - "Go forward one node, considering all nodes as forming one sequence." - (interactive) - (goto-char (point-min)) - (forward-line 1) - ;; three possibilities, in order of priority: - ;; 1. next node is in a menu in this node (but not in an index) - ;; 2. next node is next at same level - ;; 3. next node is up and next - (cond ((and (not not-down) - (save-excursion (search-forward "\n* menu:" nil t)) - (not (string-match "\\<index\\>" Info-current-node))) - (Info-goto-node (Info-extract-menu-counting 1)) - t) - ((save-excursion (search-backward "next:" nil t)) - (Info-next) - t) - ((and (save-excursion (search-backward "up:" nil t)) - ;; Use string-equal, not equal, to ignore text props. - (not (string-equal (downcase (Info-extract-pointer "up")) - "top"))) - (let ((old-node Info-current-node)) - (Info-up) - (let (Info-history success) - (unwind-protect - (setq success (Info-forward-node t no-error)) - (or success (Info-goto-node old-node)))))) - (no-error nil) - (t (error "No pointer forward from this node")))) - -(defun Info-backward-node () - "Go backward one node, considering all nodes as forming one sequence." - (interactive) - (let ((prevnode (Info-extract-pointer "prev[ious]*" t)) - (upnode (Info-extract-pointer "up" t))) - (cond ((and upnode (string-match "(" upnode)) - (error "First node in file")) - ((and upnode (or (null prevnode) - ;; Use string-equal, not equal, - ;; to ignore text properties. - (string-equal (downcase prevnode) - (downcase upnode)))) - (Info-up)) - (prevnode - ;; If we move back at the same level, - ;; go down to find the last subnode*. - (Info-prev) - (let (Info-history) - (while (and (not (string-match "\\<index\\>" Info-current-node)) - (save-excursion (search-forward "\n* Menu:" nil t))) - (Info-goto-node (Info-extract-menu-counting nil))))) - (t - (error "No pointer backward from this node"))))) - -(defun Info-exit () - "Exit Info by selecting some other buffer." - (interactive) - (if Info-standalone - (save-buffers-kill-emacs) - (bury-buffer))) - -(defun Info-next-menu-item () - (interactive) - (save-excursion - (forward-line -1) - (search-forward "\n* menu:" nil t) - (or (search-forward "\n* " nil t) - (error "No more items in menu")) - (Info-goto-node (Info-extract-menu-node-name)))) - -(defun Info-last-menu-item () - (interactive) - (save-excursion - (forward-line 1) - (let ((beg (save-excursion - (and (search-backward "\n* menu:" nil t) - (point))))) - (or (and beg (search-backward "\n* " beg t)) - (error "No previous items in menu"))) - (Info-goto-node (save-excursion - (goto-char (match-end 0)) - (Info-extract-menu-node-name))))) - -(defmacro Info-no-error (&rest body) - (list 'condition-case nil (cons 'progn (append body '(t))) '(error nil))) - -(defun Info-next-preorder () - "Go to the next subnode or the next node, or go up a level." - (interactive) - (cond ((Info-no-error (Info-next-menu-item))) - ((Info-no-error (Info-next))) - ((Info-no-error (Info-up)) - ;; Since we have already gone thru all the items in this menu, - ;; go up to the end of this node. - (goto-char (point-max)) - ;; Since logically we are done with the node with that menu, - ;; move on from it. - (Info-next-preorder)) - (t - (error "No more nodes")))) - -(defun Info-last-preorder () - "Go to the last node, popping up a level if there is none." - (interactive) - (cond ((Info-no-error - (Info-last-menu-item) - ;; If we go down a menu item, go to the end of the node - ;; so we can scroll back through it. - (goto-char (point-max))) - ;; Keep going down, as long as there are nested menu nodes. - (while (Info-no-error - (Info-last-menu-item) - ;; If we go down a menu item, go to the end of the node - ;; so we can scroll back through it. - (goto-char (point-max)))) - (recenter -1)) - ((Info-no-error (Info-prev)) - (goto-char (point-max)) - (while (Info-no-error - (Info-last-menu-item) - ;; If we go down a menu item, go to the end of the node - ;; so we can scroll back through it. - (goto-char (point-max)))) - (recenter -1)) - ((Info-no-error (Info-up)) - (goto-char (point-min)) - (or (search-forward "\n* Menu:" nil t) - (goto-char (point-max)))) - (t (error "No previous nodes")))) - -(defun Info-scroll-up () - "Scroll one screenful forward in Info, considering all nodes as one sequence. -Once you scroll far enough in a node that its menu appears on the screen -but after point, the next scroll moves into its first subnode. - -When you scroll past the end of a node, that goes to the next node; if -this node has no successor, it moves to the parent node's successor, -and so on. If point is inside the menu of a node, it moves to -subnode indicated by the following menu item. (That case won't -normally result from this command, but can happen in other ways.)" - - (interactive) - (if (or (< (window-start) (point-min)) - (> (window-start) (point-max))) - (set-window-start (selected-window) (point))) - (let ((virtual-end (save-excursion - (goto-char (point-min)) - (if (search-forward "\n* Menu:" nil t) - (point) - (point-max))))) - (if (or (< virtual-end (window-start)) - (pos-visible-in-window-p virtual-end)) - (Info-next-preorder) - (scroll-up)))) - -(defun Info-scroll-down () - "Scroll one screenful back in Info, considering all nodes as one sequence. -Within the menu of a node, this goes to its last subnode. -When you scroll past the beginning of a node, that goes to the -previous node or back up to the parent node." - (interactive) - (if (or (< (window-start) (point-min)) - (> (window-start) (point-max))) - (set-window-start (selected-window) (point))) - (let* ((current-point (point)) - (virtual-end (save-excursion - (beginning-of-line) - (setq current-point (point)) - (goto-char (point-min)) - (search-forward "\n* Menu:" - current-point - t)))) - (if (or virtual-end (pos-visible-in-window-p (point-min))) - (Info-last-preorder) - (scroll-down)))) - -(defun Info-next-reference (&optional recur) - "Move cursor to the next cross-reference or menu item in the node." - (interactive) - (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:") - (old-pt (point))) - (or (eobp) (forward-char 1)) - (or (re-search-forward pat nil t) - (progn - (goto-char (point-min)) - (or (re-search-forward pat nil t) - (progn - (goto-char old-pt) - (error "No cross references in this node"))))) - (goto-char (match-beginning 0)) - (if (looking-at "\\* Menu:") - (if recur - (error "No cross references in this node") - (Info-next-reference t))))) - -(defun Info-prev-reference (&optional recur) - "Move cursor to the previous cross-reference or menu item in the node." - (interactive) - (let ((pat "\\*note[ \n\t]*\\([^:]*\\):\\|^\\* .*:") - (old-pt (point))) - (or (re-search-backward pat nil t) - (progn - (goto-char (point-max)) - (or (re-search-backward pat nil t) - (progn - (goto-char old-pt) - (error "No cross references in this node"))))) - (goto-char (match-beginning 0)) - (if (looking-at "\\* Menu:") - (if recur - (error "No cross references in this node") - (Info-prev-reference t))))) - -(defun Info-index (topic) - "Look up a string in the index for this file. -The index is defined as the first node in the top-level menu whose -name contains the word \"Index\", plus any immediately following -nodes whose names also contain the word \"Index\". -If there are no exact matches to the specified topic, this chooses -the first match which is a case-insensitive substring of a topic. -Use the `,' command to see the other matches. -Give a blank topic name to go to the Index node itself." - (interactive "sIndex topic: ") - (let ((orignode Info-current-node) - (rnode nil) - (pattern (format "\n\\* \\([^\n:]*%s[^\n:]*\\):[ \t]*\\([^.\n]*\\)\\.[ \t]*\\([0-9]*\\)" - (regexp-quote topic))) - node) - (Info-goto-node "Top") - (or (search-forward "\n* menu:" nil t) - (error "No index")) - (or (re-search-forward "\n\\* \\(.*\\<Index\\>\\)" nil t) - (error "No index")) - (goto-char (match-beginning 1)) - ;; Here, and subsequently in this function, - ;; we bind Info-history to nil for internal node-switches - ;; so that we don't put junk in the history. - ;; In the first Info-goto-node call, above, we do update the history - ;; because that is what the user's previous node choice into it. - (let ((Info-history nil)) - (Info-goto-node (Info-extract-menu-node-name))) - (or (equal topic "") - (let ((matches nil) - (exact nil) - (Info-history nil) - found) - (while - (progn - (goto-char (point-min)) - (while (re-search-forward pattern nil t) - (setq matches - (cons (list (buffer-substring (match-beginning 1) - (match-end 1)) - (buffer-substring (match-beginning 2) - (match-end 2)) - Info-current-node - (string-to-int (concat "0" - (buffer-substring - (match-beginning 3) - (match-end 3))))) - matches))) - (and (setq node (Info-extract-pointer "next" t)) - (string-match "\\<Index\\>" node))) - (Info-goto-node node)) - (or matches - (progn - (Info-goto-node orignode) - (error "No `%s' in index" topic))) - ;; Here it is a feature that assoc is case-sensitive. - (while (setq found (assoc topic matches)) - (setq exact (cons found exact) - matches (delq found matches))) - (setq Info-index-alternatives (nconc exact (nreverse matches))) - (Info-index-next 0))))) - -(defun Info-index-next (num) - "Go to the next matching index item from the last `i' command." - (interactive "p") - (or Info-index-alternatives - (error "No previous `i' command")) - (while (< num 0) - (setq num (+ num (length Info-index-alternatives)))) - (while (> num 0) - (setq Info-index-alternatives - (nconc (cdr Info-index-alternatives) - (list (car Info-index-alternatives))) - num (1- num))) - (Info-goto-node (nth 1 (car Info-index-alternatives))) - (if (> (nth 3 (car Info-index-alternatives)) 0) - (forward-line (nth 3 (car Info-index-alternatives))) - (forward-line 3) ; don't search in headers - (let ((name (car (car Info-index-alternatives)))) - (Info-find-index-name name))) - (message "Found `%s' in %s. %s" - (car (car Info-index-alternatives)) - (nth 2 (car Info-index-alternatives)) - (if (cdr Info-index-alternatives) - "(Press `,' for more)" - "(Only match)"))) - -(defun Info-find-index-name (name) - "Move point to the place within the current node where NAME is defined." - (if (or (re-search-forward (format - "[a-zA-Z]+: %s\\( \\|$\\)" - (regexp-quote name)) nil t) - (search-forward (format "`%s'" name) nil t) - (and (string-match "\\`.*\\( (.*)\\)\\'" name) - (search-forward - (format "`%s'" (substring name 0 (match-beginning 1))) - nil t)) - (search-forward name nil t)) - (beginning-of-line) - (goto-char (point-min)))) - -(defun Info-undefined () - "Make command be undefined in Info." - (interactive) - (ding)) - -(defun Info-help () - "Enter the Info tutorial." - (interactive) - (delete-other-windows) - (Info-find-node "info" - (if (< (window-height) 23) - "Help-Small-Screen" - "Help"))) - -(defun Info-summary () - "Display a brief summary of all Info commands." - (interactive) - (save-window-excursion - (switch-to-buffer "*Help*") - (erase-buffer) - (insert (documentation 'Info-mode)) - (help-mode) - (goto-char (point-min)) - (let (ch flag) - (while (progn (setq flag (not (pos-visible-in-window-p (point-max)))) - (message (if flag "Type Space to see more" - "Type Space to return to Info")) - (if (not (eq ?\ (setq ch (read-event)))) - (progn (setq unread-command-events (list ch)) nil) - flag)) - (scroll-up))) - (bury-buffer "*Help*"))) - -(defun Info-get-token (pos start all &optional errorstring) - "Return the token around POS, -POS must be somewhere inside the token -START is a regular expression which will match the - beginning of the tokens delimited string -ALL is a regular expression with a single - parenthesized subpattern which is the token to be - returned. E.g. '{\(.*\)}' would return any string - enclosed in braces around POS. -SIG optional fourth argument, controls action on no match - nil: return nil - t: beep - a string: signal an error, using that string." - (save-excursion - (goto-char pos) - ;; First look for a match for START that goes across POS. - (while (and (not (bobp)) (> (point) (- pos (length start))) - (not (looking-at start))) - (forward-char -1)) - ;; If we did not find one, search back for START - ;; (this finds only matches that end at or before POS). - (or (looking-at start) - (progn - (goto-char pos) - (re-search-backward start (max (point-min) (- pos 200)) 'yes))) - (let (found) - (while (and (re-search-forward all (min (point-max) (+ pos 200)) 'yes) - (not (setq found (and (<= (match-beginning 0) pos) - (> (match-end 0) pos)))))) - (if (and found (<= (match-beginning 0) pos) - (> (match-end 0) pos)) - (buffer-substring (match-beginning 1) (match-end 1)) - (cond ((null errorstring) - nil) - ((eq errorstring t) - (beep) - nil) - (t - (error "No %s around position %d" errorstring pos))))))) - -(defun Info-mouse-follow-nearest-node (click) - "\\<Info-mode-map>Follow a node reference near point. -Like \\[Info-menu], \\[Info-follow-reference], \\[Info-next], \\[Info-prev] or \\[Info-up] command, depending on where you click. -At end of the node's text, moves to the next node, or up if none." - (interactive "e") - (let* ((start (event-start click)) - (window (car start)) - (pos (car (cdr start)))) - (select-window window) - (goto-char pos)) - (and (not (Info-try-follow-nearest-node)) - (save-excursion (forward-line 1) (eobp)) - (Info-next-preorder))) - -(defun Info-follow-nearest-node () - "\\<Info-mode-map>Follow a node reference near point. -Like \\[Info-menu], \\[Info-follow-reference], \\[Info-next], \\[Info-prev] or \\[Info-up] command, depending on where point is. -If no reference to follow, moves to the next node, or up if none." - (interactive) - (or (Info-try-follow-nearest-node) - (Info-next-preorder))) - -;; Common subroutine. -(defun Info-try-follow-nearest-node () - "Follow a node reference near point. Return non-nil if successful." - (let (node) - (cond - ((setq node (Info-get-token (point) "\\*note[ \n]" - "\\*note[ \n]\\([^:]*\\):")) - (Info-follow-reference node)) - ((setq node (Info-get-token (point) "\\* " "\\* \\([^:]*\\)::")) - (Info-goto-node node)) - ((setq node (Info-get-token (point) "\\* " "\\* \\([^:]*\\):")) - (Info-menu node)) - ((setq node (Info-get-token (point) "Up: " "Up: \\([^,\n\t]*\\)")) - (Info-goto-node node)) - ((setq node (Info-get-token (point) "Next: " "Next: \\([^,\n\t]*\\)")) - (Info-goto-node node)) - ((setq node (Info-get-token (point) "File: " "File: \\([^,\n\t]*\\)")) - (Info-goto-node "Top")) - ((setq node (Info-get-token (point) "Prev: " "Prev: \\([^,\n\t]*\\)")) - (Info-goto-node node))) - node)) - -(defvar Info-mode-map nil - "Keymap containing Info commands.") -(if Info-mode-map - nil - (setq Info-mode-map (make-keymap)) - (suppress-keymap Info-mode-map) - (define-key Info-mode-map "." 'beginning-of-buffer) - (define-key Info-mode-map " " 'Info-scroll-up) - (define-key Info-mode-map "\C-m" 'Info-follow-nearest-node) - (define-key Info-mode-map "\t" 'Info-next-reference) - (define-key Info-mode-map "\e\t" 'Info-prev-reference) - (define-key Info-mode-map "1" 'Info-nth-menu-item) - (define-key Info-mode-map "2" 'Info-nth-menu-item) - (define-key Info-mode-map "3" 'Info-nth-menu-item) - (define-key Info-mode-map "4" 'Info-nth-menu-item) - (define-key Info-mode-map "5" 'Info-nth-menu-item) - (define-key Info-mode-map "6" 'Info-nth-menu-item) - (define-key Info-mode-map "7" 'Info-nth-menu-item) - (define-key Info-mode-map "8" 'Info-nth-menu-item) - (define-key Info-mode-map "9" 'Info-nth-menu-item) - (define-key Info-mode-map "0" 'undefined) - (define-key Info-mode-map "?" 'Info-summary) - (define-key Info-mode-map "]" 'Info-forward-node) - (define-key Info-mode-map "[" 'Info-backward-node) - (define-key Info-mode-map "<" 'Info-top-node) - (define-key Info-mode-map ">" 'Info-final-node) - (define-key Info-mode-map "b" 'beginning-of-buffer) - (define-key Info-mode-map "d" 'Info-directory) - (define-key Info-mode-map "e" 'Info-edit) - (define-key Info-mode-map "f" 'Info-follow-reference) - (define-key Info-mode-map "g" 'Info-goto-node) - (define-key Info-mode-map "h" 'Info-help) - (define-key Info-mode-map "i" 'Info-index) - (define-key Info-mode-map "l" 'Info-last) - (define-key Info-mode-map "m" 'Info-menu) - (define-key Info-mode-map "n" 'Info-next) - (define-key Info-mode-map "p" 'Info-prev) - (define-key Info-mode-map "q" 'Info-exit) - (define-key Info-mode-map "s" 'Info-search) - ;; For consistency with Rmail. - (define-key Info-mode-map "\M-s" 'Info-search) - (define-key Info-mode-map "t" 'Info-top-node) - (define-key Info-mode-map "u" 'Info-up) - (define-key Info-mode-map "," 'Info-index-next) - (define-key Info-mode-map "\177" 'Info-scroll-down) - (define-key Info-mode-map [mouse-2] 'Info-mouse-follow-nearest-node) - ) - -(defun Info-check-pointer (item) - ;; Non-nil if ITEM is present in this node. - (condition-case nil - (Info-extract-pointer item) - (error nil))) - -(easy-menu-define Info-mode-menu Info-mode-map - "Menu for info files." - '("Info" - ["Up" Info-up (Info-check-pointer "up")] - ["Next" Info-next (Info-check-pointer "next")] - ["Previous" Info-prev (Info-check-pointer "prev[ious]*")] - ("Menu item" ["You should never see this" report-emacs-bug t]) - ("Reference" ["You should never see this" report-emacs-bug t]) - ["Search..." Info-search t] - ["Goto node..." Info-goto-node t] - ["Last" Info-last Info-history] - ["Exit" Info-exit t])) - -(defvar Info-menu-last-node nil) -;; Last node the menu was created for. - -(defun Info-menu-update () - ;; Update the Info menu for the current node. - (condition-case nil - (if (or (not (eq major-mode 'Info-mode)) - (eq Info-current-node Info-menu-last-node)) - () - ;; Update menu menu. - (let* ((Info-complete-menu-buffer (current-buffer)) - (items (nreverse (condition-case nil - (Info-complete-menu-item - "" (lambda (e) t) t) - (error nil)))) - entries current - (number 0)) - (while (and items (< number 9)) - (setq current (car items) - items (cdr items) - number (1+ number)) - (setq entries (cons `[,current - (Info-menu ,current) - :keys ,(format "%d" number)] - entries))) - (if items - (setq entries (cons ["Other..." Info-menu t] entries))) - (or entries - (setq entries (list ["No menu" nil nil]))) - (easy-menu-change '("Info") "Menu item" (nreverse entries))) - ;; Update reference menu. Code stolen from `Info-follow-reference'. - (let ((items nil) - str i entries current - (number 0)) - (save-excursion - (goto-char (point-min)) - (while (re-search-forward "\\*note[ \n\t]*\\([^:]*\\):" nil t) - (setq str (buffer-substring - (match-beginning 1) - (1- (point)))) - (setq i 0) - (while (setq i (string-match "[ \n\t]+" str i)) - (setq str (concat (substring str 0 i) " " - (substring str (match-end 0)))) - (setq i (1+ i))) - (setq items - (cons str items)))) - (while (and items (< number 9)) - (setq current (car items) - items (cdr items) - number (1+ number)) - (setq entries (cons `[,current - (Info-follow-reference ,current) - t] - entries))) - (if items - (setq entries (cons ["Other..." Info-follow-reference t] - entries))) - (or entries - (setq entries (list ["No references" nil nil]))) - (easy-menu-change '("Info") "Reference" (nreverse entries))) - ;; Update last seen node. - (setq Info-menu-last-node (current-buffer))) - ;; Try to avoid entering infinite beep mode in case of errors. - (error (ding)))) - - -;; Info mode is suitable only for specially formatted data. -(put 'info-mode 'mode-class 'special) - -(defun Info-mode () - "\\<Info-mode-map> -Info mode provides commands for browsing through the Info documentation tree. -Documentation in Info is divided into \"nodes\", each of which discusses -one topic and contains references to other nodes which discuss related -topics. Info has commands to follow the references and show you other nodes. - -\\[Info-help] Invoke the Info tutorial. - -Selecting other nodes: -\\[Info-mouse-follow-nearest-node] - Follow a node reference you click on. - This works with menu items, cross references, and - the \"next\", \"previous\" and \"up\", depending on where you click. -\\[Info-next] Move to the \"next\" node of this node. -\\[Info-prev] Move to the \"previous\" node of this node. -\\[Info-up] Move \"up\" from this node. -\\[Info-menu] Pick menu item specified by name (or abbreviation). - Picking a menu item causes another node to be selected. -\\[Info-directory] Go to the Info directory node. -\\[Info-follow-reference] Follow a cross reference. Reads name of reference. -\\[Info-last] Move to the last node you were at. -\\[Info-index] Look up a topic in this file's Index and move to that node. -\\[Info-index-next] (comma) Move to the next match from a previous `i' command. - -Moving within a node: -\\[Info-scroll-up] Normally, scroll forward a full screen. If the end of the buffer is -already visible, try to go to the next menu entry, or up if there is none. -\\[Info-scroll-down] Normally, scroll backward. If the beginning of the buffer is -already visible, try to go to the previous menu entry, or up if there is none. -\\[beginning-of-buffer] Go to beginning of node. - -Advanced commands: -\\[Info-exit] Quit Info: reselect previously selected buffer. -\\[Info-edit] Edit contents of selected node. -1 Pick first item in node's menu. -2, 3, 4, 5 Pick second ... fifth item in node's menu. -\\[Info-goto-node] Move to node specified by name. - You may include a filename as well, as (FILENAME)NODENAME. -\\[universal-argument] \\[info] Move to new Info file with completion. -\\[Info-search] Search through this Info file for specified regexp, - and select the node in which the next occurrence is found. -\\[Info-next-reference] Move cursor to next cross-reference or menu item. -\\[Info-prev-reference] Move cursor to previous cross-reference or menu item." - (kill-all-local-variables) - (setq major-mode 'Info-mode) - (setq mode-name "Info") - (setq tab-width 8) - (use-local-map Info-mode-map) - (make-local-hook 'activate-menubar-hook) - (add-hook 'activate-menubar-hook 'Info-menu-update nil t) - (set-syntax-table text-mode-syntax-table) - (setq local-abbrev-table text-mode-abbrev-table) - (setq case-fold-search t) - (setq buffer-read-only t) - (make-local-variable 'Info-current-file) - (make-local-variable 'Info-current-subfile) - (make-local-variable 'Info-current-node) - (make-local-variable 'Info-tag-table-marker) - (setq Info-tag-table-marker (make-marker)) - (make-local-variable 'Info-tag-table-buffer) - (setq Info-tag-table-buffer nil) - (make-local-variable 'Info-history) - (make-local-variable 'Info-index-alternatives) - (if (memq (framep (selected-frame)) '(x pc w32)) - (progn - (make-face 'info-node) - (make-face 'info-menu-5) - (make-face 'info-xref) - (or (face-differs-from-default-p 'info-node) - (if (face-differs-from-default-p 'bold-italic) - (copy-face 'bold-italic 'info-node) - (copy-face 'bold 'info-node))) - (or (face-differs-from-default-p 'info-menu-5) - (set-face-underline-p 'info-menu-5 t)) - (or (face-differs-from-default-p 'info-xref) - (copy-face 'bold 'info-xref))) - (setq Info-fontify nil)) - (Info-set-mode-line) - (run-hooks 'Info-mode-hook)) - -(defvar Info-edit-map nil - "Local keymap used within `e' command of Info.") -(if Info-edit-map - nil - (setq Info-edit-map (nconc (make-sparse-keymap) text-mode-map)) - (define-key Info-edit-map "\C-c\C-c" 'Info-cease-edit)) - -;; Info-edit mode is suitable only for specially formatted data. -(put 'info-edit-mode 'mode-class 'special) - -(defun Info-edit-mode () - "Major mode for editing the contents of an Info node. -Like text mode with the addition of `Info-cease-edit' -which returns to Info mode for browsing. -\\{Info-edit-map}" - (use-local-map Info-edit-map) - (setq major-mode 'Info-edit-mode) - (setq mode-name "Info Edit") - (kill-local-variable 'mode-line-buffer-identification) - (setq buffer-read-only nil) - (force-mode-line-update) - (buffer-enable-undo (current-buffer)) - (run-hooks 'Info-edit-mode-hook)) - -(defun Info-edit () - "Edit the contents of this Info node. -Allowed only if variable `Info-enable-edit' is non-nil." - (interactive) - (or Info-enable-edit - (error "Editing info nodes is not enabled")) - (Info-edit-mode) - (message "%s" (substitute-command-keys - "Editing: Type \\<Info-edit-map>\\[Info-cease-edit] to return to info"))) - -(defun Info-cease-edit () - "Finish editing Info node; switch back to Info proper." - (interactive) - ;; Do this first, so nothing has changed if user C-g's at query. - (and (buffer-modified-p) - (y-or-n-p "Save the file? ") - (save-buffer)) - (use-local-map Info-mode-map) - (setq major-mode 'Info-mode) - (setq mode-name "Info") - (Info-set-mode-line) - (setq buffer-read-only t) - (force-mode-line-update) - (and (marker-position Info-tag-table-marker) - (buffer-modified-p) - (message "Tags may have changed. Use Info-tagify if necessary"))) - -(defvar Info-file-list-for-emacs - '("ediff" "forms" "gnus" "info" ("mh" . "mh-e") "sc") - "List of Info files that describe Emacs commands. -An element can be a file name, or a list of the form (PREFIX . FILE) -where PREFIX is a name prefix and FILE is the file to look in. -If the element is just a file name, the file name also serves as the prefix.") - -(defun Info-find-emacs-command-nodes (command) - "Return a list of locations documenting COMMAND. -The `info-file' property of COMMAND says which Info manual to search. -If COMMAND has no property, the variable `Info-file-list-for-emacs' -defines heuristics for which Info manual to try. -The locations are of the format used in Info-history, i.e. -\(FILENAME NODENAME BUFFERPOS\)." - (let ((where '()) - (cmd-desc (concat "^\\* " (regexp-quote (symbol-name command)) - ":\\s *\\(.*\\)\\.$")) - (info-file "emacs")) ;default - ;; Determine which info file this command is documented in. - (if (get command 'info-file) - (setq info-file (get command 'info-file)) - ;; If it doesn't say explicitly, test its name against - ;; various prefixes that we know. - (let ((file-list Info-file-list-for-emacs)) - (while file-list - (let* ((elt (car file-list)) - (name (if (consp elt) - (car elt) - elt)) - (file (if (consp elt) (cdr elt) elt)) - (regexp (concat "\\`" (regexp-quote name) - "\\(\\'\\|-\\)"))) - (if (string-match regexp (symbol-name command)) - (setq info-file file file-list nil)) - (setq file-list (cdr file-list)))))) - (save-excursion - (condition-case nil - (Info-find-node info-file "Command Index") - ;; Some manuals may not have a separate Command Index node, - ;; so try just Index instead. - (error - (Info-find-node info-file "Index"))) - ;; Take the index node off the Info history. - (setq Info-history (cdr Info-history)) - (goto-char (point-max)) - (while (re-search-backward cmd-desc nil t) - (setq where (cons (list Info-current-file - (buffer-substring - (match-beginning 1) - (match-end 1)) - 0) - where))) - where))) - -;;;###autoload -(defun Info-goto-emacs-command-node (command) - "Go to the Info node in the Emacs manual for command COMMAND. -The command is found by looking up in Emacs manual's Command Index -or in another manual found via COMMAND's `info-file' property or -the variable `Info-file-list-for-emacs'." - (interactive "CFind documentation for command: ") - (or (commandp command) - (signal 'wrong-type-argument (list 'commandp command))) - (let ((where (Info-find-emacs-command-nodes command))) - (if where - (let ((num-matches (length where))) - ;; Get Info running, and pop to it in another window. - (save-window-excursion - (info)) - ;; FIXME It would be cool if this could use a buffer other - ;; than *info*. - (pop-to-buffer "*info*") - (Info-find-node (car (car where)) - (car (cdr (car where)))) - (if (> num-matches 1) - (progn - ;; Info-find-node already pushed (car where) onto - ;; Info-history. Put the other nodes that were found on - ;; the history. - (setq Info-history (nconc (cdr where) Info-history)) - (message "Found %d other entr%s. Use %s to see %s." - (1- num-matches) - (if (> num-matches 2) "ies" "y") - (substitute-command-keys "\\[Info-last]") - (if (> num-matches 2) "them" "it"))))) - (error "Couldn't find documentation for %s" command)))) - -;;;###autoload -(defun Info-goto-emacs-key-command-node (key) - "Go to the Info node in the Emacs manual the command bound to KEY, a string. -Interactively, if the binding is execute-extended-command, a command is read. -The command is found by looking up in Emacs manual's Command Index -or in another manual found via COMMAND's `info-file' property or -the variable `Info-file-list-for-emacs'." - (interactive "kFind documentation for key:") - (let ((command (key-binding key))) - (cond ((null command) - (message "%s is undefined" (key-description key))) - ((and (interactive-p) - (eq command 'execute-extended-command)) - (Info-goto-emacs-command-node - (read-command "Find documentation for command: "))) - (t - (Info-goto-emacs-command-node command))))) - -(defcustom Info-title-face-alist - '((?* bold underline) - (?= bold-italic underline) - (?- italic underline)) - "*Alist of face or list of faces to use for pseudo-underlined titles. -The alist key is the character the title is underlined with (?*, ?= or ?-)." - :type '(repeat (list character face face)) - :group 'info) - -(defun Info-fontify-node () - (save-excursion - (let ((buffer-read-only nil)) - (goto-char (point-min)) - (if (looking-at "^File: [^,: \t]+,?[ \t]+") - (progn - (goto-char (match-end 0)) - (while - (looking-at "[ \t]*[^:, \t\n]+:[ \t]+\\([^:,\t\n]+\\),?") - (goto-char (match-end 0)) - (put-text-property (match-beginning 1) (match-end 1) - 'face 'info-xref) - (put-text-property (match-beginning 1) (match-end 1) - 'mouse-face 'highlight)))) - (goto-char (point-min)) - (while (re-search-forward "\n\\([^ \t\n].+\\)\n\\(\\*+\\|=+\\|-+\\)$" - nil t) - (put-text-property (match-beginning 1) (match-end 1) - 'face - (cdr (assq (preceding-char) Info-title-face-alist))) - (put-text-property (match-end 1) (match-end 2) - 'invisible t)) - (goto-char (point-min)) - (while (re-search-forward "\\*Note[ \n\t]+\\([^:]*\\):" nil t) - (if (= (char-after (1- (match-beginning 0))) ?\") ; hack - nil - (put-text-property (match-beginning 1) (match-end 1) - 'face 'info-xref) - (put-text-property (match-beginning 1) (match-end 1) - 'mouse-face 'highlight))) - (goto-char (point-min)) - (if (and (search-forward "\n* Menu:" nil t) - (not (string-match "\\<Index\\>" Info-current-node)) - ;; Don't take time to annotate huge menus - (< (- (point-max) (point)) Info-fontify-maximum-menu-size)) - (let ((n 0)) - (while (re-search-forward "^\\* \\([^:\t\n]*\\):" nil t) - (setq n (1+ n)) - (if (memq n '(5 9)) ; visual aids to help with 1-9 keys - (put-text-property (match-beginning 0) - (1+ (match-beginning 0)) - 'face 'info-menu-5)) - (put-text-property (match-beginning 1) (match-end 1) - 'face 'info-node) - (put-text-property (match-beginning 1) (match-end 1) - 'mouse-face 'highlight)))) - (set-buffer-modified-p nil)))) - - -;; When an Info buffer is killed, make sure the associated tags buffer -;; is killed too. -(defun Info-kill-buffer () - (and (eq major-mode 'Info-mode) - Info-tag-table-buffer - (kill-buffer Info-tag-table-buffer))) - -(add-hook 'kill-buffer-hook 'Info-kill-buffer) - - -(provide 'info) - -;;; info.el ends here diff --git a/texinfo/emacs/informat.el b/texinfo/emacs/informat.el deleted file mode 100644 index 36f0c560675..00000000000 --- a/texinfo/emacs/informat.el +++ /dev/null @@ -1,438 +0,0 @@ -;;; informat.el --- info support functions package for Emacs - -;; Copyright (C) 1986 Free Software Foundation, Inc. - -;; Maintainer: FSF -;; Keywords: help - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Code: - -(require 'info) - -;;;###autoload -(defun Info-tagify () - "Create or update Info-file tag table in current buffer." - (interactive) - ;; Save and restore point and restrictions. - ;; save-restrictions would not work - ;; because it records the old max relative to the end. - ;; We record it relative to the beginning. - (message "Tagifying %s ..." (file-name-nondirectory (buffer-file-name))) - (let ((omin (point-min)) - (omax (point-max)) - (nomax (= (point-max) (1+ (buffer-size)))) - (opoint (point))) - (unwind-protect - (progn - (widen) - (goto-char (point-min)) - (if (search-forward "\^_\nIndirect:\n" nil t) - (message "Cannot tagify split info file") - (let ((regexp "Node:[ \t]*\\([^,\n\t]*\\)[,\t\n]") - (case-fold-search t) - list) - (while (search-forward "\n\^_" nil t) - ;; We want the 0-origin character position of the ^_. - ;; That is the same as the Emacs (1-origin) position - ;; of the newline before it. - (let ((beg (match-beginning 0))) - (forward-line 2) - (if (re-search-backward regexp beg t) - (setq list - (cons (list (buffer-substring-no-properties - (match-beginning 1) - (match-end 1)) - beg) - list))))) - (goto-char (point-max)) - (forward-line -8) - (let ((buffer-read-only nil)) - (if (search-forward "\^_\nEnd tag table\n" nil t) - (let ((end (point))) - (search-backward "\nTag table:\n") - (beginning-of-line) - (delete-region (point) end))) - (goto-char (point-max)) - (insert "\^_\f\nTag table:\n") - (if (eq major-mode 'info-mode) - (move-marker Info-tag-table-marker (point))) - (setq list (nreverse list)) - (while list - (insert "Node: " (car (car list)) ?\177) - (princ (car (cdr (car list))) (current-buffer)) - (insert ?\n) - (setq list (cdr list))) - (insert "\^_\nEnd tag table\n"))))) - (goto-char opoint) - (narrow-to-region omin (if nomax (1+ (buffer-size)) - (min omax (point-max)))))) - (message "Tagifying %s ... done" (file-name-nondirectory (buffer-file-name)))) - -;;;###autoload -(defun Info-split () - "Split an info file into an indirect file plus bounded-size subfiles. -Each subfile will be up to 50,000 characters plus one node. - -To use this command, first visit a large Info file that has a tag -table. The buffer is modified into a (small) indirect info file which -should be saved in place of the original visited file. - -The subfiles are written in the same directory the original file is -in, with names generated by appending `-' and a number to the original -file name. The indirect file still functions as an Info file, but it -contains just the tag table and a directory of subfiles." - - (interactive) - (if (< (buffer-size) 70000) - (error "This is too small to be worth splitting")) - (goto-char (point-min)) - (search-forward "\^_") - (forward-char -1) - (let ((start (point)) - (chars-deleted 0) - subfiles - (subfile-number 1) - (case-fold-search t) - (filename (file-name-sans-versions buffer-file-name))) - (goto-char (point-max)) - (forward-line -8) - (setq buffer-read-only nil) - (or (search-forward "\^_\nEnd tag table\n" nil t) - (error "Tag table required; use M-x Info-tagify")) - (search-backward "\nTag table:\n") - (if (looking-at "\nTag table:\n\^_") - (error "Tag table is just a skeleton; use M-x Info-tagify")) - (beginning-of-line) - (forward-char 1) - (save-restriction - (narrow-to-region (point-min) (point)) - (goto-char (point-min)) - (while (< (1+ (point)) (point-max)) - (goto-char (min (+ (point) 50000) (point-max))) - (search-forward "\^_" nil 'move) - (setq subfiles - (cons (list (+ start chars-deleted) - (concat (file-name-nondirectory filename) - (format "-%d" subfile-number))) - subfiles)) - ;; Put a newline at end of split file, to make Unix happier. - (insert "\n") - (write-region (point-min) (point) - (concat filename (format "-%d" subfile-number))) - (delete-region (1- (point)) (point)) - ;; Back up over the final ^_. - (forward-char -1) - (setq chars-deleted (+ chars-deleted (- (point) start))) - (delete-region start (point)) - (setq subfile-number (1+ subfile-number)))) - (while subfiles - (goto-char start) - (insert (nth 1 (car subfiles)) - (format ": %d" (1- (car (car subfiles)))) - "\n") - (setq subfiles (cdr subfiles))) - (goto-char start) - (insert "\^_\nIndirect:\n") - (search-forward "\nTag Table:\n") - (insert "(Indirect)\n"))) - -(defvar Info-validate-allnodes) -(defvar Info-validate-thisnode) -(defvar Info-validate-lossages) - -;;;###autoload -(defun Info-validate () - "Check current buffer for validity as an Info file. -Check that every node pointer points to an existing node." - (interactive) - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - (if (search-forward "\nTag table:\n(Indirect)\n" nil t) - (error "Don't yet know how to validate indirect info files: \"%s\"" - (buffer-name (current-buffer)))) - (goto-char (point-min)) - (let ((Info-validate-allnodes '(("*"))) - (regexp "Node:[ \t]*\\([^,\n\t]*\\)[,\t\n]") - (case-fold-search t) - (tags-losing nil) - (Info-validate-lossages ())) - (while (search-forward "\n\^_" nil t) - (forward-line 1) - (let ((beg (point))) - (forward-line 1) - (if (re-search-backward regexp beg t) - (let ((name (downcase - (buffer-substring-no-properties - (match-beginning 1) - (progn - (goto-char (match-end 1)) - (skip-chars-backward " \t") - (point)))))) - (if (assoc name Info-validate-allnodes) - (setq Info-validate-lossages - (cons (list name "Duplicate node-name" nil) - Info-validate-lossages)) - (setq Info-validate-allnodes - (cons (list name - (progn - (end-of-line) - (and (re-search-backward - "prev[ious]*:" beg t) - (progn - (goto-char (match-end 0)) - (downcase - (Info-following-node-name))))) - beg) - Info-validate-allnodes))))))) - (goto-char (point-min)) - (while (search-forward "\n\^_" nil t) - (forward-line 1) - (let ((beg (point)) - Info-validate-thisnode next) - (forward-line 1) - (if (re-search-backward regexp beg t) - (save-restriction - (search-forward "\n\^_" nil 'move) - (narrow-to-region beg (point)) - (setq Info-validate-thisnode (downcase - (buffer-substring-no-properties - (match-beginning 1) - (progn - (goto-char (match-end 1)) - (skip-chars-backward " \t") - (point))))) - (end-of-line) - (and (search-backward "next:" nil t) - (setq next (Info-validate-node-name "invalid Next")) - (assoc next Info-validate-allnodes) - (if (equal (car (cdr (assoc next Info-validate-allnodes))) - Info-validate-thisnode) - ;; allow multiple `next' pointers to one node - (let ((tem Info-validate-lossages)) - (while tem - (if (and (equal (car (cdr (car tem))) - "should have Previous") - (equal (car (car tem)) - next)) - (setq Info-validate-lossages - (delq (car tem) Info-validate-lossages))) - (setq tem (cdr tem)))) - (setq Info-validate-lossages - (cons (list next - "should have Previous" - Info-validate-thisnode) - Info-validate-lossages)))) - (end-of-line) - (if (re-search-backward "prev[ious]*:" nil t) - (Info-validate-node-name "invalid Previous")) - (end-of-line) - (if (search-backward "up:" nil t) - (Info-validate-node-name "invalid Up")) - (if (re-search-forward "\n* Menu:" nil t) - (while (re-search-forward "\n\\* " nil t) - (Info-validate-node-name - (concat "invalid menu item " - (buffer-substring (point) - (save-excursion - (skip-chars-forward "^:") - (point)))) - (Info-extract-menu-node-name)))) - (goto-char (point-min)) - (while (re-search-forward "\\*note[ \n]*[^:\t]*:" nil t) - (goto-char (+ (match-beginning 0) 5)) - (skip-chars-forward " \n") - (Info-validate-node-name - (concat "invalid reference " - (buffer-substring (point) - (save-excursion - (skip-chars-forward "^:") - (point)))) - (Info-extract-menu-node-name "Bad format cross-reference"))))))) - (setq tags-losing (not (Info-validate-tags-table))) - (if (or Info-validate-lossages tags-losing) - (with-output-to-temp-buffer " *problems in info file*" - (while Info-validate-lossages - (princ "In node \"") - (princ (car (car Info-validate-lossages))) - (princ "\", ") - (let ((tem (nth 1 (car Info-validate-lossages)))) - (cond ((string-match "\n" tem) - (princ (substring tem 0 (match-beginning 0))) - (princ "...")) - (t - (princ tem)))) - (if (nth 2 (car Info-validate-lossages)) - (progn - (princ ": ") - (let ((tem (nth 2 (car Info-validate-lossages)))) - (cond ((string-match "\n" tem) - (princ (substring tem 0 (match-beginning 0))) - (princ "...")) - (t - (princ tem)))))) - (terpri) - (setq Info-validate-lossages (cdr Info-validate-lossages))) - (if tags-losing (princ "\nTags table must be recomputed\n"))) - ;; Here if info file is valid. - ;; If we already made a list of problems, clear it out. - (save-excursion - (if (get-buffer " *problems in info file*") - (progn - (set-buffer " *problems in info file*") - (kill-buffer (current-buffer))))) - (message "File appears valid")))))) - -(defun Info-validate-node-name (kind &optional name) - (if name - nil - (goto-char (match-end 0)) - (skip-chars-forward " \t") - (if (= (following-char) ?\() - nil - (setq name - (buffer-substring-no-properties - (point) - (progn - (skip-chars-forward "^,\t\n") - (skip-chars-backward " ") - (point)))))) - (if (null name) - nil - (setq name (downcase name)) - (or (and (> (length name) 0) (= (aref name 0) ?\()) - (assoc name Info-validate-allnodes) - (setq Info-validate-lossages - (cons (list Info-validate-thisnode kind name) - Info-validate-lossages)))) - name) - -(defun Info-validate-tags-table () - (goto-char (point-min)) - (if (not (search-forward "\^_\nEnd tag table\n" nil t)) - t - (not (catch 'losing - (let* ((end (match-beginning 0)) - (start (progn (search-backward "\nTag table:\n") - (1- (match-end 0)))) - tem) - (setq tem Info-validate-allnodes) - (while tem - (goto-char start) - (or (equal (car (car tem)) "*") - (search-forward (concat "Node: " - (car (car tem)) - "\177") - end t) - (throw 'losing 'x)) - (setq tem (cdr tem))) - (goto-char (1+ start)) - (while (looking-at ".*Node: \\(.*\\)\177\\([0-9]+\\)$") - (setq tem (downcase (buffer-substring-no-properties - (match-beginning 1) - (match-end 1)))) - (setq tem (assoc tem Info-validate-allnodes)) - (if (or (not tem) - (< 1000 (progn - (goto-char (match-beginning 2)) - (setq tem (- (car (cdr (cdr tem))) - (read (current-buffer)))) - (if (> tem 0) tem (- tem))))) - (throw 'losing 'y)) - (forward-line 1))) - (if (looking-at "\^_\n") - (forward-line 1)) - (or (looking-at "End tag table\n") - (throw 'losing 'z)) - nil)))) - -;;;###autoload -(defun batch-info-validate () - "Runs `Info-validate' on the files remaining on the command line. -Must be used only with -batch, and kills Emacs on completion. -Each file will be processed even if an error occurred previously. -For example, invoke \"emacs -batch -f batch-info-validate $info/ ~/*.info\"" - (if (not noninteractive) - (error "batch-info-validate may only be used -batch.")) - (let ((version-control t) - (auto-save-default nil) - (find-file-run-dired nil) - (kept-old-versions 259259) - (kept-new-versions 259259)) - (let ((error 0) - file - (files ())) - (while command-line-args-left - (setq file (expand-file-name (car command-line-args-left))) - (cond ((not (file-exists-p file)) - (message ">> %s does not exist!" file) - (setq error 1 - command-line-args-left (cdr command-line-args-left))) - ((file-directory-p file) - (setq command-line-args-left (nconc (directory-files file) - (cdr command-line-args-left)))) - (t - (setq files (cons file files) - command-line-args-left (cdr command-line-args-left))))) - (while files - (setq file (car files) - files (cdr files)) - (let ((lose nil)) - (condition-case err - (progn - (if buffer-file-name (kill-buffer (current-buffer))) - (find-file file) - (buffer-disable-undo (current-buffer)) - (set-buffer-modified-p nil) - (fundamental-mode) - (let ((case-fold-search nil)) - (goto-char (point-max)) - (cond ((search-backward "\n\^_\^L\nTag table:\n" nil t) - (message "%s already tagified" file)) - ((< (point-max) 30000) - (message "%s too small to bother tagifying" file)) - (t - (Info-tagify)))) - (let ((loss-name " *problems in info file*")) - (message "Checking validity of info file %s..." file) - (if (get-buffer loss-name) - (kill-buffer loss-name)) - (Info-validate) - (if (not (get-buffer loss-name)) - nil ;(message "Checking validity of info file %s... OK" file) - (message "----------------------------------------------------------------------") - (message ">> PROBLEMS IN INFO FILE %s" file) - (save-excursion - (set-buffer loss-name) - (princ (buffer-substring-no-properties - (point-min) (point-max)))) - (message "----------------------------------------------------------------------") - (setq error 1 lose t))) - (if (and (buffer-modified-p) - (not lose)) - (progn (message "Saving modified %s" file) - (save-buffer)))) - (error (message ">> Error: %s" (prin1-to-string err)))))) - (kill-emacs error)))) - -(provide 'informat) - -;;; informat.el ends here diff --git a/texinfo/emacs/makeinfo.el b/texinfo/emacs/makeinfo.el deleted file mode 100644 index d6ee7bbb1c0..00000000000 --- a/texinfo/emacs/makeinfo.el +++ /dev/null @@ -1,256 +0,0 @@ -;;; makeinfo.el --- run makeinfo conveniently - -;; Copyright (C) 1991, 1993 Free Software Foundation, Inc. - -;; Author: Robert J. Chassell -;; Maintainer: FSF - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;;; The Texinfo mode `makeinfo' related commands are: - -;; makeinfo-region to run makeinfo on the current region. -;; makeinfo-buffer to run makeinfo on the current buffer, or -;; with optional prefix arg, on current region -;; kill-compilation to kill currently running makeinfo job -;; makeinfo-recenter-makeinfo-buffer to redisplay *compilation* buffer - -;;; Keybindings (defined in `texinfo.el') - -;; makeinfo bindings -; (define-key texinfo-mode-map "\C-c\C-m\C-r" 'makeinfo-region) -; (define-key texinfo-mode-map "\C-c\C-m\C-b" 'makeinfo-buffer) -; (define-key texinfo-mode-map "\C-c\C-m\C-k" 'kill-compilation) -; (define-key texinfo-mode-map "\C-c\C-m\C-l" -; 'makeinfo-recenter-compilation-buffer) - -;;; Code: - -;;; Variables used by `makeinfo' - -(require 'compile) - -(defgroup makeinfo nil - "Run makeinfo conveniently" - :group 'docs) - - -(defcustom makeinfo-run-command "makeinfo" - "*Command used to run `makeinfo' subjob. -The name of the file is appended to this string, separated by a space." - :type 'string - :group 'makeinfo) - -(defcustom makeinfo-options "--fill-column=70" - "*String containing options for running `makeinfo'. -Do not include `--footnote-style' or `--paragraph-indent'; -the proper way to specify those is with the Texinfo commands -`@footnotestyle` and `@paragraphindent'." - :type 'string - :group 'makeinfo) - -(require 'texinfo) - -(defvar makeinfo-compilation-process nil - "Process that runs `makeinfo'. Should start out nil.") - -(defvar makeinfo-temp-file nil - "Temporary file name used for text being sent as input to `makeinfo'.") - -(defvar makeinfo-output-file-name nil - "Info file name used for text output by `makeinfo'.") - - -;;; The `makeinfo' function definitions - -(defun makeinfo-region (region-beginning region-end) - "Make Info file from region of current Texinfo file, and switch to it. - -This command does not offer the `next-error' feature since it would -apply to a temporary file, not the original; use the `makeinfo-buffer' -command to gain use of `next-error'." - - (interactive "r") - (let (filename-or-header - filename-or-header-beginning - filename-or-header-end) - ;; Cannot use `let' for makeinfo-temp-file or - ;; makeinfo-output-file-name since `makeinfo-compilation-sentinel' - ;; needs them. - - (setq makeinfo-temp-file - (concat - (make-temp-name - (substring (buffer-file-name) - 0 - (or (string-match "\\.tex" (buffer-file-name)) - (length (buffer-file-name))))) - ".texinfo")) - - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - (let ((search-end (save-excursion (forward-line 100) (point)))) - ;; Find and record the Info filename, - ;; or else explain that a filename is needed. - (if (re-search-forward - "^@setfilename[ \t]+\\([^ \t\n]+\\)[ \t]*" - search-end t) - (setq makeinfo-output-file-name - (buffer-substring (match-beginning 1) (match-end 1))) - (error - "The texinfo file needs a line saying: @setfilename <name>")) - - ;; Find header and specify its beginning and end. - (goto-char (point-min)) - (if (and - (prog1 - (search-forward tex-start-of-header search-end t) - (beginning-of-line) - ;; Mark beginning of header. - (setq filename-or-header-beginning (point))) - (prog1 - (search-forward tex-end-of-header nil t) - (beginning-of-line) - ;; Mark end of header - (setq filename-or-header-end (point)))) - - ;; Insert the header into the temporary file. - (write-region - (min filename-or-header-beginning region-beginning) - filename-or-header-end - makeinfo-temp-file nil nil) - - ;; Else no header; insert @filename line into temporary file. - (goto-char (point-min)) - (search-forward "@setfilename" search-end t) - (beginning-of-line) - (setq filename-or-header-beginning (point)) - (forward-line 1) - (setq filename-or-header-end (point)) - (write-region - (min filename-or-header-beginning region-beginning) - filename-or-header-end - makeinfo-temp-file nil nil)) - - ;; Insert the region into the file. - (write-region - (max region-beginning filename-or-header-end) - region-end - makeinfo-temp-file t nil) - - ;; Run the `makeinfo-compile' command in the *compilation* buffer - (save-excursion - (makeinfo-compile - (concat makeinfo-run-command - " " - makeinfo-options - " " - makeinfo-temp-file) - "Use `makeinfo-buffer' to gain use of the `next-error' command" - nil))))))) - -;;; Actually run makeinfo. COMMAND is the command to run. -;;; ERROR-MESSAGE is what to say when next-error can't find another error. -;;; If PARSE-ERRORS is non-nil, do try to parse error messages. -(defun makeinfo-compile (command error-message parse-errors) - (let ((buffer - (compile-internal command error-message nil - (and (not parse-errors) - ;; If we do want to parse errors, pass nil. - ;; Otherwise, use this function, which won't - ;; ever find any errors. - '(lambda (&rest ignore) - (setq compilation-error-list nil)))))) - (set-process-sentinel (get-buffer-process buffer) - 'makeinfo-compilation-sentinel))) - -;; Delete makeinfo-temp-file after processing is finished, -;; and visit Info file. -;; This function is called when the compilation process changes state. -;; Based on `compilation-sentinel' in compile.el -(defun makeinfo-compilation-sentinel (proc msg) - (compilation-sentinel proc msg) - (if (and makeinfo-temp-file (file-exists-p makeinfo-temp-file)) - (delete-file makeinfo-temp-file)) - ;; Always use the version on disk. - (if (get-file-buffer makeinfo-output-file-name) - (progn (set-buffer makeinfo-output-file-name) - (revert-buffer t t)) - (find-file makeinfo-output-file-name)) - (goto-char (point-min))) - -(defun makeinfo-buffer () - "Make Info file from current buffer. - -Use the \\[next-error] command to move to the next error -\(if there are errors\)." - - (interactive) - (cond ((null buffer-file-name) - (error "Buffer not visiting any file")) - ((buffer-modified-p) - (if (y-or-n-p "Buffer modified; do you want to save it? ") - (save-buffer)))) - - ;; Find and record the Info filename, - ;; or else explain that a filename is needed. - (save-excursion - (goto-char (point-min)) - (let ((search-end (save-excursion (forward-line 100) (point)))) - (if (re-search-forward - "^@setfilename[ \t]+\\([^ \t\n]+\\)[ \t]*" - search-end t) - (setq makeinfo-output-file-name - (buffer-substring (match-beginning 1) (match-end 1))) - (error - "The texinfo file needs a line saying: @setfilename <name>")))) - - (save-excursion - (makeinfo-compile - (concat makeinfo-run-command " " makeinfo-options - " " buffer-file-name) - "No more errors." - t))) - -(defun makeinfo-recenter-compilation-buffer (linenum) - "Redisplay `*compilation*' buffer so most recent output can be seen. -The last line of the buffer is displayed on -line LINE of the window, or centered if LINE is nil." - (interactive "P") - (let ((makeinfo-buffer (get-buffer "*compilation*")) - (old-buffer (current-buffer))) - (if (null makeinfo-buffer) - (message "No *compilation* buffer") - (pop-to-buffer makeinfo-buffer) - (bury-buffer makeinfo-buffer) - (goto-char (point-max)) - (recenter (if linenum - (prefix-numeric-value linenum) - (/ (window-height) 2))) - (pop-to-buffer old-buffer) - ))) - -;;; Place `provide' at end of file. -(provide 'makeinfo) - -;;; makeinfo.el ends here - diff --git a/texinfo/emacs/new-useful-setqs b/texinfo/emacs/new-useful-setqs deleted file mode 100644 index 4241ae429ef..00000000000 --- a/texinfo/emacs/new-useful-setqs +++ /dev/null @@ -1,180 +0,0 @@ -;; -*- Mode: Emacs-Lisp -*- - -;; This is the `new-useful-setqs' file -;; This overrides old defvars since they were revised. - -(setq texinfmt-version "2.35 of 10 September 1996") - -(setq texinfo-master-menu-header - "\n@detailmenu\n --- The Detailed Node Listing ---\n") - -(setq texinfo-environment-regexp - (concat - "^@" - "\\(" - "cartouche\\|" - "display\\|" - "end\\|" - "enumerate\\|" - "example\\|" - "f?table\\|" - "flushleft\\|" - "flushright\\|" - "format\\|" - "group\\|" - "ifhtml\\|" - "ifinfo\\|" - "iftex\\|" - "ignore\\|" - "itemize\\|" - "lisp\\|" - "macro\\|" - "multitable\\|" - "quotation\\|" - "smallexample\\|" - "smalllisp\\|" - "tex" - "\\)") -) - -(setq texinfo-no-refill-regexp - (concat - "^@" - "\\(" - "example\\|" - "smallexample\\|" - "lisp\\|" - "smalllisp\\|" - "display\\|" - "format\\|" - "flushleft\\|" - "flushright\\|" - "menu\\|" - "multitable\\|" - "titlepage\\|" - "iftex\\|" - "ifhtml\\|" - "tex\\|" - "html" - "\\)")) - - -(setq texinfo-accent-commands - (concat - "@OE\\|" - "@oe\\|" - "@AA\\|" - "@aa\\|" - "@AE\\|" - "@ae\\|" - "@ss\\|" - "@^\\|" - "@`\\|" - "@'\\|" - "@\"\\|" - "@,\\|" - "@=\\|" - "@~\\|" - "@questiondown{\\|" - "@exclamdown{\\|" - "@L{\\|" - "@l{\\|" - "@O{\\|" - "@o{\\|" - "@dotaccent{\\|" - "@ubaraccent{\\|" - "@d{\\|" - "@H{\\|" - "@ringaccent{\\|" - "@tieaccent{\\|" - "@u{\\|" - "@v{\\|" - "@dotless{" - )) - -(setq texinfo-part-of-para-regexp - (concat - "^@" - "\\(" - "b{\\|" - "bullet{\\|" - "cite{\\|" - "code{\\|" - "emph{\\|" - "equiv{\\|" - "error{\\|" - "expansion{\\|" - "file{\\|" - "i{\\|" - "inforef{\\|" - "kbd{\\|" - "key{\\|" - "lisp{\\|" - "email{\\|" - "minus{\\|" - "point{\\|" - "print{\\|" - "pxref{\\|" - "r{\\|" - "ref{\\|" - "result{\\|" - "samp{\\|" - "sc{\\|" - "t{\\|" - "TeX{\\|" - "today{\\|" - "url{\\|" - "var{\\|" - "w{\\|" - "xref{\\|" - "@-\\|" ; @- is a descretionary hyphen (not an accent) (a noop). - texinfo-accent-commands - "\\)" - )) - -(setq texinfo-raisesections-alist - '((@chapter . @chapter) ; Cannot go higher - (@unnumbered . @unnumbered) - (@centerchap . @unnumbered) - - (@majorheading . @majorheading) - (@chapheading . @chapheading) - (@appendix . @appendix) - - (@section . @chapter) - (@unnumberedsec . @unnumbered) - (@heading . @chapheading) - (@appendixsec . @appendix) - - (@subsection . @section) - (@unnumberedsubsec . @unnumberedsec) - (@subheading . @heading) - (@appendixsubsec . @appendixsec) - - (@subsubsection . @subsection) - (@unnumberedsubsubsec . @unnumberedsubsec) - (@subsubheading . @subheading) - (@appendixsubsubsec . @appendixsubsec))) - -(setq texinfo-lowersections-alist - '((@chapter . @section) - (@unnumbered . @unnumberedsec) - (@centerchap . @unnumberedsec) - (@majorheading . @heading) - (@chapheading . @heading) - (@appendix . @appendixsec) - - (@section . @subsection) - (@unnumberedsec . @unnumberedsubsec) - (@heading . @subheading) - (@appendixsec . @appendixsubsec) - - (@subsection . @subsubsection) - (@unnumberedsubsec . @unnumberedsubsubsec) - (@subheading . @subsubheading) - (@appendixsubsec . @appendixsubsubsec) - - (@subsubsection . @subsubsection) ; Cannot go lower. - (@unnumberedsubsubsec . @unnumberedsubsubsec) - (@subsubheading . @subsubheading) - (@appendixsubsubsec . @appendixsubsubsec))) diff --git a/texinfo/emacs/texinfmt.el b/texinfo/emacs/texinfmt.el deleted file mode 100644 index aadd28a35e1..00000000000 --- a/texinfo/emacs/texinfmt.el +++ /dev/null @@ -1,4013 +0,0 @@ -;;; texinfmt.el --- format Texinfo files into Info files. - -;; Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, -;; 1994, 1995, 1996, 1997 Free Software Foundation, Inc. - -;; Maintainer: Robert J. Chassell <bug-texinfo@prep.ai.mit.edu> -;; Keywords: maint, tex, docs - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Code: - -;;; Emacs lisp functions to convert Texinfo files to Info files. - -(defvar texinfmt-version "2.37 of 24 May 1997") - -(defun texinfmt-version (&optional here) - "Show the version of texinfmt.el in the minibuffer. -If optional argument HERE is non-nil, insert info at point." - (interactive "P") - (let ((version-string - (format "Version of \`texinfmt.el\': %s" texinfmt-version))) - (if here - (insert version-string) - (if (interactive-p) - (message "%s" version-string) - version-string)))) - - -;;; Variable definitions - -(require 'texinfo) ; So `texinfo-footnote-style' is defined. -(require 'texnfo-upd) ; So `texinfo-section-types-regexp' is defined. - -(defvar texinfo-format-syntax-table nil) - -(defvar texinfo-vindex) -(defvar texinfo-findex) -(defvar texinfo-cindex) -(defvar texinfo-pindex) -(defvar texinfo-tindex) -(defvar texinfo-kindex) -(defvar texinfo-last-node) -(defvar texinfo-node-names) -(defvar texinfo-enclosure-list) -(defvar texinfo-alias-list) - -(defvar texinfo-command-start) -(defvar texinfo-command-end) -(defvar texinfo-command-name) -(defvar texinfo-defun-type) -(defvar texinfo-last-node-pos) -(defvar texinfo-stack) -(defvar texinfo-short-index-cmds-alist) -(defvar texinfo-short-index-format-cmds-alist) -(defvar texinfo-format-filename) -(defvar texinfo-footnote-number) -(defvar texinfo-start-of-header) -(defvar texinfo-end-of-header) -(defvar texinfo-raisesections-alist) -(defvar texinfo-lowersections-alist) - -;;; Syntax table - -(if texinfo-format-syntax-table - nil - (setq texinfo-format-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\" " " texinfo-format-syntax-table) - (modify-syntax-entry ?\\ " " texinfo-format-syntax-table) - (modify-syntax-entry ?@ "\\" texinfo-format-syntax-table) - (modify-syntax-entry ?\^q "\\" texinfo-format-syntax-table) - (modify-syntax-entry ?\[ "." texinfo-format-syntax-table) - (modify-syntax-entry ?\] "." texinfo-format-syntax-table) - (modify-syntax-entry ?\( "." texinfo-format-syntax-table) - (modify-syntax-entry ?\) "." texinfo-format-syntax-table) - (modify-syntax-entry ?{ "(}" texinfo-format-syntax-table) - (modify-syntax-entry ?} "){" texinfo-format-syntax-table) - (modify-syntax-entry ?\' "." texinfo-format-syntax-table)) - - -;;; Top level buffer and region formatting functions - -;;;###autoload -(defun texinfo-format-buffer (&optional notagify) - "Process the current buffer as texinfo code, into an Info file. -The Info file output is generated in a buffer visiting the Info file -name specified in the @setfilename command. - -Non-nil argument (prefix, if interactive) means don't make tag table -and don't split the file if large. You can use Info-tagify and -Info-split to do these manually." - (interactive "P") - (let ((lastmessage "Formatting Info file...")) - (message lastmessage) - (texinfo-format-buffer-1) - (if notagify - nil - (if (> (buffer-size) 30000) - (progn - (message (setq lastmessage "Making tags table for Info file...")) - (Info-tagify))) - (if (> (buffer-size) 100000) - (progn - (message (setq lastmessage "Splitting Info file...")) - (Info-split)))) - (message (concat lastmessage - (if (interactive-p) "done. Now save it." "done."))))) - -(defvar texinfo-region-buffer-name "*Info Region*" - "*Name of the temporary buffer used by \\[texinfo-format-region].") - -;;;###autoload -(defun texinfo-format-region (region-beginning region-end) - "Convert the current region of the Texinfo file to Info format. -This lets you see what that part of the file will look like in Info. -The command is bound to \\[texinfo-format-region]. The text that is -converted to Info is stored in a temporary buffer." - (interactive "r") - (message "Converting region to Info format...") - (let (texinfo-command-start - texinfo-command-end - texinfo-command-name - texinfo-vindex - texinfo-findex - texinfo-cindex - texinfo-pindex - texinfo-tindex - texinfo-kindex - texinfo-stack - (texinfo-format-filename "") - texinfo-example-start - texinfo-last-node-pos - texinfo-last-node - texinfo-node-names - (texinfo-footnote-number 0) - last-input-buffer - (fill-column-for-info fill-column) - (input-buffer (current-buffer)) - (input-directory default-directory) - (header-text "") - (header-beginning 1) - (header-end 1)) - -;;; Copy lines between beginning and end of header lines, -;;; if any, or else copy the `@setfilename' line, if any. - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - (let ((search-end (save-excursion (forward-line 100) (point)))) - (if (or - ;; Either copy header text. - (and - (prog1 - (search-forward tex-start-of-header search-end t) - (forward-line 1) - ;; Mark beginning of header. - (setq header-beginning (point))) - (prog1 - (search-forward tex-end-of-header nil t) - (beginning-of-line) - ;; Mark end of header - (setq header-end (point)))) - ;; Or copy @filename line. - (prog2 - (goto-char (point-min)) - (search-forward "@setfilename" search-end t) - (beginning-of-line) - (setq header-beginning (point)) - (forward-line 1) - (setq header-end (point)))) - - ;; Copy header - (setq header-text - (buffer-substring - (min header-beginning region-beginning) - header-end)))))) - -;;; Find a buffer to use. - (switch-to-buffer (get-buffer-create texinfo-region-buffer-name)) - (erase-buffer) - ;; Insert the header into the buffer. - (insert header-text) - ;; Insert the region into the buffer. - (insert-buffer-substring - input-buffer - (max region-beginning header-end) - region-end) - ;; Make sure region ends in a newline. - (or (= (preceding-char) ?\n) - (insert "\n")) - - (goto-char (point-min)) - (texinfo-mode) - (message "Converting region to Info format...") - (setq fill-column fill-column-for-info) - ;; Install a syntax table useful for scanning command operands. - (set-syntax-table texinfo-format-syntax-table) - - ;; Insert @include files so `texinfo-raise-lower-sections' can - ;; work on them without losing track of multiple - ;; @raise/@lowersections commands. - (while (re-search-forward "^@include" nil t) - (setq texinfo-command-end (point)) - (let ((filename (concat input-directory - (texinfo-parse-line-arg)))) - (re-search-backward "^@include") - (delete-region (point) (save-excursion (forward-line 1) (point))) - (message "Reading included file: %s" filename) - (save-excursion - (save-restriction - (narrow-to-region - (point) - (+ (point) (car (cdr (insert-file-contents filename))))) - (goto-char (point-min)) - ;; Remove `@setfilename' line from included file, if any, - ;; so @setfilename command not duplicated. - (if (re-search-forward - "^@setfilename" (save-excursion (forward-line 100) (point)) t) - (progn - (beginning-of-line) - (delete-region - (point) (save-excursion (forward-line 1) (point))))))))) - - ;; Raise or lower level of each section, if necessary. - (goto-char (point-min)) - (texinfo-raise-lower-sections) - ;; Append @refill to appropriate paragraphs for filling. - (goto-char (point-min)) - (texinfo-append-refill) - ;; If the region includes the effective end of the data, - ;; discard everything after that. - (goto-char (point-max)) - (if (re-search-backward "^@bye" nil t) - (delete-region (point) (point-max))) - ;; Make sure buffer ends in a newline. - (or (= (preceding-char) ?\n) - (insert "\n")) - ;; Don't use a previous value of texinfo-enclosure-list. - (setq texinfo-enclosure-list nil) - (setq texinfo-alias-list nil) - - (goto-char (point-min)) - (if (looking-at "\\\\input[ \t]+texinfo") - (delete-region (point) (save-excursion (forward-line 1) (point)))) - - ;; Insert Info region title text. - (goto-char (point-min)) - (if (search-forward - "@setfilename" (save-excursion (forward-line 100) (point)) t) - (progn - (setq texinfo-command-end (point)) - (beginning-of-line) - (setq texinfo-command-start (point)) - (let ((arg (texinfo-parse-arg-discard))) - (insert " " - texinfo-region-buffer-name - " buffer for: `") - (insert (file-name-nondirectory (expand-file-name arg))) - (insert "', -*-Text-*-\n"))) - ;; Else no `@setfilename' line - (insert " " - texinfo-region-buffer-name - " buffer -*-Text-*-\n")) - (insert "produced by `texinfo-format-region'\n" - "from a region in: " - (if (buffer-file-name input-buffer) - (concat "`" - (file-name-sans-versions - (file-name-nondirectory - (buffer-file-name input-buffer))) - "'") - (concat "buffer `" (buffer-name input-buffer) "'")) - "\nusing `texinfmt.el' version " - texinfmt-version - ".\n\n") - - ;; Now convert for real. - (goto-char (point-min)) - (texinfo-format-scan) - (goto-char (point-min)) - - (message "Done."))) - -;;;###autoload -(defun texi2info (&optional notagify) - "Convert the current buffer (written in Texinfo code) into an Info file. -The Info file output is generated in a buffer visiting the Info file -names specified in the @setfilename command. - -This function automatically updates all node pointers and menus, and -creates a master menu. This work is done on a temporary buffer that -is automatically removed when the Info file is created. The original -Texinfo source buffer is not changed. - -Non-nil argument (prefix, if interactive) means don't make tag table -and don't split the file if large. You can use Info-tagify and -Info-split to do these manually." - (interactive "P") - (let ((temp-buffer (concat "*--" (buffer-name) "--temporary-buffer*" ))) - (message "First updating nodes and menus, then creating Info file.") - ;; (sit-for 2) - (copy-to-buffer temp-buffer (point-min) (point-max)) - (switch-to-buffer temp-buffer) - (texinfo-master-menu t) - (message "Now creating Info file.") - (sit-for 2) - (texinfo-format-buffer notagify) - (save-buffer) - (kill-buffer temp-buffer))) - - -;;; Primary internal formatting function for the whole buffer. - -(defun texinfo-format-buffer-1 () - (let (texinfo-format-filename - texinfo-example-start - texinfo-command-start - texinfo-command-end - texinfo-command-name - texinfo-last-node - texinfo-last-node-pos - texinfo-vindex - texinfo-findex - texinfo-cindex - texinfo-pindex - texinfo-tindex - texinfo-kindex - texinfo-stack - texinfo-node-names - (texinfo-footnote-number 0) - last-input-buffer - outfile - (fill-column-for-info fill-column) - (input-buffer (current-buffer)) - (input-directory default-directory)) - (setq texinfo-enclosure-list nil) - (setq texinfo-alias-list nil) - (save-excursion - (goto-char (point-min)) - (or (search-forward "@setfilename" nil t) - (error "Texinfo file needs an `@setfilename FILENAME' line.")) - (setq texinfo-command-end (point)) - (setq outfile (texinfo-parse-line-arg))) - (find-file outfile) - (texinfo-mode) - (setq fill-column fill-column-for-info) - (set-syntax-table texinfo-format-syntax-table) - (erase-buffer) - (insert-buffer-substring input-buffer) - (message "Converting %s to Info format..." (buffer-name input-buffer)) - - ;; Insert @include files so `texinfo-raise-lower-sections' can - ;; work on them without losing track of multiple - ;; @raise/@lowersections commands. - (goto-char (point-min)) - (while (re-search-forward "^@include" nil t) - (setq texinfo-command-end (point)) - (let ((filename (concat input-directory - (texinfo-parse-line-arg)))) - (re-search-backward "^@include") - (delete-region (point) (save-excursion (forward-line 1) (point))) - (message "Reading included file: %s" filename) - (save-excursion - (save-restriction - (narrow-to-region - (point) - (+ (point) (car (cdr (insert-file-contents filename))))) - (goto-char (point-min)) - ;; Remove `@setfilename' line from included file, if any, - ;; so @setfilename command not duplicated. - (if (re-search-forward - "^@setfilename" - (save-excursion (forward-line 100) (point)) t) - (progn - (beginning-of-line) - (delete-region - (point) (save-excursion (forward-line 1) (point))))))))) - ;; Raise or lower level of each section, if necessary. - (goto-char (point-min)) - (texinfo-raise-lower-sections) - ;; Append @refill to appropriate paragraphs - (goto-char (point-min)) - (texinfo-append-refill) - (goto-char (point-min)) - (search-forward "@setfilename") - (beginning-of-line) - (delete-region (point-min) (point)) - ;; Remove @bye at end of file, if it is there. - (goto-char (point-max)) - (if (search-backward "@bye" nil t) - (delete-region (point) (point-max))) - ;; Make sure buffer ends in a newline. - (or (= (preceding-char) ?\n) - (insert "\n")) - ;; Scan the whole buffer, converting to Info format. - (texinfo-format-scan) - ;; Return data for indices. - (goto-char (point-min)) - (list outfile - texinfo-vindex texinfo-findex texinfo-cindex - texinfo-pindex texinfo-tindex texinfo-kindex))) - - -;;; Perform non-@-command file conversions: quotes and hyphens - -(defun texinfo-format-convert (min max) - ;; Convert left and right quotes to typewriter font quotes. - (goto-char min) - (while (search-forward "``" max t) - (replace-match "\"")) - (goto-char min) - (while (search-forward "''" max t) - (replace-match "\"")) - ;; Convert three hyphens in a row to two. - (goto-char min) - (while (re-search-forward "\\( \\|\\w\\)\\(---\\)\\( \\|\\w\\)" max t) - (delete-region (1+ (match-beginning 2)) (+ 2 (match-beginning - 2))))) - - -;;; Handle paragraph filling - -;; Keep as concatinated lists for ease of maintenance - -(defvar texinfo-no-refill-regexp - (concat - "^@" - "\\(" - "example\\|" - "smallexample\\|" - "lisp\\|" - "smalllisp\\|" - "display\\|" - "format\\|" - "flushleft\\|" - "flushright\\|" - "menu\\|" - "multitable\\|" - "titlepage\\|" - "iftex\\|" - "ifhtml\\|" - "tex\\|" - "html" - "\\)") - "Regexp specifying environments in which paragraphs are not filled.") - -(defvar texinfo-accent-commands - (concat - "@^\\|" - "@`\\|" - "@'\\|" - "@\"\\|" - "@,\\|" - "@=\\|" - "@~\\|" - "@OE{\\|" - "@oe{\\|" - "@AA{\\|" - "@aa{\\|" - "@AE{\\|" - "@ae{\\|" - "@ss{\\|" - "@questiondown{\\|" - "@exclamdown{\\|" - "@L{\\|" - "@l{\\|" - "@O{\\|" - "@o{\\|" - "@dotaccent{\\|" - "@ubaraccent{\\|" - "@d{\\|" - "@H{\\|" - "@ringaccent{\\|" - "@tieaccent{\\|" - "@u{\\|" - "@v{\\|" - "@dotless{" - )) - -(defvar texinfo-part-of-para-regexp - (concat - "^@" - "\\(" - "b{\\|" - "bullet{\\|" - "cite{\\|" - "code{\\|" - "email{\\|" - "emph{\\|" - "equiv{\\|" - "error{\\|" - "expansion{\\|" - "file{\\|" - "i{\\|" - "inforef{\\|" - "kbd{\\|" - "key{\\|" - "lisp{\\|" - "minus{\\|" - "point{\\|" - "print{\\|" - "pxref{\\|" - "r{\\|" - "ref{\\|" - "result{\\|" - "samp{\\|" - "sc{\\|" - "t{\\|" - "TeX{\\|" - "today{\\|" - "url{\\|" - "var{\\|" - "w{\\|" - "xref{\\|" - "@-\\|" ; @- is a descretionary hyphen (not an accent) (a noop). - texinfo-accent-commands - "\\)" - ) - "Regexp specifying @-commands found within paragraphs.") - -(defun texinfo-append-refill () - "Append @refill at end of each paragraph that should be filled. -Do not append @refill to paragraphs within @example and similar environments. -Do not append @refill to paragraphs containing @w{TEXT} or @*." - - ;; It is necessary to append @refill before other processing because - ;; the other processing removes information that tells Texinfo - ;; whether the text should or should not be filled. - - (while (< (point) (point-max)) - (let ((refill-blank-lines "^[ \t\n]*$") - (case-fold-search nil)) ; Don't confuse @TeX and @tex.... - (beginning-of-line) - ;; 1. Skip over blank lines; - ;; skip over lines beginning with @-commands, - ;; but do not skip over lines - ;; that are no-refill environments such as @example or - ;; that begin with within-paragraph @-commands such as @code. - (while (and (looking-at (concat "^@\\|^\\\\\\|" refill-blank-lines)) - (not (looking-at - (concat - "\\(" - texinfo-no-refill-regexp - "\\|" - texinfo-part-of-para-regexp - "\\)"))) - (< (point) (point-max))) - (forward-line 1)) - ;; 2. Skip over @example and similar no-refill environments. - (if (looking-at texinfo-no-refill-regexp) - (let ((environment - (buffer-substring (match-beginning 1) (match-end 1)))) - (progn (re-search-forward (concat "^@end " environment) nil t) - (forward-line 1))) - ;; Else - ;; 3. Do not refill a paragraph containing @w or @*, or ending - ;; with @<newline> followed by a newline. - (if (or - (>= (point) (point-max)) - (re-search-forward - "@w{\\|@\\*\\|@\n\n" - (save-excursion - (forward-paragraph) - (forward-line 1) - (point)) t)) - ;; Go to end of paragraph and do nothing. - (forward-paragraph) - ;; 4. Else go to end of paragraph and insert @refill - (forward-paragraph) - (forward-line -1) - (end-of-line) - (delete-region - (point) - (save-excursion (skip-chars-backward " \t") (point))) - ;; `looking-at-backward' not available in v. 18.57 - ;; (if (not (looking-at-backward "@refill\\|@bye")) ;) - (if (not (re-search-backward - "@refill\\|@bye" - (save-excursion (beginning-of-line) (point)) - t)) - (insert "@refill")) - (forward-line 1)))))) - - -;;; Handle `@raisesections' and `@lowersections' commands - -;; These commands change the hierarchical level of chapter structuring -;; commands. -;; -;; @raisesections changes @subsection to @section, -;; @section to @chapter, -;; etc. -;; -;; @lowersections changes @chapter to @section -;; @subsection to @subsubsection, -;; etc. -;; -;; An @raisesections/@lowersections command changes only those -;; structuring commands that follow the @raisesections/@lowersections -;; command. -;; -;; Repeated @raisesections/@lowersections continue to raise or lower -;; the heading level. -;; -;; An @lowersections command cancels an @raisesections command, and -;; vice versa. -;; -;; You cannot raise or lower "beyond" chapters or subsubsections, but -;; trying to do so does not elicit an error---you just get more -;; headings that mean the same thing as you keep raising or lowering -;; (for example, after a single @raisesections, both @chapter and -;; @section produce chapter headings). - -(defun texinfo-raise-lower-sections () - "Raise or lower the hierarchical level of chapters, sections, etc. - -This function acts according to `@raisesections' and `@lowersections' -commands in the Texinfo file. - -For example, an `@lowersections' command is useful if you wish to -include what is written as an outer or standalone Texinfo file in -another Texinfo file as an inner, included file. The `@lowersections' -command changes chapters to sections, sections to subsections and so -on. - -@raisesections changes @subsection to @section, - @section to @chapter, - @heading to @chapheading, - etc. - -@lowersections changes @chapter to @section, - @subsection to @subsubsection, - @heading to @subheading, - etc. - -An `@raisesections' or `@lowersections' command changes only those -structuring commands that follow the `@raisesections' or -`@lowersections' command. - -An `@lowersections' command cancels an `@raisesections' command, and -vice versa. - -Repeated use of the commands continue to raise or lower the hierarchical -level a step at a time. - -An attempt to raise above `chapters' reproduces chapter commands; an -attempt to lower below subsubsections reproduces subsubsection -commands." - - ;; `texinfo-section-types-regexp' is defined in `texnfo-upd.el'; - ;; it is a regexp matching chapter, section, other headings - ;; (but not the top node). - - (let (type (level 0)) - (while - (re-search-forward - (concat - "\\(\\(^@\\(raise\\|lower\\)sections\\)\\|\\(" - texinfo-section-types-regexp - "\\)\\)") - nil t) - (beginning-of-line) - (save-excursion (setq type (read (current-buffer)))) - (cond - - ;; 1. Increment level - ((eq type '@raisesections) - (setq level (1+ level)) - (delete-region - (point) (save-excursion (forward-line 1) (point)))) - - ;; 2. Decrement level - ((eq type '@lowersections) - (setq level (1- level)) - (delete-region - (point) (save-excursion (forward-line 1) (point)))) - - ;; Now handle structuring commands - ((cond - - ;; 3. Raise level when positive - ((> level 0) - (let ((count level) - (new-level type)) - (while (> count 0) - (setq new-level - (cdr (assq new-level texinfo-raisesections-alist))) - (setq count (1- count))) - (kill-word 1) - (insert (symbol-name new-level)))) - - ;; 4. Do nothing except move point when level is zero - ((= level 0) (forward-line 1)) - - ;; 5. Lower level when positive - ((< level 0) - (let ((count level) - (new-level type)) - (while (< count 0) - (setq new-level - (cdr (assq new-level texinfo-lowersections-alist))) - (setq count (1+ count))) - (kill-word 1) - (insert (symbol-name new-level)))))))))) - -(defvar texinfo-raisesections-alist - '((@chapter . @chapter) ; Cannot go higher - (@unnumbered . @unnumbered) - (@centerchap . @unnumbered) - - (@majorheading . @majorheading) - (@chapheading . @chapheading) - (@appendix . @appendix) - - (@section . @chapter) - (@unnumberedsec . @unnumbered) - (@heading . @chapheading) - (@appendixsec . @appendix) - - (@subsection . @section) - (@unnumberedsubsec . @unnumberedsec) - (@subheading . @heading) - (@appendixsubsec . @appendixsec) - - (@subsubsection . @subsection) - (@unnumberedsubsubsec . @unnumberedsubsec) - (@subsubheading . @subheading) - (@appendixsubsubsec . @appendixsubsec)) - "*An alist of next higher levels for chapters, sections. etc. -For example, section to chapter, subsection to section. -Used by `texinfo-raise-lower-sections'. -The keys specify types of section; the values correspond to the next -higher types.") - -(defvar texinfo-lowersections-alist - '((@chapter . @section) - (@unnumbered . @unnumberedsec) - (@centerchap . @unnumberedsec) - (@majorheading . @heading) - (@chapheading . @heading) - (@appendix . @appendixsec) - - (@section . @subsection) - (@unnumberedsec . @unnumberedsubsec) - (@heading . @subheading) - (@appendixsec . @appendixsubsec) - - (@subsection . @subsubsection) - (@unnumberedsubsec . @unnumberedsubsubsec) - (@subheading . @subsubheading) - (@appendixsubsec . @appendixsubsubsec) - - (@subsubsection . @subsubsection) ; Cannot go lower. - (@unnumberedsubsubsec . @unnumberedsubsubsec) - (@subsubheading . @subsubheading) - (@appendixsubsubsec . @appendixsubsubsec)) - "*An alist of next lower levels for chapters, sections. etc. -For example, chapter to section, section to subsection. -Used by `texinfo-raise-lower-sections'. -The keys specify types of section; the values correspond to the next -lower types.") - - -;;; Perform those texinfo-to-info conversions that apply to the whole input -;;; uniformly. - -(defun texinfo-format-scan () - (texinfo-format-convert (point-min) (point-max)) - ;; Scan for @-commands. - (goto-char (point-min)) - (while (search-forward "@" nil t) - ;; - ;; These are the single-character accent commands: @^ @` @' @" @= @~ - ;; In Info, they are simply quoted and the @ deleted. - ;; Other single-character commands: - ;; @* forces a line break, - ;; @- is a discretionary hyphenation point; does nothing in Info. - ;; @<space>, @<tab>, @<newline> each produce a single space, - ;; unless followed by a newline. - ;; - ;; Old version 2.34 expression: (looking-at "[@{}^'` *\"?!]") - (if (looking-at "[@{}^'`\"=~ \t\n*?!-]") - ;; @*, causes a line break. - (cond - ;; @*, a line break - ((= (following-char) ?*) - ;; remove command - (delete-region (1- (point)) (1+ (point))) - ;; insert return if not at end of line; - ;; else line is already broken. - (if (not (= (following-char) ?\n)) - (insert ?\n))) - ;; @-, deleted - ((= (following-char) ?-) - (delete-region (1- (point)) (1+ (point)))) - ;; @<space>, @<tab>, @<newline>: produce a single space, - ;; unless followed by a newline. - ((= (following-char) ? ) - (delete-region (1- (point)) (1+ (point))) - ;; insert single space if not at end of line; - ;; else line is already broken. - (if (not (= (following-char) ?\n)) - (insert ? ))) - ((= (following-char) ?\t) - (delete-region (1- (point)) (1+ (point))) - ;; insert single space if not at end of line; - ;; else line is already broken. - (if (not (= (following-char) ?\n)) - (insert ? ))) - ;; following char is a carriage return - ((= (following-char) ? -) - ;; remove command - (delete-region (1- (point)) (1+ (point))) - ;; insert single space if not at end of line; - ;; else line is already broken. - (if (not (= (following-char) ?\n)) - (insert ? ))) - ;; Otherwise: the other characters are simply quoted. Delete the @. - (t - (delete-char -1) - (forward-char 1))) - ;; @ is followed by a command-word; find the end of the word. - (setq texinfo-command-start (1- (point))) - (if (= (char-syntax (following-char)) ?w) - (forward-word 1) - (forward-char 1)) - (setq texinfo-command-end (point)) - ;; Handle let aliasing - (setq texinfo-command-name - (let (trial - (cmdname - (buffer-substring - (1+ texinfo-command-start) texinfo-command-end))) - (while (setq trial (assoc cmdname texinfo-alias-list)) - (setq cmdname (cdr trial))) - (intern cmdname))) - ;; Call the handler for this command. - (let ((enclosure-type - (assoc - (symbol-name texinfo-command-name) - texinfo-enclosure-list))) - (if enclosure-type - (progn - (insert - (car (car (cdr enclosure-type))) - (texinfo-parse-arg-discard) - (car (cdr (car (cdr enclosure-type))))) - (goto-char texinfo-command-start)) - (let ((cmd (get texinfo-command-name 'texinfo-format))) - (if cmd (funcall cmd) (texinfo-unsupported))))))) - - (cond (texinfo-stack - (goto-char (nth 2 (car texinfo-stack))) - (error "Unterminated @%s" (car (car texinfo-stack)))))) - -(put 'begin 'texinfo-format 'texinfo-format-begin) -(defun texinfo-format-begin () - (texinfo-format-begin-end 'texinfo-format)) - -(put 'end 'texinfo-format 'texinfo-format-end) -(defun texinfo-format-end () - (texinfo-format-begin-end 'texinfo-end)) - -(defun texinfo-format-begin-end (prop) - (setq texinfo-command-name (intern (texinfo-parse-line-arg))) - (let ((cmd (get texinfo-command-name prop))) - (if cmd (funcall cmd) - (texinfo-unsupported)))) - -;;; Parsing functions - -(defun texinfo-parse-line-arg () - "Return argument of @-command as string. -Argument is separated from command either by a space or by a brace. -If a space, return rest of line, with beginning and ending white -space removed. If a brace, return string between braces. -Leave point after argument." - (goto-char texinfo-command-end) - (let ((start (point))) - (cond ((looking-at " ") - (skip-chars-forward " ") - (setq start (point)) - (end-of-line) - (skip-chars-backward " ") - (delete-region (point) (progn (end-of-line) (point))) - (setq texinfo-command-end (1+ (point)))) - ((looking-at "{") - (setq start (1+ (point))) - (forward-list 1) - (setq texinfo-command-end (point)) - (forward-char -1)) - (t - (error "Invalid texinfo command arg format"))) - (prog1 (buffer-substring start (point)) - (if (eolp) (forward-char 1))))) - -(defun texinfo-parse-expanded-arg () - (goto-char texinfo-command-end) - (let ((start (point)) - marker) - (cond ((looking-at " ") - (skip-chars-forward " ") - (setq start (point)) - (end-of-line) - (setq texinfo-command-end (1+ (point)))) - ((looking-at "{") - (setq start (1+ (point))) - (forward-list 1) - (setq texinfo-command-end (point)) - (forward-char -1)) - (t - (error "Invalid texinfo command arg format"))) - (setq marker (move-marker (make-marker) texinfo-command-end)) - (texinfo-format-expand-region start (point)) - (setq texinfo-command-end (marker-position marker)) - (move-marker marker nil) - (prog1 (buffer-substring start (point)) - (if (eolp) (forward-char 1))))) - -(defun texinfo-format-expand-region (start end) - (save-restriction - (narrow-to-region start end) - (let (texinfo-command-start - texinfo-command-end - texinfo-command-name - texinfo-stack) - (texinfo-format-scan)) - (goto-char (point-max)))) - -(defun texinfo-parse-arg-discard () - "Delete command and argument; return argument of command." - (prog1 (texinfo-parse-line-arg) - (texinfo-discard-command))) - -(defun texinfo-discard-command () - (delete-region texinfo-command-start texinfo-command-end)) - -(defun texinfo-optional-braces-discard () - "Discard braces following command, if any." - (goto-char texinfo-command-end) - (let ((start (point))) - (cond ((looking-at "[ \t]*\n")) ; do nothing - ((looking-at "{") ; remove braces, if any - (forward-list 1) - (setq texinfo-command-end (point))) - (t - (error - "Invalid `texinfo-optional-braces-discard' format \(need braces?\)"))) - (delete-region texinfo-command-start texinfo-command-end))) - -(defun texinfo-format-parse-line-args () - (let ((start (1- (point))) - next beg end - args) - (skip-chars-forward " ") - (while (not (eolp)) - (setq beg (point)) - (re-search-forward "[\n,]") - (setq next (point)) - (if (bolp) (setq next (1- next))) - (forward-char -1) - (skip-chars-backward " ") - (setq end (point)) - (setq args (cons (if (> end beg) (buffer-substring beg end)) - args)) - (goto-char next) - (skip-chars-forward " ")) - (if (eolp) (forward-char 1)) - (setq texinfo-command-end (point)) - (nreverse args))) - -(defun texinfo-format-parse-args () - (let ((start (1- (point))) - next beg end - args) - (search-forward "{") - (save-excursion - (texinfo-format-expand-region - (point) - (save-excursion (up-list 1) (1- (point))))) - ;; The following does not handle cross references of the form: - ;; `@xref{bullet, , @code{@@bullet}@{@}}.' because the - ;; re-search-forward finds the first right brace after the second - ;; comma. - (while (/= (preceding-char) ?\}) - (skip-chars-forward " \t\n") - (setq beg (point)) - (re-search-forward "[},]") - (setq next (point)) - (forward-char -1) - (skip-chars-backward " \t\n") - (setq end (point)) - (cond ((< beg end) - (goto-char beg) - (while (search-forward "\n" end t) - (replace-match " ")))) - (setq args (cons (if (> end beg) (buffer-substring beg end)) - args)) - (goto-char next)) - (if (eolp) (forward-char 1)) - (setq texinfo-command-end (point)) - (nreverse args))) - -(defun texinfo-format-parse-defun-args () - (goto-char texinfo-command-end) - (let ((start (point))) - (end-of-line) - (setq texinfo-command-end (1+ (point))) - (let ((marker (move-marker (make-marker) texinfo-command-end))) - (texinfo-format-expand-region start (point)) - (setq texinfo-command-end (marker-position marker)) - (move-marker marker nil)) - (goto-char start) - (let ((args '()) - beg end) - (skip-chars-forward " ") - (while (not (eolp)) - (cond ((looking-at "{") - (setq beg (1+ (point))) - (forward-list 1) - (setq end (1- (point)))) - (t - (setq beg (point)) - (re-search-forward "[\n ]") - (forward-char -1) - (setq end (point)))) - (setq args (cons (buffer-substring beg end) args)) - (skip-chars-forward " ")) - (forward-char 1) - (nreverse args)))) - -(defun texinfo-discard-line () - (goto-char texinfo-command-end) - (skip-chars-forward " \t") - (or (eolp) - (error "Extraneous text at end of command line.")) - (goto-char texinfo-command-start) - (or (bolp) - (error "Extraneous text at beginning of command line.")) - (delete-region (point) (progn (forward-line 1) (point)))) - -(defun texinfo-discard-line-with-args () - (goto-char texinfo-command-start) - (delete-region (point) (progn (forward-line 1) (point)))) - - -;;; @setfilename - -;; Only `texinfo-format-buffer' handles @setfilename with this -;; definition; `texinfo-format-region' handles @setfilename, if any, -;; specially. -(put 'setfilename 'texinfo-format 'texinfo-format-setfilename) -(defun texinfo-format-setfilename () - (let ((arg (texinfo-parse-arg-discard))) - (message "Formatting Info file: %s" arg) - (setq texinfo-format-filename - (file-name-nondirectory (expand-file-name arg))) - (insert "Info file: " - texinfo-format-filename ", -*-Text-*-\n" - "produced by `texinfo-format-buffer'\n" - ;; Date string removed so that regression testing is easier. - ;; "on " - ;; (insert (format-time-string "%e %b %Y")) " " - "from file" - (if (buffer-file-name input-buffer) - (concat " `" - (file-name-sans-versions - (file-name-nondirectory - (buffer-file-name input-buffer))) - "'") - (concat "buffer `" (buffer-name input-buffer) "'")) - "\nusing `texinfmt.el' version " - texinfmt-version - ".\n\n"))) - -;;; @node, @menu, @detailmenu - -(put 'node 'texinfo-format 'texinfo-format-node) -(put 'nwnode 'texinfo-format 'texinfo-format-node) -(defun texinfo-format-node () - (let* ((args (texinfo-format-parse-line-args)) - (name (nth 0 args)) - (next (nth 1 args)) - (prev (nth 2 args)) - (up (nth 3 args))) - (texinfo-discard-command) - (setq texinfo-last-node name) - (let ((tem (downcase name))) - (if (assoc tem texinfo-node-names) - (error "Duplicate node name: %s" name) - (setq texinfo-node-names (cons (list tem) texinfo-node-names)))) - (setq texinfo-footnote-number 0) - ;; insert "\n\^_" unconditionally since this is what info is looking for - (insert "\n\^_\nFile: " texinfo-format-filename - ", Node: " name) - (if next - (insert ", Next: " next)) - (if prev - (insert ", Prev: " prev)) - (if up - (insert ", Up: " up)) - (insert ?\n) - (setq texinfo-last-node-pos (point)))) - -(put 'menu 'texinfo-format 'texinfo-format-menu) -(defun texinfo-format-menu () - (texinfo-discard-line) - (insert "* Menu:\n\n")) - -(put 'menu 'texinfo-end 'texinfo-discard-command) - -;; The @detailmenu should be removed eventually. - -;; According to Karl Berry, 31 August 1996: -;; -;; You don't like, I don't like it. I agree, it would be better just to -;; fix the bug [in `makeinfo']. .. At this point, since inserting those -;; two commands in the Elisp fn is trivial, I don't especially want to -;; expend more effort... -;; -;; I added a couple sentences of documentation to the manual (putting the -;; blame on makeinfo where it belongs :-(). - -(put 'detailmenu 'texinfo-format 'texinfo-discard-line) -(put 'detailmenu 'texinfo-end 'texinfo-discard-command) - -;; (Also see `texnfo-upd.el') - - -;;; Cross references - -;; @xref {NODE, FNAME, NAME, FILE, DOCUMENT} -;; -> *Note FNAME: (FILE)NODE -;; If FILE is missing, -;; *Note FNAME: NODE -;; If FNAME is empty and NAME is present -;; *Note NAME: Node -;; If both NAME and FNAME are missing -;; *Note NODE:: -;; texinfo ignores the DOCUMENT argument. -;; -> See section <xref to NODE> [NAME, else NODE], page <xref to NODE> -;; If FILE is specified, (FILE)NODE is used for xrefs. -;; If fifth argument DOCUMENT is specified, produces -;; See section <xref to NODE> [NAME, else NODE], page <xref to NODE> -;; of DOCUMENT - -;; @ref a reference that does not put `See' or `see' in -;; the hardcopy and is the same as @xref in Info -(put 'ref 'texinfo-format 'texinfo-format-xref) - -(put 'xref 'texinfo-format 'texinfo-format-xref) -(defun texinfo-format-xref () - (let ((args (texinfo-format-parse-args))) - (texinfo-discard-command) - (insert "*Note ") - (let ((fname (or (nth 1 args) (nth 2 args)))) - (if (null (or fname (nth 3 args))) - (insert (car args) "::") - (insert (or fname (car args)) ": ") - (if (nth 3 args) - (insert "(" (nth 3 args) ")")) - (insert (car args)))))) - -(put 'pxref 'texinfo-format 'texinfo-format-pxref) -(defun texinfo-format-pxref () - (texinfo-format-xref) - (or (save-excursion - (forward-char -2) - (looking-at "::")) - (insert "."))) - -;; @inforef{NODE, FNAME, FILE} -;; Like @xref{NODE, FNAME,,FILE} in texinfo. -;; In Tex, generates "See Info file FILE, node NODE" -(put 'inforef 'texinfo-format 'texinfo-format-inforef) -(defun texinfo-format-inforef () - (let ((args (texinfo-format-parse-args))) - (texinfo-discard-command) - (if (nth 1 args) - (insert "*Note " (nth 1 args) ": (" (nth 2 args) ")" (car args)) - (insert "*Note " "(" (nth 2 args) ")" (car args) "::")))) - - -;;; Section headings - -(put 'majorheading 'texinfo-format 'texinfo-format-chapter) -(put 'chapheading 'texinfo-format 'texinfo-format-chapter) -(put 'ichapter 'texinfo-format 'texinfo-format-chapter) -(put 'chapter 'texinfo-format 'texinfo-format-chapter) -(put 'iappendix 'texinfo-format 'texinfo-format-chapter) -(put 'appendix 'texinfo-format 'texinfo-format-chapter) -(put 'iunnumbered 'texinfo-format 'texinfo-format-chapter) -(put 'top 'texinfo-format 'texinfo-format-chapter) -(put 'unnumbered 'texinfo-format 'texinfo-format-chapter) -(put 'centerchap 'texinfo-format 'texinfo-format-chapter) -(defun texinfo-format-chapter () - (texinfo-format-chapter-1 ?*)) - -(put 'heading 'texinfo-format 'texinfo-format-section) -(put 'isection 'texinfo-format 'texinfo-format-section) -(put 'section 'texinfo-format 'texinfo-format-section) -(put 'iappendixsection 'texinfo-format 'texinfo-format-section) -(put 'appendixsection 'texinfo-format 'texinfo-format-section) -(put 'iappendixsec 'texinfo-format 'texinfo-format-section) -(put 'appendixsec 'texinfo-format 'texinfo-format-section) -(put 'iunnumberedsec 'texinfo-format 'texinfo-format-section) -(put 'unnumberedsec 'texinfo-format 'texinfo-format-section) -(defun texinfo-format-section () - (texinfo-format-chapter-1 ?=)) - -(put 'subheading 'texinfo-format 'texinfo-format-subsection) -(put 'isubsection 'texinfo-format 'texinfo-format-subsection) -(put 'subsection 'texinfo-format 'texinfo-format-subsection) -(put 'iappendixsubsec 'texinfo-format 'texinfo-format-subsection) -(put 'appendixsubsec 'texinfo-format 'texinfo-format-subsection) -(put 'iunnumberedsubsec 'texinfo-format 'texinfo-format-subsection) -(put 'unnumberedsubsec 'texinfo-format 'texinfo-format-subsection) -(defun texinfo-format-subsection () - (texinfo-format-chapter-1 ?-)) - -(put 'subsubheading 'texinfo-format 'texinfo-format-subsubsection) -(put 'isubsubsection 'texinfo-format 'texinfo-format-subsubsection) -(put 'subsubsection 'texinfo-format 'texinfo-format-subsubsection) -(put 'iappendixsubsubsec 'texinfo-format 'texinfo-format-subsubsection) -(put 'appendixsubsubsec 'texinfo-format 'texinfo-format-subsubsection) -(put 'iunnumberedsubsubsec 'texinfo-format 'texinfo-format-subsubsection) -(put 'unnumberedsubsubsec 'texinfo-format 'texinfo-format-subsubsection) -(defun texinfo-format-subsubsection () - (texinfo-format-chapter-1 ?.)) - -(defun texinfo-format-chapter-1 (belowchar) - (let ((arg (texinfo-parse-arg-discard))) - (message "Formatting: %s ... " arg) ; So we can see where we are. - (insert ?\n arg ?\n "@SectionPAD " belowchar ?\n) - (forward-line -2))) - -(put 'SectionPAD 'texinfo-format 'texinfo-format-sectionpad) -(defun texinfo-format-sectionpad () - (let ((str (texinfo-parse-arg-discard))) - (forward-char -1) - (let ((column (current-column))) - (forward-char 1) - (while (> column 0) - (insert str) - (setq column (1- column)))) - (insert ?\n))) - - -;;; Space controlling commands: @. and @:, and the soft hyphen. - -(put '\. 'texinfo-format 'texinfo-format-\.) -(defun texinfo-format-\. () - (texinfo-discard-command) - (insert ".")) - -(put '\: 'texinfo-format 'texinfo-format-\:) -(defun texinfo-format-\: () - (texinfo-discard-command)) - -(put '\- 'texinfo-format 'texinfo-format-soft-hyphen) -(defun texinfo-format-soft-hyphen () - (texinfo-discard-command)) - - -;;; @center, @sp, and @br - -(put 'center 'texinfo-format 'texinfo-format-center) -(defun texinfo-format-center () - (let ((arg (texinfo-parse-expanded-arg))) - (texinfo-discard-command) - (insert arg) - (insert ?\n) - (save-restriction - (goto-char (1- (point))) - (let ((indent-tabs-mode nil)) - (center-line))))) - -(put 'sp 'texinfo-format 'texinfo-format-sp) -(defun texinfo-format-sp () - (let* ((arg (texinfo-parse-arg-discard)) - (num (read arg))) - (insert-char ?\n num))) - -(put 'br 'texinfo-format 'texinfo-format-paragraph-break) -(defun texinfo-format-paragraph-break () - "Force a paragraph break. -If used within a line, follow `@br' with braces." - (texinfo-optional-braces-discard) - ;; insert one return if at end of line; - ;; else insert two returns, to generate a blank line. - (if (= (following-char) ?\n) - (insert ?\n) - (insert-char ?\n 2))) - - -;;; @footnote and @footnotestyle - -;; In Texinfo, footnotes are created with the `@footnote' command. -;; This command is followed immediately by a left brace, then by the text of -;; the footnote, and then by a terminating right brace. The -;; template for a footnote is: -;; -;; @footnote{TEXT} -;; -;; Info has two footnote styles: -;; -;; * In the End of node style, all the footnotes for a single node -;; are placed at the end of that node. The footnotes are -;; separated from the rest of the node by a line of dashes with -;; the word `Footnotes' within it. -;; -;; * In the Separate node style, all the footnotes for a single node -;; are placed in an automatically constructed node of their own. - -;; Footnote style is specified by the @footnotestyle command, either -;; @footnotestyle separate -;; or -;; @footnotestyle end -;; -;; The default is separate - -(defvar texinfo-footnote-style "separate" - "Footnote style, either separate or end.") - -(put 'footnotestyle 'texinfo-format 'texinfo-footnotestyle) -(defun texinfo-footnotestyle () - "Specify whether footnotes are at end of node or in separate nodes. -Argument is either end or separate." - (setq texinfo-footnote-style (texinfo-parse-arg-discard))) - -(defvar texinfo-footnote-number) - -(put 'footnote 'texinfo-format 'texinfo-format-footnote) -(defun texinfo-format-footnote () - "Format a footnote in either end of node or separate node style. -The texinfo-footnote-style variable controls which style is used." - (setq texinfo-footnote-number (1+ texinfo-footnote-number)) - (cond ((string= texinfo-footnote-style "end") - (texinfo-format-end-node)) - ((string= texinfo-footnote-style "separate") - (texinfo-format-separate-node)))) - -(defun texinfo-format-separate-node () - "Format footnote in Separate node style, with notes in own node. -The node is constructed automatically." - (let* (start - (arg (texinfo-parse-line-arg)) - (node-name-beginning - (save-excursion - (re-search-backward - "^File: \\w+\\(\\w\\|\\s_\\|\\.\\|,\\)*[ \t]+Node:") - (match-end 0))) - (node-name - (save-excursion - (buffer-substring - (progn (goto-char node-name-beginning) ; skip over node command - (skip-chars-forward " \t") ; and over spaces - (point)) - (if (search-forward - "," - (save-excursion (end-of-line) (point)) t) ; bound search - (1- (point)) - (end-of-line) (point)))))) - (texinfo-discard-command) ; remove or insert whitespace, as needed - (delete-region (save-excursion (skip-chars-backward " \t\n") (point)) - (point)) - (insert (format " (%d) (*Note %s-Footnotes::)" - texinfo-footnote-number node-name)) - (fill-paragraph nil) - (save-excursion - (if (re-search-forward "^@node" nil 'move) - (forward-line -1)) - - ;; two cases: for the first footnote, we must insert a node header; - ;; for the second and subsequent footnotes, we need only insert - ;; the text of the footnote. - - (if (save-excursion - (re-search-backward - (concat node-name "-Footnotes, Up: ") - node-name-beginning - t)) - (progn ; already at least one footnote - (setq start (point)) - (insert (format "\n(%d) %s\n" texinfo-footnote-number arg)) - (fill-region start (point))) - ;; else not yet a footnote - (insert "\n\^_\nFile: " texinfo-format-filename - " Node: " node-name "-Footnotes, Up: " node-name "\n") - (setq start (point)) - (insert (format "\n(%d) %s\n" texinfo-footnote-number arg)) - (fill-region start (point)))))) - -(defun texinfo-format-end-node () - "Format footnote in the End of node style, with notes at end of node." - (let (start - (arg (texinfo-parse-line-arg))) - (texinfo-discard-command) ; remove or insert whitespace, as needed - (delete-region (save-excursion (skip-chars-backward " \t\n") (point)) - (point)) - (insert (format " (%d) " texinfo-footnote-number)) - (fill-paragraph nil) - (save-excursion - (if (search-forward "\n--------- Footnotes ---------\n" nil t) - (progn ; already have footnote, put new one before end of node - (if (re-search-forward "^@node" nil 'move) - (forward-line -1)) - (setq start (point)) - (insert (format "\n(%d) %s\n" texinfo-footnote-number arg)) - (fill-region start (point))) - ;; else no prior footnote - (if (re-search-forward "^@node" nil 'move) - (forward-line -1)) - (insert "\n--------- Footnotes ---------\n") - (setq start (point)) - (insert (format "\n(%d) %s\n" texinfo-footnote-number arg)))))) - - -;;; @itemize, @enumerate, and similar commands - -;; @itemize pushes (itemize "COMMANDS" STARTPOS) on texinfo-stack. -;; @enumerate pushes (enumerate 0 STARTPOS). -;; @item dispatches to the texinfo-item prop of the first elt of the list. -;; For itemize, this puts in and rescans the COMMANDS. -;; For enumerate, this increments the number and puts it in. -;; In either case, it puts a Backspace at the front of the line -;; which marks it not to be indented later. -;; All other lines get indented by 5 when the @end is reached. - -(defvar texinfo-stack-depth 0 - "Count of number of unpopped texinfo-push-stack calls. -Used by @refill indenting command to avoid indenting within lists, etc.") - -(defun texinfo-push-stack (check arg) - (setq texinfo-stack-depth (1+ texinfo-stack-depth)) - (setq texinfo-stack - (cons (list check arg texinfo-command-start) - texinfo-stack))) - -(defun texinfo-pop-stack (check) - (setq texinfo-stack-depth (1- texinfo-stack-depth)) - (if (null texinfo-stack) - (error "Unmatched @end %s" check)) - (if (not (eq (car (car texinfo-stack)) check)) - (error "@end %s matches @%s" - check (car (car texinfo-stack)))) - (prog1 (cdr (car texinfo-stack)) - (setq texinfo-stack (cdr texinfo-stack)))) - -(put 'itemize 'texinfo-format 'texinfo-itemize) -(defun texinfo-itemize () - (texinfo-push-stack - 'itemize - (progn (skip-chars-forward " \t") - (if (eolp) - "@bullet" - (texinfo-parse-line-arg)))) - (texinfo-discard-line-with-args) - (setq fill-column (- fill-column 5))) - -(put 'itemize 'texinfo-end 'texinfo-end-itemize) -(defun texinfo-end-itemize () - (setq fill-column (+ fill-column 5)) - (texinfo-discard-command) - (let ((stacktop - (texinfo-pop-stack 'itemize))) - (texinfo-do-itemize (nth 1 stacktop)))) - -(put 'enumerate 'texinfo-format 'texinfo-enumerate) -(defun texinfo-enumerate () - (texinfo-push-stack - 'enumerate - (progn (skip-chars-forward " \t") - (if (eolp) - 1 - (read (current-buffer))))) - (if (and (symbolp (car (cdr (car texinfo-stack)))) - (> 1 (length (symbol-name (car (cdr (car texinfo-stack))))))) - (error - "@enumerate: Use a number or letter, eg: 1, A, a, 3, B, or d." )) - (texinfo-discard-line-with-args) - (setq fill-column (- fill-column 5))) - -(put 'enumerate 'texinfo-end 'texinfo-end-enumerate) -(defun texinfo-end-enumerate () - (setq fill-column (+ fill-column 5)) - (texinfo-discard-command) - (let ((stacktop - (texinfo-pop-stack 'enumerate))) - (texinfo-do-itemize (nth 1 stacktop)))) - -;; @alphaenumerate never became a standard part of Texinfo -(put 'alphaenumerate 'texinfo-format 'texinfo-alphaenumerate) -(defun texinfo-alphaenumerate () - (texinfo-push-stack 'alphaenumerate (1- ?a)) - (setq fill-column (- fill-column 5)) - (texinfo-discard-line)) - -(put 'alphaenumerate 'texinfo-end 'texinfo-end-alphaenumerate) -(defun texinfo-end-alphaenumerate () - (setq fill-column (+ fill-column 5)) - (texinfo-discard-command) - (let ((stacktop - (texinfo-pop-stack 'alphaenumerate))) - (texinfo-do-itemize (nth 1 stacktop)))) - -;; @capsenumerate never became a standard part of Texinfo -(put 'capsenumerate 'texinfo-format 'texinfo-capsenumerate) -(defun texinfo-capsenumerate () - (texinfo-push-stack 'capsenumerate (1- ?A)) - (setq fill-column (- fill-column 5)) - (texinfo-discard-line)) - -(put 'capsenumerate 'texinfo-end 'texinfo-end-capsenumerate) -(defun texinfo-end-capsenumerate () - (setq fill-column (+ fill-column 5)) - (texinfo-discard-command) - (let ((stacktop - (texinfo-pop-stack 'capsenumerate))) - (texinfo-do-itemize (nth 1 stacktop)))) - -;; At the @end, indent all the lines within the construct -;; except those marked with backspace. FROM says where -;; construct started. -(defun texinfo-do-itemize (from) - (save-excursion - (while (progn (forward-line -1) - (>= (point) from)) - (if (= (following-char) ?\b) - (save-excursion - (delete-char 1) - (end-of-line) - (delete-char 6)) - (if (not (looking-at "[ \t]*$")) - (save-excursion (insert " "))))))) - -(put 'item 'texinfo-format 'texinfo-item) -(put 'itemx 'texinfo-format 'texinfo-item) -(defun texinfo-item () - (funcall (get (car (car texinfo-stack)) 'texinfo-item))) - -(put 'itemize 'texinfo-item 'texinfo-itemize-item) -(defun texinfo-itemize-item () - ;; (texinfo-discard-line) ; Did not handle text on same line as @item. - (delete-region (1+ (point)) (save-excursion (beginning-of-line) (point))) - (if (looking-at "[ \t]*[^ \t\n]+") - ;; Text on same line as @item command. - (insert "\b " (nth 1 (car texinfo-stack)) " \n") - ;; Else text on next line. - (insert "\b " (nth 1 (car texinfo-stack)) " ")) - (forward-line -1)) - -(put 'enumerate 'texinfo-item 'texinfo-enumerate-item) -(defun texinfo-enumerate-item () - (texinfo-discard-line) - (let (enumerating-symbol) - (cond ((integerp (car (cdr (car texinfo-stack)))) - (setq enumerating-symbol (car (cdr (car texinfo-stack)))) - (insert ?\b (format "%3d. " enumerating-symbol) ?\n) - (setcar (cdr (car texinfo-stack)) (1+ enumerating-symbol))) - ((symbolp (car (cdr (car texinfo-stack)))) - (setq enumerating-symbol - (symbol-name (car (cdr (car texinfo-stack))))) - (if (or (equal ?\[ (string-to-char enumerating-symbol)) - (equal ?\{ (string-to-char enumerating-symbol))) - (error - "Too many items in enumerated list; alphabet ends at Z.")) - (insert ?\b (format "%3s. " enumerating-symbol) ?\n) - (setcar (cdr (car texinfo-stack)) - (make-symbol - (char-to-string - (1+ - (string-to-char enumerating-symbol)))))) - (t - (error - "@enumerate: Use a number or letter, eg: 1, A, a, 3, B or d." ))) - (forward-line -1))) - -(put 'alphaenumerate 'texinfo-item 'texinfo-alphaenumerate-item) -(defun texinfo-alphaenumerate-item () - (texinfo-discard-line) - (let ((next (1+ (car (cdr (car texinfo-stack)))))) - (if (> next ?z) - (error "More than 26 items in @alphaenumerate; get a bigger alphabet.")) - (setcar (cdr (car texinfo-stack)) next) - (insert "\b " next ". \n")) - (forward-line -1)) - -(put 'capsenumerate 'texinfo-item 'texinfo-capsenumerate-item) -(defun texinfo-capsenumerate-item () - (texinfo-discard-line) - (let ((next (1+ (car (cdr (car texinfo-stack)))))) - (if (> next ?Z) - (error "More than 26 items in @capsenumerate; get a bigger alphabet.")) - (setcar (cdr (car texinfo-stack)) next) - (insert "\b " next ". \n")) - (forward-line -1)) - - -;;; @table - -;; The `@table' command produces two-column tables. - -(put 'table 'texinfo-format 'texinfo-table) -(defun texinfo-table () - (texinfo-push-stack - 'table - (progn (skip-chars-forward " \t") - (if (eolp) - "@asis" - (texinfo-parse-line-arg)))) - (texinfo-discard-line-with-args) - (setq fill-column (- fill-column 5))) - -(put 'table 'texinfo-item 'texinfo-table-item) -(defun texinfo-table-item () - (let ((arg (texinfo-parse-arg-discard)) - (itemfont (car (cdr (car texinfo-stack))))) - (insert ?\b itemfont ?\{ arg "}\n \n")) - (forward-line -2)) - -(put 'table 'texinfo-end 'texinfo-end-table) -(defun texinfo-end-table () - (setq fill-column (+ fill-column 5)) - (texinfo-discard-command) - (let ((stacktop - (texinfo-pop-stack 'table))) - (texinfo-do-itemize (nth 1 stacktop)))) - -;; @description appears to be an undocumented variant on @table that -;; does not require an arg. It fails in texinfo.tex 2.58 and is not -;; part of makeinfo.c The command appears to be a relic of the past. -(put 'description 'texinfo-end 'texinfo-end-table) -(put 'description 'texinfo-format 'texinfo-description) -(defun texinfo-description () - (texinfo-push-stack 'table "@asis") - (setq fill-column (- fill-column 5)) - (texinfo-discard-line)) - - -;;; @ftable, @vtable - -;; The `@ftable' and `@vtable' commands are like the `@table' command -;; but they also insert each entry in the first column of the table -;; into the function or variable index. - -;; Handle the @ftable and @vtable commands: - -(put 'ftable 'texinfo-format 'texinfo-ftable) -(put 'vtable 'texinfo-format 'texinfo-vtable) - -(defun texinfo-ftable () (texinfo-indextable 'ftable)) -(defun texinfo-vtable () (texinfo-indextable 'vtable)) - -(defun texinfo-indextable (table-type) - (texinfo-push-stack table-type (texinfo-parse-arg-discard)) - (setq fill-column (- fill-column 5))) - -;; Handle the @item commands within ftable and vtable: - -(put 'ftable 'texinfo-item 'texinfo-ftable-item) -(put 'vtable 'texinfo-item 'texinfo-vtable-item) - -(defun texinfo-ftable-item () (texinfo-indextable-item 'texinfo-findex)) -(defun texinfo-vtable-item () (texinfo-indextable-item 'texinfo-vindex)) - -(defun texinfo-indextable-item (index-type) - (let ((item (texinfo-parse-arg-discard)) - (itemfont (car (cdr (car texinfo-stack)))) - (indexvar index-type)) - (insert ?\b itemfont ?\{ item "}\n \n") - (set indexvar - (cons - (list item texinfo-last-node) - (symbol-value indexvar))) - (forward-line -2))) - -;; Handle @end ftable, @end vtable - -(put 'ftable 'texinfo-end 'texinfo-end-ftable) -(put 'vtable 'texinfo-end 'texinfo-end-vtable) - -(defun texinfo-end-ftable () (texinfo-end-indextable 'ftable)) -(defun texinfo-end-vtable () (texinfo-end-indextable 'vtable)) - -(defun texinfo-end-indextable (table-type) - (setq fill-column (+ fill-column 5)) - (texinfo-discard-command) - (let ((stacktop - (texinfo-pop-stack table-type))) - (texinfo-do-itemize (nth 1 stacktop)))) - - -;;; @multitable ... @end multitable - -;; Produce a multi-column table, with as many columns as desired. -;; -;; A multi-column table has this template: -;; -;; @multitable {A1} {A2} {A3} -;; @item A1 @tab A2 @tab A3 -;; @item B1 @tab B2 @tab B3 -;; @item C1 @tab C2 @tab C3 -;; @end multitable -;; -;; where the width of the text in brackets specifies the width of the -;; respective column. -;; -;; Or else: -;; -;; @multitable @columnfractions .25 .3 .45 -;; @item A1 @tab A2 @tab A3 -;; @item B1 @tab B2 @tab B3 -;; @end multitable -;; -;; where the fractions specify the width of each column as a percent -;; of the current width of the text (i.e., of the fill-column). -;; -;; Long lines of text are filled within columns. -;; -;; Using the Emacs Lisp formatter, texinfmt.el, -;; the whitespace between columns can be increased by setting -;; `texinfo-extra-inter-column-width' to a value greater than 0. By default, -;; there is at least one blank space between columns. -;; -;; The Emacs Lisp formatter, texinfmt.el, ignores the following four -;; commands that are defined in texinfo.tex for printed output. -;; -;; @multitableparskip, -;; @multitableparindent, -;; @multitablecolmargin, -;; @multitablelinespace. - -;; How @multitable works. -;; ===================== -;; -;; `texinfo-multitable' reads the @multitable line and determines from it -;; how wide each column should be. -;; -;; Also, it pushes this information, along with an identifying symbol, -;; onto the `texinfo-stack'. At the @end multitable command, the stack -;; is checked for its matching @multitable command, and then popped, or -;; else an error is signaled. Also, this command pushes the location of -;; the start of the table onto the stack. -;; -;; `texinfo-end-multitable' checks the `texinfo-stack' that the @end -;; multitable truly is ending a corresponding beginning, and if it is, -;; pops the stack. -;; -;; `texinfo-multitable-widths' is called by `texinfo-multitable'. -;; The function returns a list of the widths of each column in a -;; multi-column table, based on the information supplied by the arguments -;; to the @multitable command (by arguments, I mean the text on the rest -;; of the @multitable line, not the remainder of the multi-column table -;; environment). -;; -;; `texinfo-multitable-item' formats a row within a multicolumn table. -;; This command is executed when texinfmt sees @item inside @multitable. -;; Cells in row are separated by `@tab's. Widths of cells are specified -;; by the arguments in the @multitable line. Cells are filled. All cells -;; are made to be the same height by padding their bottoms, as needed, -;; with blanks. -;; -;; `texinfo-multitable-extract-row' is called by `texinfo-multitable-item'. -;; This function returns the text in a multitable row, as a string. -;; The start of a row is marked by an @item and the end of row is the -;; beginning of next @item or beginning of the @end multitable line. -;; Cells within a row are separated by @tab. -;; -;; Note that @tab, the cell separators, are not treated as independent -;; Texinfo commands. - -(defvar texinfo-extra-inter-column-width 0 - "*Number of extra spaces between entries (columns) in @multitable.") - -(defvar texinfo-multitable-buffer-name "*multitable-temporary-buffer*") -(defvar texinfo-multitable-rectangle-name "texinfo-multitable-temp-") - -;; These commands are defined in texinfo.tex for printed output. -(put 'multitableparskip 'texinfo-format 'texinfo-discard-line-with-args) -(put 'multitableparindent 'texinfo-format 'texinfo-discard-line-with-args) -(put 'multitablecolmargin 'texinfo-format 'texinfo-discard-line-with-args) -(put 'multitablelinespace 'texinfo-format 'texinfo-discard-line-with-args) - -(put 'multitable 'texinfo-format 'texinfo-multitable) - -(defun texinfo-multitable () - "Produce multi-column tables. - -A multi-column table has this template: - - @multitable {A1} {A2} {A3} - @item A1 @tab A2 @tab A3 - @item B1 @tab B2 @tab B3 - @item C1 @tab C2 @tab C3 - @end multitable - -where the width of the text in brackets specifies the width of the -respective column. - -Or else: - - @multitable @columnfractions .25 .3 .45 - @item A1 @tab A2 @tab A3 - @item B1 @tab B2 @tab B3 - @end multitable - -where the fractions specify the width of each column as a percent -of the current width of the text (i.e., of the fill-column). - -Long lines of text are filled within columns. - -Using the Emacs Lisp formatter, texinfmt.el, -the whitespace between columns can be increased by setting -`texinfo-extra-inter-column-width' to a value greater than 0. By default, -there is at least one blank space between columns. - -The Emacs Lisp formatter, texinfmt.el, ignores the following four -commands that are defined in texinfo.tex for printed output. - - @multitableparskip, - @multitableparindent, - @multitablecolmargin, - @multitablelinespace." - -;; This function pushes information onto the `texinfo-stack'. -;; A stack element consists of: -;; - type-of-command, i.e., multitable -;; - the information about column widths, and -;; - the position of texinfo-command-start. -;; e.g., ('multitable (1 2 3 4) 123) -;; The command line is then deleted. - (texinfo-push-stack - 'multitable - ;; push width information on stack - (texinfo-multitable-widths)) - (texinfo-discard-line-with-args)) - -(put 'multitable 'texinfo-end 'texinfo-end-multitable) -(defun texinfo-end-multitable () - "Discard the @end multitable line and pop the stack of multitable." - (texinfo-discard-command) - (texinfo-pop-stack 'multitable)) - -(defun texinfo-multitable-widths () - "Return list of widths of each column in a multi-column table." - (let (texinfo-multitable-width-list) - ;; Fractions format: - ;; @multitable @columnfractions .25 .3 .45 - ;; - ;; Template format: - ;; @multitable {Column 1 template} {Column 2} {Column 3 example} - ;; Place point before first argument - (skip-chars-forward " \t") - (cond - ;; Check for common misspelling - ((looking-at "@columnfraction ") - (error "In @multitable, @columnfractions misspelled")) - ;; Case 1: @columnfractions .25 .3 .45 - ((looking-at "@columnfractions") - (forward-word 1) - (while (not (eolp)) - (setq texinfo-multitable-width-list - (cons - (truncate - (1- - (* fill-column (read (get-buffer (current-buffer)))))) - texinfo-multitable-width-list)))) - ;; - ;; Case 2: {Column 1 template} {Column 2} {Column 3 example} - ((looking-at "{") - (let ((start-of-templates (point))) - (while (not (eolp)) - (skip-chars-forward " \t") - (let* ((start-of-template (1+ (point))) - (end-of-template - ;; forward-sexp works with braces in Texinfo mode - (progn (forward-sexp 1) (1- (point))))) - (setq texinfo-multitable-width-list - (cons (- end-of-template start-of-template) - texinfo-multitable-width-list)) - ;; Remove carriage return from within a template, if any. - ;; This helps those who want to use more than - ;; one line's worth of words in @multitable line. - (narrow-to-region start-of-template end-of-template) - (goto-char (point-min)) - (while (search-forward " -" nil t) - (delete-char -1)) - (goto-char (point-max)) - (widen) - (forward-char 1))))) - ;; - ;; Case 3: Trouble - (t - (error - "You probably need to specify column widths for @multitable correctly."))) - ;; Check whether columns fit on page. - (let ((desired-columns - (+ - ;; between column spaces - (length texinfo-multitable-width-list) - ;; additional between column spaces, if any - texinfo-extra-inter-column-width - ;; sum of spaces for each entry - (apply '+ texinfo-multitable-width-list)))) - (if (> desired-columns fill-column) - (error - (format - "Multi-column table width, %d chars, is greater than page width, %d chars." - desired-columns fill-column)))) - texinfo-multitable-width-list)) - -;; @item A1 @tab A2 @tab A3 -(defun texinfo-multitable-extract-row () - "Return multitable row, as a string. -End of row is beginning of next @item or beginning of @end. -Cells within rows are separated by @tab." - (skip-chars-forward " \t") - (let* ((start (point)) - (end (progn - (re-search-forward "@item\\|@end") - (match-beginning 0))) - (row (progn (goto-char end) - (skip-chars-backward " ") - ;; remove whitespace at end of argument - (delete-region (point) end) - (buffer-substring start (point))))) - (delete-region texinfo-command-start end) - row)) - -(put 'multitable 'texinfo-item 'texinfo-multitable-item) -(defun texinfo-multitable-item () - "Format a row within a multicolumn table. -Cells in row are separated by @tab. -Widths of cells are specified by the arguments in the @multitable line. -All cells are made to be the same height. -This command is executed when texinfmt sees @item inside @multitable." - (let ((original-buffer (current-buffer)) - (table-widths (reverse (car (cdr (car texinfo-stack))))) - (existing-fill-column fill-column) - start - end - (table-column 0) - (table-entry-height 0) - ;; unformatted row looks like: A1 @tab A2 @tab A3 - ;; extract-row command deletes the source line in the table. - (unformated-row (texinfo-multitable-extract-row))) - ;; Use a temporary buffer - (set-buffer (get-buffer-create texinfo-multitable-buffer-name)) - (delete-region (point-min) (point-max)) - (insert unformated-row) - (goto-char (point-min)) -;; 1. Check for correct number of @tab in line. - (let ((tab-number 1)) ; one @tab between two columns - (while (search-forward "@tab" nil t) - (setq tab-number (1+ tab-number))) - (if (/= tab-number (length table-widths)) - (error "Wrong number of @tab's in a @multitable row."))) - (goto-char (point-min)) -;; 2. Format each cell, and copy to a rectangle - ;; buffer looks like this: A1 @tab A2 @tab A3 - ;; Cell #1: format up to @tab - ;; Cell #2: format up to @tab - ;; Cell #3: format up to eob - (while (not (eobp)) - (setq start (point)) - (setq end (save-excursion - (if (search-forward "@tab" nil 'move) - ;; Delete the @tab command, including the @-sign - (delete-region - (point) - (progn (forward-word -1) (1- (point))))) - (point))) - ;; Set fill-column *wider* than needed to produce inter-column space - (setq fill-column (+ 1 - texinfo-extra-inter-column-width - (nth table-column table-widths))) - (narrow-to-region start end) - ;; Remove whitespace before and after entry. - (skip-chars-forward " ") - (delete-region (point) (save-excursion (beginning-of-line) (point))) - (goto-char (point-max)) - (skip-chars-backward " ") - (delete-region (point) (save-excursion (end-of-line) (point))) - ;; Temorarily set texinfo-stack to nil so texinfo-format-scan - ;; does not see an unterminated @multitable. - (let (texinfo-stack) ; nil - (texinfo-format-scan)) - (let (fill-prefix) ; no fill prefix - (fill-region (point-min) (point-max))) - (setq table-entry-height - (max table-entry-height (count-lines (point-min) (point-max)))) -;; 3. Move point to end of bottom line, and pad that line to fill column. - (goto-char (point-min)) - (forward-line (1- table-entry-height)) - (let* ((beg (point)) ; beginning of line - ;; add one more space for inter-column spacing - (needed-whitespace - (1+ - (- fill-column - (- - (progn (end-of-line) (point)) ; end of existing line - beg))))) - (insert (make-string - (if (> needed-whitespace 0) needed-whitespace 1) - ? ))) - ;; now, put formatted cell into a rectangle - (set (intern (concat texinfo-multitable-rectangle-name - (int-to-string table-column))) - (extract-rectangle (point-min) (point))) - (delete-region (point-min) (point)) - (goto-char (point-max)) - (setq table-column (1+ table-column)) - (widen)) -;; 4. Add extra lines to rectangles so all are of same height - (let ((total-number-of-columns table-column) - (column-number 0) - here) - (while (> table-column 0) - (let ((this-rectangle (int-to-string table-column))) - (while (< (length this-rectangle) table-entry-height) - (setq this-rectangle (append this-rectangle '(""))))) - (setq table-column (1- table-column))) -;; 5. Insert formatted rectangles in original buffer - (switch-to-buffer original-buffer) - (open-line table-entry-height) - (while (< column-number total-number-of-columns) - (setq here (point)) - (insert-rectangle - (eval (intern - (concat texinfo-multitable-rectangle-name - (int-to-string column-number))))) - (goto-char here) - (end-of-line) - (setq column-number (1+ column-number)))) - (kill-buffer texinfo-multitable-buffer-name) - (setq fill-column existing-fill-column))) - - -;;; @ifinfo, @iftex, @tex, @ifhtml, @html - -(put 'ifinfo 'texinfo-format 'texinfo-discard-line) -(put 'ifinfo 'texinfo-end 'texinfo-discard-command) - -(put 'iftex 'texinfo-format 'texinfo-format-iftex) -(defun texinfo-format-iftex () - (delete-region texinfo-command-start - (progn (re-search-forward "@end iftex[ \t]*\n") - (point)))) - -(put 'ifhtml 'texinfo-format 'texinfo-format-ifhtml) -(defun texinfo-format-ifhtml () - (delete-region texinfo-command-start - (progn (re-search-forward "@end ifhtml[ \t]*\n") - (point)))) - -(put 'tex 'texinfo-format 'texinfo-format-tex) -(defun texinfo-format-tex () - (delete-region texinfo-command-start - (progn (re-search-forward "@end tex[ \t]*\n") - (point)))) - -(put 'html 'texinfo-format 'texinfo-format-html) -(defun texinfo-format-html () - (delete-region texinfo-command-start - (progn (re-search-forward "@end html[ \t]*\n") - (point)))) - - -;;; @titlepage - -(put 'titlepage 'texinfo-format 'texinfo-format-titlepage) -(defun texinfo-format-titlepage () - (delete-region texinfo-command-start - (progn (re-search-forward "@end titlepage[ \t]*\n") - (point)))) - -(put 'endtitlepage 'texinfo-format 'texinfo-discard-line) - -;; @titlespec an alternative titling command; ignored by Info - -(put 'titlespec 'texinfo-format 'texinfo-format-titlespec) -(defun texinfo-format-titlespec () - (delete-region texinfo-command-start - (progn (re-search-forward "@end titlespec[ \t]*\n") - (point)))) - -(put 'endtitlespec 'texinfo-format 'texinfo-discard-line) - - -;;; @today - -(put 'today 'texinfo-format 'texinfo-format-today) - -;; Produces Day Month Year style of output. eg `1 Jan 1900' -;; The `@today{}' command requires a pair of braces, like `@dots{}'. -(defun texinfo-format-today () - (texinfo-parse-arg-discard) - (insert (format-time-string "%e %b %Y"))) - - -;;; @timestamp{} -;; Produce `Day Month Year Hour:Min' style of output. -;; eg `1 Jan 1900 13:52' - -(put 'timestamp 'texinfo-format 'texinfo-format-timestamp) - -;; The `@timestamp{}' command requires a pair of braces, like `@dots{}'. -(defun texinfo-format-timestamp () - "Insert the current local time and date." - (texinfo-parse-arg-discard) - ;; For seconds and time zone, replace format string with "%e %b %Y %T %Z" - (insert (format-time-string "%e %b %Y %R"))) - - -;;; @ignore - -(put 'ignore 'texinfo-format 'texinfo-format-ignore) -(defun texinfo-format-ignore () - (delete-region texinfo-command-start - (progn (re-search-forward "@end ignore[ \t]*\n") - (point)))) - -(put 'endignore 'texinfo-format 'texinfo-discard-line) - - -;;; Define the Info enclosure command: @definfoenclose - -;; A `@definfoenclose' command may be used to define a highlighting -;; command for Info, but not for TeX. A command defined using -;; `@definfoenclose' marks text by enclosing it in strings that precede -;; and follow the text. -;; -;; Presumably, if you define a command with `@definfoenclose` for Info, -;; you will also define the same command in the TeX definitions file, -;; `texinfo.tex' in a manner appropriate for typesetting. -;; -;; Write a `@definfoenclose' command on a line and follow it with three -;; arguments separated by commas (commas are used as separators in an -;; `@node' line in the same way). The first argument to -;; `@definfoenclose' is the @-command name \(without the `@'\); the -;; second argument is the Info start delimiter string; and the third -;; argument is the Info end delimiter string. The latter two arguments -;; enclose the highlighted text in the Info file. A delimiter string -;; may contain spaces. Neither the start nor end delimiter is -;; required. However, if you do not provide a start delimiter, you -;; must follow the command name with two commas in a row; otherwise, -;; the Info formatting commands will misinterpret the end delimiter -;; string as a start delimiter string. -;; -;; If you do a @definfoenclose{} on the name of a pre-defined macro (such -;; as @emph{}, @strong{}, @tt{}, or @i{}) the enclosure definition will -;; override the built-in definition. -;; -;; An enclosure command defined this way takes one argument in braces. -;; -;; For example, you can write: -;; -;; @ifinfo -;; @definfoenclose phoo, //, \\ -;; @end ifinfo -;; -;; near the beginning of a Texinfo file at the beginning of the lines -;; to define `@phoo' as an Info formatting command that inserts `//' -;; before and `\\' after the argument to `@phoo'. You can then write -;; `@phoo{bar}' wherever you want `//bar\\' highlighted in Info. -;; -;; Also, for TeX formatting, you could write -;; -;; @iftex -;; @global@let@phoo=@i -;; @end iftex -;; -;; to define `@phoo' as a command that causes TeX to typeset -;; the argument to `@phoo' in italics. -;; -;; Note that each definition applies to its own formatter: one for TeX, -;; the other for texinfo-format-buffer or texinfo-format-region. -;; -;; Here is another example: write -;; -;; @definfoenclose headword, , : -;; -;; near the beginning of the file, to define `@headword' as an Info -;; formatting command that inserts nothing before and a colon after the -;; argument to `@headword'. - -(put 'definfoenclose 'texinfo-format 'texinfo-define-info-enclosure) -(defun texinfo-define-info-enclosure () - (let* ((args (texinfo-format-parse-line-args)) - (command-name (nth 0 args)) - (beginning-delimiter (or (nth 1 args) "")) - (end-delimiter (or (nth 2 args) ""))) - (texinfo-discard-command) - (setq texinfo-enclosure-list - (cons - (list command-name - (list - beginning-delimiter - end-delimiter)) - texinfo-enclosure-list)))) - - -;;; @var, @code and the like - -(put 'var 'texinfo-format 'texinfo-format-var) -;; @sc a small caps font for TeX; formatted as `var' in Info -(put 'sc 'texinfo-format 'texinfo-format-var) -(defun texinfo-format-var () - (insert (upcase (texinfo-parse-arg-discard))) - (goto-char texinfo-command-start)) - -(put 'url 'texinfo-format 'texinfo-format-code) -(put 'cite 'texinfo-format 'texinfo-format-code) -(put 'code 'texinfo-format 'texinfo-format-code) -(put 'file 'texinfo-format 'texinfo-format-code) -(put 'samp 'texinfo-format 'texinfo-format-code) -(defun texinfo-format-code () - (insert "`" (texinfo-parse-arg-discard) "'") - (goto-char texinfo-command-start)) - -(put 'emph 'texinfo-format 'texinfo-format-emph) -(put 'strong 'texinfo-format 'texinfo-format-emph) -(defun texinfo-format-emph () - (insert "*" (texinfo-parse-arg-discard) "*") - (goto-char texinfo-command-start)) - -(put 'dfn 'texinfo-format 'texinfo-format-defn) -(put 'defn 'texinfo-format 'texinfo-format-defn) -(defun texinfo-format-defn () - (insert "\"" (texinfo-parse-arg-discard) "\"") - (goto-char texinfo-command-start)) - -(put 'email 'texinfo-format 'texinfo-format-key) -(put 'key 'texinfo-format 'texinfo-format-key) -;; I've decided not want to have angle brackets around these -- rms. -(defun texinfo-format-key () - (insert (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -(put 'bullet 'texinfo-format 'texinfo-format-bullet) -(defun texinfo-format-bullet () - "Insert an asterisk. -If used within a line, follow `@bullet' with braces." - (texinfo-optional-braces-discard) - (insert "*")) - - -;;; @kbd - -;; Inside of @example ... @end example and similar environments, -;; @kbd does nothing; but outside of such environments, it places -;; single quotation markes around its argument. - -(defvar texinfo-format-kbd-regexp - (concat - "^@" - "\\(" - "example\\|" - "smallexample\\|" - "lisp\\|" - "smalllisp" - "\\)") - "Regexp specifying environments in which @kbd does not put `...' - around argument.") - -(defvar texinfo-format-kbd-end-regexp - (concat - "^@end " - "\\(" - "example\\|" - "smallexample\\|" - "lisp\\|" - "smalllisp" - "\\)") - "Regexp specifying end of environments in which @kbd does not put `...' - around argument. (See `texinfo-format-kbd-regexp')") - -(put 'kbd 'texinfo-format 'texinfo-format-kbd) -(defun texinfo-format-kbd () - "Place single quote marks around arg, except in @example and similar." - ;; Search forward for @end example closer than an @example. - ;; Can stop search at nearest @node or texinfo-section-types-regexp - (let* ((stop - (save-excursion - (re-search-forward - (concat "^@node\\|\\(" texinfo-section-types-regexp "\\)") - nil - 'move-to-end) ; if necessary, return point at end of buffer - (point))) - (example-location - (save-excursion - (re-search-forward texinfo-format-kbd-regexp stop 'move-to-end) - (point))) - (end-example-location - (save-excursion - (re-search-forward texinfo-format-kbd-end-regexp stop 'move-to-end) - (point)))) - ;; If inside @example, @end example will be closer than @example - ;; or end of search i.e., end-example-location less than example-location - (if (>= end-example-location example-location) - ;; outside an @example or equivalent - (insert "`" (texinfo-parse-arg-discard) "'") - ;; else, in @example; do not surround with `...' - (insert (texinfo-parse-arg-discard))) - (goto-char texinfo-command-start))) - - -;;; @example, @lisp, @quotation, @display, @smalllisp, @smallexample - -(put 'display 'texinfo-format 'texinfo-format-example) -(put 'example 'texinfo-format 'texinfo-format-example) -(put 'lisp 'texinfo-format 'texinfo-format-example) -(put 'quotation 'texinfo-format 'texinfo-format-example) -(put 'smallexample 'texinfo-format 'texinfo-format-example) -(put 'smalllisp 'texinfo-format 'texinfo-format-example) -(defun texinfo-format-example () - (texinfo-push-stack 'example nil) - (setq fill-column (- fill-column 5)) - (texinfo-discard-line)) - -(put 'example 'texinfo-end 'texinfo-end-example) -(put 'display 'texinfo-end 'texinfo-end-example) -(put 'lisp 'texinfo-end 'texinfo-end-example) -(put 'quotation 'texinfo-end 'texinfo-end-example) -(put 'smallexample 'texinfo-end 'texinfo-end-example) -(put 'smalllisp 'texinfo-end 'texinfo-end-example) -(defun texinfo-end-example () - (setq fill-column (+ fill-column 5)) - (texinfo-discard-command) - (let ((stacktop - (texinfo-pop-stack 'example))) - (texinfo-do-itemize (nth 1 stacktop)))) - -(put 'exdent 'texinfo-format 'texinfo-format-exdent) -(defun texinfo-format-exdent () - (texinfo-discard-command) - (delete-region (point) - (progn - (skip-chars-forward " ") - (point))) - (insert ?\b) - ;; Cancel out the deletion that texinfo-do-itemize - ;; is going to do at the end of this line. - (save-excursion - (end-of-line) - (insert "\n "))) - - -;;; @cartouche - -;; The @cartouche command is a noop in Info; in a printed manual, -;; it makes a box with rounded corners. - -(put 'cartouche 'texinfo-format 'texinfo-discard-line) -(put 'cartouche 'texinfo-end 'texinfo-discard-command) - - -;;; @flushleft and @format - -;; The @flushleft command left justifies every line but leaves the -;; right end ragged. As far as Info is concerned, @flushleft is a -;; `do-nothing' command - -;; The @format command is similar to @example except that it does not -;; indent; this means that in Info, @format is similar to @flushleft. - -(put 'format 'texinfo-format 'texinfo-format-flushleft) -(put 'flushleft 'texinfo-format 'texinfo-format-flushleft) -(defun texinfo-format-flushleft () - (texinfo-discard-line)) - -(put 'format 'texinfo-end 'texinfo-end-flushleft) -(put 'flushleft 'texinfo-end 'texinfo-end-flushleft) -(defun texinfo-end-flushleft () - (texinfo-discard-command)) - - -;;; @flushright - -;; The @flushright command right justifies every line but leaves the -;; left end ragged. Spaces and tabs at the right ends of lines are -;; removed so that visible text lines up on the right side. - -(put 'flushright 'texinfo-format 'texinfo-format-flushright) -(defun texinfo-format-flushright () - (texinfo-push-stack 'flushright nil) - (texinfo-discard-line)) - -(put 'flushright 'texinfo-end 'texinfo-end-flushright) -(defun texinfo-end-flushright () - (texinfo-discard-command) - - (let ((stacktop - (texinfo-pop-stack 'flushright))) - - (texinfo-do-flushright (nth 1 stacktop)))) - -(defun texinfo-do-flushright (from) - (save-excursion - (while (progn (forward-line -1) - (>= (point) from)) - - (beginning-of-line) - (insert - (make-string - (- fill-column - (save-excursion - (end-of-line) - (skip-chars-backward " \t") - (delete-region (point) (progn (end-of-line) (point))) - (current-column))) - ? ))))) - - -;;; @ctrl, @TeX, @copyright, @minus, @dots, @enddots, @pounds - -(put 'ctrl 'texinfo-format 'texinfo-format-ctrl) -(defun texinfo-format-ctrl () - (let ((str (texinfo-parse-arg-discard))) - (insert (logand 31 (aref str 0))))) - -(put 'TeX 'texinfo-format 'texinfo-format-TeX) -(defun texinfo-format-TeX () - (texinfo-parse-arg-discard) - (insert "TeX")) - -(put 'copyright 'texinfo-format 'texinfo-format-copyright) -(defun texinfo-format-copyright () - (texinfo-parse-arg-discard) - (insert "(C)")) - -(put 'minus 'texinfo-format 'texinfo-format-minus) -(defun texinfo-format-minus () - "Insert a minus sign. -If used within a line, follow `@minus' with braces." - (texinfo-optional-braces-discard) - (insert "-")) - -(put 'dots 'texinfo-format 'texinfo-format-dots) -(defun texinfo-format-dots () - (texinfo-parse-arg-discard) - (insert "...")) - -(put 'enddots 'texinfo-format 'texinfo-format-enddots) -(defun texinfo-format-enddots () - (texinfo-parse-arg-discard) - (insert "....")) - -(put 'pounds 'texinfo-format 'texinfo-format-pounds) -(defun texinfo-format-pounds () - (texinfo-parse-arg-discard) - (insert "#")) - - -;;; Refilling and indenting: @refill, @paragraphindent, @noindent - -;;; Indent only those paragraphs that are refilled as a result of an -;;; @refill command. - -;; * If the value is `asis', do not change the existing indentation at -;; the starts of paragraphs. - -;; * If the value zero, delete any existing indentation. - -;; * If the value is greater than zero, indent each paragraph by that -;; number of spaces. - -;;; But do not refill paragraphs with an @refill command that are -;;; preceded by @noindent or are part of a table, list, or deffn. - -(defvar texinfo-paragraph-indent "asis" - "Number of spaces for @refill to indent a paragraph; else to leave as is.") - -(put 'paragraphindent 'texinfo-format 'texinfo-paragraphindent) - -(defun texinfo-paragraphindent () - "Specify the number of spaces for @refill to indent a paragraph. -Default is to leave the number of spaces as is." - (let ((arg (texinfo-parse-arg-discard))) - (if (string= "asis" arg) - (setq texinfo-paragraph-indent "asis") - (setq texinfo-paragraph-indent (string-to-int arg))))) - -(put 'refill 'texinfo-format 'texinfo-format-refill) -(defun texinfo-format-refill () - "Refill paragraph. Also, indent first line as set by @paragraphindent. -Default is to leave paragraph indentation as is." - (texinfo-discard-command) - (forward-paragraph -1) - (if (looking-at "[ \t\n]*$") (forward-line 1)) - ;; Do not indent if an entry in a list, table, or deffn, - ;; or if paragraph is preceded by @noindent. - ;; Otherwise, indent - (cond - ;; delete a @noindent line and do not indent paragraph - ((save-excursion (forward-line -1) - (looking-at "^@noindent")) - (forward-line -1) - (delete-region (point) (progn (forward-line 1) (point)))) - ;; do nothing if "asis" - ((equal texinfo-paragraph-indent "asis")) - ;; do no indenting in list, etc. - ((> texinfo-stack-depth 0)) - ;; otherwise delete existing whitespace and indent - (t - (delete-region (point) (progn (skip-chars-forward " \t") (point))) - (insert (make-string texinfo-paragraph-indent ? )))) - (forward-paragraph 1) - (forward-line -1) - (end-of-line) - ;; Do not fill a section title line with asterisks, hyphens, etc. that - ;; are used to underline it. This could occur if the line following - ;; the underlining is not an index entry and has text within it. - (let* ((previous-paragraph-separate paragraph-separate) - (paragraph-separate - (concat paragraph-separate "\\|[-=.]+\\|\\*\\*+")) - (previous-paragraph-start paragraph-start) - (paragraph-start - (concat paragraph-start "\\|[-=.]+\\|\\*\\*+"))) - (unwind-protect - (fill-paragraph nil) - (setq paragraph-separate previous-paragraph-separate) - (setq paragraph-start previous-paragraph-start)))) - -(put 'noindent 'texinfo-format 'texinfo-noindent) -(defun texinfo-noindent () - (save-excursion - (forward-paragraph 1) - (if (search-backward "@refill" - (save-excursion (forward-line -1) (point)) t) - () ; leave @noindent command so @refill command knows not to indent - ;; else - (texinfo-discard-line)))) - - -;;; Index generation - -(put 'vindex 'texinfo-format 'texinfo-format-vindex) -(defun texinfo-format-vindex () - (texinfo-index 'texinfo-vindex)) - -(put 'cindex 'texinfo-format 'texinfo-format-cindex) -(defun texinfo-format-cindex () - (texinfo-index 'texinfo-cindex)) - -(put 'findex 'texinfo-format 'texinfo-format-findex) -(defun texinfo-format-findex () - (texinfo-index 'texinfo-findex)) - -(put 'pindex 'texinfo-format 'texinfo-format-pindex) -(defun texinfo-format-pindex () - (texinfo-index 'texinfo-pindex)) - -(put 'tindex 'texinfo-format 'texinfo-format-tindex) -(defun texinfo-format-tindex () - (texinfo-index 'texinfo-tindex)) - -(put 'kindex 'texinfo-format 'texinfo-format-kindex) -(defun texinfo-format-kindex () - (texinfo-index 'texinfo-kindex)) - -(defun texinfo-index (indexvar) - (let ((arg (texinfo-parse-expanded-arg))) - (texinfo-discard-command) - (set indexvar - (cons (list arg - texinfo-last-node - ;; Region formatting may not provide last node position. - (if texinfo-last-node-pos - (1+ (count-lines texinfo-last-node-pos (point))) - 1)) - (symbol-value indexvar))))) - -(defconst texinfo-indexvar-alist - '(("cp" . texinfo-cindex) - ("fn" . texinfo-findex) - ("vr" . texinfo-vindex) - ("tp" . texinfo-tindex) - ("pg" . texinfo-pindex) - ("ky" . texinfo-kindex))) - - -;;; @defindex @defcodeindex -(put 'defindex 'texinfo-format 'texinfo-format-defindex) -(put 'defcodeindex 'texinfo-format 'texinfo-format-defindex) - -(defun texinfo-format-defindex () - (let* ((index-name (texinfo-parse-arg-discard)) ; eg: `aa' - (indexing-command (intern (concat index-name "index"))) - (index-formatting-command ; eg: `texinfo-format-aaindex' - (intern (concat "texinfo-format-" index-name "index"))) - (index-alist-name ; eg: `texinfo-aaindex' - (intern (concat "texinfo-" index-name "index")))) - - (set index-alist-name nil) - - (put indexing-command ; eg, aaindex - 'texinfo-format - index-formatting-command) ; eg, texinfo-format-aaindex - - ;; eg: "aa" . texinfo-aaindex - (or (assoc index-name texinfo-indexvar-alist) - (setq texinfo-indexvar-alist - (cons - (cons index-name - index-alist-name) - texinfo-indexvar-alist))) - - (fset index-formatting-command - (list 'lambda 'nil - (list 'texinfo-index - (list 'quote index-alist-name)))))) - - -;;; @synindex @syncodeindex - -(put 'synindex 'texinfo-format 'texinfo-format-synindex) -(put 'syncodeindex 'texinfo-format 'texinfo-format-synindex) - -(defun texinfo-format-synindex () - (let* ((args (texinfo-parse-arg-discard)) - (second (cdr (read-from-string args))) - (joiner (symbol-name (car (read-from-string args)))) - (joined (symbol-name (car (read-from-string args second))))) - - (if (assoc joiner texinfo-short-index-cmds-alist) - (put - (cdr (assoc joiner texinfo-short-index-cmds-alist)) - 'texinfo-format - (or (cdr (assoc joined texinfo-short-index-format-cmds-alist)) - (intern (concat "texinfo-format-" joined "index")))) - (put - (intern (concat joiner "index")) - 'texinfo-format - (or (cdr(assoc joined texinfo-short-index-format-cmds-alist)) - (intern (concat "texinfo-format-" joined "index"))))))) - -(defconst texinfo-short-index-cmds-alist - '(("cp" . cindex) - ("fn" . findex) - ("vr" . vindex) - ("tp" . tindex) - ("pg" . pindex) - ("ky" . kindex))) - -(defconst texinfo-short-index-format-cmds-alist - '(("cp" . texinfo-format-cindex) - ("fn" . texinfo-format-findex) - ("vr" . texinfo-format-vindex) - ("tp" . texinfo-format-tindex) - ("pg" . texinfo-format-pindex) - ("ky" . texinfo-format-kindex))) - - -;;; Sort and index (for VMS) - -;; Sort an index which is in the current buffer between START and END. -;; Used on VMS, where the `sort' utility is not available. -(defun texinfo-sort-region (start end) - (require 'sort) - (save-restriction - (narrow-to-region start end) - (sort-subr nil 'forward-line 'end-of-line 'texinfo-sort-startkeyfun))) - -;; Subroutine for sorting an index. -;; At start of a line, return a string to sort the line under. -(defun texinfo-sort-startkeyfun () - (let ((line - (buffer-substring (point) (save-excursion (end-of-line) (point))))) - ;; Canonicalize whitespace and eliminate funny chars. - (while (string-match "[ \t][ \t]+\\|[^a-z0-9 ]+" line) - (setq line (concat (substring line 0 (match-beginning 0)) - " " - (substring line (match-end 0) (length line))))) - line)) - - -;;; @printindex - -(put 'printindex 'texinfo-format 'texinfo-format-printindex) - -(defun texinfo-format-printindex () - (let ((indexelts (symbol-value - (cdr (assoc (texinfo-parse-arg-discard) - texinfo-indexvar-alist)))) - opoint) - (insert "\n* Menu:\n\n") - (setq opoint (point)) - (texinfo-print-index nil indexelts) - - (if (memq system-type '(vax-vms windows-nt ms-dos)) - (texinfo-sort-region opoint (point)) - (shell-command-on-region opoint (point) "sort -fd" 1)))) - -(defun texinfo-print-index (file indexelts) - (while indexelts - (if (stringp (car (car indexelts))) - (progn - (insert "* " (car (car indexelts)) ": " ) - (indent-to 32) - (insert - (if file (concat "(" file ")") "") - (nth 1 (car indexelts)) ".") - (indent-to 54) - (insert - (if (nth 2 (car indexelts)) - (format " %d." (nth 2 (car indexelts))) - "") - "\n")) - ;; index entries from @include'd file - (texinfo-print-index (nth 1 (car indexelts)) - (nth 2 (car indexelts)))) - (setq indexelts (cdr indexelts)))) - - -;;; Glyphs: @equiv, @error, etc - -;; @equiv to show that two expressions are equivalent -;; @error to show an error message -;; @expansion to show what a macro expands to -;; @point to show the location of point in an example -;; @print to show what an evaluated expression prints -;; @result to indicate the value returned by an expression - -(put 'equiv 'texinfo-format 'texinfo-format-equiv) -(defun texinfo-format-equiv () - (texinfo-parse-arg-discard) - (insert "==")) - -(put 'error 'texinfo-format 'texinfo-format-error) -(defun texinfo-format-error () - (texinfo-parse-arg-discard) - (insert "error-->")) - -(put 'expansion 'texinfo-format 'texinfo-format-expansion) -(defun texinfo-format-expansion () - (texinfo-parse-arg-discard) - (insert "==>")) - -(put 'point 'texinfo-format 'texinfo-format-point) -(defun texinfo-format-point () - (texinfo-parse-arg-discard) - (insert "-!-")) - -(put 'print 'texinfo-format 'texinfo-format-print) -(defun texinfo-format-print () - (texinfo-parse-arg-discard) - (insert "-|")) - -(put 'result 'texinfo-format 'texinfo-format-result) -(defun texinfo-format-result () - (texinfo-parse-arg-discard) - (insert "=>")) - - -;;; Accent commands - -;; Info presumes a plain ASCII output, so the accented characters do -;; not look as they would if typeset, or output with a different -;; character set. - -;; See the `texinfo-accent-commands' variable -;; in the section for `texinfo-append-refill'. -;; Also, see the defun for `texinfo-format-scan' -;; for single-character accent commands. - -;; Command Info output Name - -;; These do not have braces: -;; @^ ==> ^ circumflex accent -;; @` ==> ` grave accent -;; @' ==> ' acute accent -;; @" ==> " umlaut accent -;; @= ==> = overbar accent -;; @~ ==> ~ tilde accent - -;; These have braces, but take no argument: -;; @OE{} ==> OE French-OE-ligature -;; @oe{} ==> oe -;; @AA{} ==> AA Scandinavian-A-with-circle -;; @aa{} ==> aa -;; @AE{} ==> AE Latin-Scandinavian-AE -;; @ae{} ==> ae -;; @ss{} ==> ss German-sharp-S - -;; @questiondown{} ==> ? upside-down-question-mark -;; @exclamdown{} ==> ! upside-down-exclamation-mark -;; @L{} ==> L/ Polish suppressed-L (Lslash) -;; @l{} ==> l/ Polish suppressed-L (Lslash) (lower case) -;; @O{} ==> O/ Scandinavian O-with-slash -;; @o{} ==> o/ Scandinavian O-with-slash (lower case) - -;; These have braces, and take an argument: -;; @,{c} ==> c, cedilla accent -;; @dotaccent{o} ==> .o overdot-accent -;; @ubaraccent{o} ==> _o underbar-accent -;; @udotaccent{o} ==> o-. underdot-accent -;; @H{o} ==> ""o long Hungarian umlaut -;; @ringaccent{o} ==> *o ring accent -;; @tieaccent{oo} ==> [oo tie after accent -;; @u{o} ==> (o breve accent -;; @v{o} ==> <o hacek accent -;; @dotless{i} ==> i dotless i and dotless j - -;; ========== - -;; Note: The defun texinfo-format-scan -;; looks at "[@{}^'`\",=~ *?!-]" -;; In the case of @*, a line break is inserted; -;; in the other cases, the characters are simply quoted and the @ is deleted. -;; Thus, `texinfo-format-scan' handles the following -;; single-character accent commands: @^ @` @' @" @, @- @= @~ - -;; @^ ==> ^ circumflex accent -;; (put '^ 'texinfo-format 'texinfo-format-circumflex-accent) -;; (defun texinfo-format-circumflex-accent () -;; (texinfo-discard-command) -;; (insert "^")) -;; -;; @` ==> ` grave accent -;; (put '\` 'texinfo-format 'texinfo-format-grave-accent) -;; (defun texinfo-format-grave-accent () -;; (texinfo-discard-command) -;; (insert "\`")) -;; -;; @' ==> ' acute accent -;; (put '\' 'texinfo-format 'texinfo-format-acute-accent) -;; (defun texinfo-format-acute-accent () -;; (texinfo-discard-command) -;; (insert "'")) -;; -;; @" ==> " umlaut accent -;; (put '\" 'texinfo-format 'texinfo-format-umlaut-accent) -;; (defun texinfo-format-umlaut-accent () -;; (texinfo-discard-command) -;; (insert "\"")) -;; -;; @= ==> = overbar accent -;; (put '= 'texinfo-format 'texinfo-format-overbar-accent) -;; (defun texinfo-format-overbar-accent () -;; (texinfo-discard-command) -;; (insert "=")) -;; -;; @~ ==> ~ tilde accent -;; (put '~ 'texinfo-format 'texinfo-format-tilde-accent) -;; (defun texinfo-format-tilde-accent () -;; (texinfo-discard-command) -;; (insert "~")) - -;; @OE{} ==> OE French-OE-ligature -(put 'OE 'texinfo-format 'texinfo-format-French-OE-ligature) -(defun texinfo-format-French-OE-ligature () - (insert "OE" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @oe{} ==> oe -(put 'oe 'texinfo-format 'texinfo-format-French-oe-ligature) -(defun texinfo-format-French-oe-ligature () ; lower case - (insert "oe" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @AA{} ==> AA Scandinavian-A-with-circle -(put 'AA 'texinfo-format 'texinfo-format-Scandinavian-A-with-circle) -(defun texinfo-format-Scandinavian-A-with-circle () - (insert "AA" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @aa{} ==> aa -(put 'aa 'texinfo-format 'texinfo-format-Scandinavian-a-with-circle) -(defun texinfo-format-Scandinavian-a-with-circle () ; lower case - (insert "aa" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @AE{} ==> AE Latin-Scandinavian-AE -(put 'AE 'texinfo-format 'texinfo-format-Latin-Scandinavian-AE) -(defun texinfo-format-Latin-Scandinavian-AE () - (insert "AE" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @ae{} ==> ae -(put 'ae 'texinfo-format 'texinfo-format-Latin-Scandinavian-ae) -(defun texinfo-format-Latin-Scandinavian-ae () ; lower case - (insert "ae" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @ss{} ==> ss German-sharp-S -(put 'ss 'texinfo-format 'texinfo-format-German-sharp-S) -(defun texinfo-format-German-sharp-S () - (insert "ss" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @questiondown{} ==> ? upside-down-question-mark -(put 'questiondown 'texinfo-format 'texinfo-format-upside-down-question-mark) -(defun texinfo-format-upside-down-question-mark () - (insert "?" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @exclamdown{} ==> ! upside-down-exclamation-mark -(put 'exclamdown 'texinfo-format 'texinfo-format-upside-down-exclamation-mark) -(defun texinfo-format-upside-down-exclamation-mark () - (insert "!" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @L{} ==> L/ Polish suppressed-L (Lslash) -(put 'L 'texinfo-format 'texinfo-format-Polish-suppressed-L) -(defun texinfo-format-Polish-suppressed-L () - (insert (texinfo-parse-arg-discard) "/L") - (goto-char texinfo-command-start)) - -;; @l{} ==> l/ Polish suppressed-L (Lslash) (lower case) -(put 'l 'texinfo-format 'texinfo-format-Polish-suppressed-l-lower-case) -(defun texinfo-format-Polish-suppressed-l-lower-case () - (insert (texinfo-parse-arg-discard) "/l") - (goto-char texinfo-command-start)) - - -;; @O{} ==> O/ Scandinavian O-with-slash -(put 'O 'texinfo-format 'texinfo-format-Scandinavian-O-with-slash) -(defun texinfo-format-Scandinavian-O-with-slash () - (insert (texinfo-parse-arg-discard) "O/") - (goto-char texinfo-command-start)) - -;; @o{} ==> o/ Scandinavian O-with-slash (lower case) -(put 'o 'texinfo-format 'texinfo-format-Scandinavian-o-with-slash-lower-case) -(defun texinfo-format-Scandinavian-o-with-slash-lower-case () - (insert (texinfo-parse-arg-discard) "o/") - (goto-char texinfo-command-start)) - -;; Take arguments - -;; @,{c} ==> c, cedilla accent -(put ', 'texinfo-format 'texinfo-format-cedilla-accent) -(defun texinfo-format-cedilla-accent () - (insert (texinfo-parse-arg-discard) ",") - (goto-char texinfo-command-start)) - - -;; @dotaccent{o} ==> .o overdot-accent -(put 'dotaccent 'texinfo-format 'texinfo-format-overdot-accent) -(defun texinfo-format-overdot-accent () - (insert "." (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @ubaraccent{o} ==> _o underbar-accent -(put 'ubaraccent 'texinfo-format 'texinfo-format-underbar-accent) -(defun texinfo-format-underbar-accent () - (insert "_" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @udotaccent{o} ==> o-. underdot-accent -(put 'udotaccent 'texinfo-format 'texinfo-format-underdot-accent) -(defun texinfo-format-underdot-accent () - (insert (texinfo-parse-arg-discard) "-.") - (goto-char texinfo-command-start)) - -;; @H{o} ==> ""o long Hungarian umlaut -(put 'H 'texinfo-format 'texinfo-format-long-Hungarian-umlaut) -(defun texinfo-format-long-Hungarian-umlaut () - (insert "\"\"" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @ringaccent{o} ==> *o ring accent -(put 'ringaccent 'texinfo-format 'texinfo-format-ring-accent) -(defun texinfo-format-ring-accent () - (insert "*" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @tieaccent{oo} ==> [oo tie after accent -(put 'tieaccent 'texinfo-format 'texinfo-format-tie-after-accent) -(defun texinfo-format-tie-after-accent () - (insert "[" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - - -;; @u{o} ==> (o breve accent -(put 'u 'texinfo-format 'texinfo-format-breve-accent) -(defun texinfo-format-breve-accent () - (insert "(" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @v{o} ==> <o hacek accent -(put 'v 'texinfo-format 'texinfo-format-hacek-accent) -(defun texinfo-format-hacek-accent () - (insert "<" (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - - -;; @dotless{i} ==> i dotless i and dotless j -(put 'dotless 'texinfo-format 'texinfo-format-dotless) -(defun texinfo-format-dotless () - (insert (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - - -;;; Definition formatting: @deffn, @defun, etc - -;; What definition formatting produces: -;; -;; @deffn category name args... -;; In Info, `Category: name ARGS' -;; In index: name: node. line#. -;; -;; @defvr category name -;; In Info, `Category: name' -;; In index: name: node. line#. -;; -;; @deftp category name attributes... -;; `category name attributes...' Note: @deftp args in lower case. -;; In index: name: node. line#. -;; -;; Specialized function-like or variable-like entity: -;; -;; @defun, @defmac, @defspec, @defvar, @defopt -;; -;; @defun name args In Info, `Function: name ARGS' -;; @defmac name args In Info, `Macro: name ARGS' -;; @defvar name In Info, `Variable: name' -;; etc. -;; In index: name: node. line#. -;; -;; Generalized typed-function-like or typed-variable-like entity: -;; @deftypefn category data-type name args... -;; In Info, `Category: data-type name args...' -;; @deftypevr category data-type name -;; In Info, `Category: data-type name' -;; In index: name: node. line#. -;; -;; Specialized typed-function-like or typed-variable-like entity: -;; @deftypefun data-type name args... -;; In Info, `Function: data-type name ARGS' -;; In index: name: node. line#. -;; -;; @deftypevar data-type name -;; In Info, `Variable: data-type name' -;; In index: name: node. line#. but include args after name!? -;; -;; Generalized object oriented entity: -;; @defop category class name args... -;; In Info, `Category on class: name ARG' -;; In index: name on class: node. line#. -;; -;; @defcv category class name -;; In Info, `Category of class: name' -;; In index: name of class: node. line#. -;; -;; Specialized object oriented entity: -;; @defmethod class name args... -;; In Info, `Method on class: name ARGS' -;; In index: name on class: node. line#. -;; -;; @defivar class name -;; In Info, `Instance variable of class: name' -;; In index: name of class: node. line#. - - -;;; The definition formatting functions - -(defun texinfo-format-defun () - (texinfo-push-stack 'defun nil) - (setq fill-column (- fill-column 5)) - (texinfo-format-defun-1 t)) - -(defun texinfo-end-defun () - (setq fill-column (+ fill-column 5)) - (texinfo-discard-command) - (let ((start (nth 1 (texinfo-pop-stack 'defun)))) - (texinfo-do-itemize start) - ;; Delete extra newline inserted after header. - (save-excursion - (goto-char start) - (delete-char -1)))) - -(defun texinfo-format-defunx () - (texinfo-format-defun-1 nil)) - -(defun texinfo-format-defun-1 (first-p) - (let ((parse-args (texinfo-format-parse-defun-args)) - (texinfo-defun-type (get texinfo-command-name 'texinfo-defun-type))) - (texinfo-discard-command) - ;; Delete extra newline inserted after previous header line. - (if (not first-p) - (delete-char -1)) - (funcall - (get texinfo-command-name 'texinfo-deffn-formatting-property) parse-args) - ;; Insert extra newline so that paragraph filling does not mess - ;; with header line. - (insert "\n\n") - (rplaca (cdr (cdr (car texinfo-stack))) (point)) - (funcall - (get texinfo-command-name 'texinfo-defun-indexing-property) parse-args))) - -;;; Formatting the first line of a definition - -;; @deffn, @defvr, @deftp -(put 'deffn 'texinfo-deffn-formatting-property 'texinfo-format-deffn) -(put 'deffnx 'texinfo-deffn-formatting-property 'texinfo-format-deffn) -(put 'defvr 'texinfo-deffn-formatting-property 'texinfo-format-deffn) -(put 'defvrx 'texinfo-deffn-formatting-property 'texinfo-format-deffn) -(put 'deftp 'texinfo-deffn-formatting-property 'texinfo-format-deffn) -(put 'deftpx 'texinfo-deffn-formatting-property 'texinfo-format-deffn) -(defun texinfo-format-deffn (parsed-args) - ;; Generalized function-like, variable-like, or generic data-type entity: - ;; @deffn category name args... - ;; In Info, `Category: name ARGS' - ;; @deftp category name attributes... - ;; `category name attributes...' Note: @deftp args in lower case. - (let ((category (car parsed-args)) - (name (car (cdr parsed-args))) - (args (cdr (cdr parsed-args)))) - (insert " -- " category ": " name) - (while args - (insert " " - (if (or (= ?& (aref (car args) 0)) - (eq (eval (car texinfo-defun-type)) 'deftp-type)) - (car args) - (upcase (car args)))) - (setq args (cdr args))))) - -;; @defun, @defmac, @defspec, @defvar, @defopt: Specialized, simple -(put 'defun 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(put 'defunx 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(put 'defmac 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(put 'defmacx 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(put 'defspec 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(put 'defspecx 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(put 'defvar 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(put 'defvarx 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(put 'defopt 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(put 'defoptx 'texinfo-deffn-formatting-property - 'texinfo-format-specialized-defun) -(defun texinfo-format-specialized-defun (parsed-args) - ;; Specialized function-like or variable-like entity: - ;; @defun name args In Info, `Function: Name ARGS' - ;; @defmac name args In Info, `Macro: Name ARGS' - ;; @defvar name In Info, `Variable: Name' - ;; Use cdr of texinfo-defun-type to determine category: - (let ((category (car (cdr texinfo-defun-type))) - (name (car parsed-args)) - (args (cdr parsed-args))) - (insert " -- " category ": " name) - (while args - (insert " " - (if (= ?& (aref (car args) 0)) - (car args) - (upcase (car args)))) - (setq args (cdr args))))) - -;; @deftypefn, @deftypevr: Generalized typed -(put 'deftypefn 'texinfo-deffn-formatting-property 'texinfo-format-deftypefn) -(put 'deftypefnx 'texinfo-deffn-formatting-property 'texinfo-format-deftypefn) -(put 'deftypevr 'texinfo-deffn-formatting-property 'texinfo-format-deftypefn) -(put 'deftypevrx 'texinfo-deffn-formatting-property 'texinfo-format-deftypefn) -(defun texinfo-format-deftypefn (parsed-args) - ;; Generalized typed-function-like or typed-variable-like entity: - ;; @deftypefn category data-type name args... - ;; In Info, `Category: data-type name args...' - ;; @deftypevr category data-type name - ;; In Info, `Category: data-type name' - ;; Note: args in lower case, unless modified in command line. - (let ((category (car parsed-args)) - (data-type (car (cdr parsed-args))) - (name (car (cdr (cdr parsed-args)))) - (args (cdr (cdr (cdr parsed-args))))) - (insert " -- " category ": " data-type " " name) - (while args - (insert " " (car args)) - (setq args (cdr args))))) - -;; @deftypefun, @deftypevar: Specialized typed -(put 'deftypefun 'texinfo-deffn-formatting-property 'texinfo-format-deftypefun) -(put 'deftypefunx 'texinfo-deffn-formatting-property - 'texinfo-format-deftypefun) -(put 'deftypevar 'texinfo-deffn-formatting-property 'texinfo-format-deftypefun) -(put 'deftypevarx 'texinfo-deffn-formatting-property - 'texinfo-format-deftypefun) -(defun texinfo-format-deftypefun (parsed-args) - ;; Specialized typed-function-like or typed-variable-like entity: - ;; @deftypefun data-type name args... - ;; In Info, `Function: data-type name ARGS' - ;; @deftypevar data-type name - ;; In Info, `Variable: data-type name' - ;; Note: args in lower case, unless modified in command line. - ;; Use cdr of texinfo-defun-type to determine category: - (let ((category (car (cdr texinfo-defun-type))) - (data-type (car parsed-args)) - (name (car (cdr parsed-args))) - (args (cdr (cdr parsed-args)))) - (insert " -- " category ": " data-type " " name) - (while args - (insert " " (car args)) - (setq args (cdr args))))) - -;; @defop: Generalized object-oriented -(put 'defop 'texinfo-deffn-formatting-property 'texinfo-format-defop) -(put 'defopx 'texinfo-deffn-formatting-property 'texinfo-format-defop) -(defun texinfo-format-defop (parsed-args) - ;; Generalized object oriented entity: - ;; @defop category class name args... - ;; In Info, `Category on class: name ARG' - ;; Note: args in upper case; use of `on' - (let ((category (car parsed-args)) - (class (car (cdr parsed-args))) - (name (car (cdr (cdr parsed-args)))) - (args (cdr (cdr (cdr parsed-args))))) - (insert " -- " category " on " class ": " name) - (while args - (insert " " (upcase (car args))) - (setq args (cdr args))))) - -;; @defcv: Generalized object-oriented -(put 'defcv 'texinfo-deffn-formatting-property 'texinfo-format-defcv) -(put 'defcvx 'texinfo-deffn-formatting-property 'texinfo-format-defcv) -(defun texinfo-format-defcv (parsed-args) - ;; Generalized object oriented entity: - ;; @defcv category class name - ;; In Info, `Category of class: name' - ;; Note: args in upper case; use of `of' - (let ((category (car parsed-args)) - (class (car (cdr parsed-args))) - (name (car (cdr (cdr parsed-args)))) - (args (cdr (cdr (cdr parsed-args))))) - (insert " -- " category " of " class ": " name) - (while args - (insert " " (upcase (car args))) - (setq args (cdr args))))) - -;; @defmethod: Specialized object-oriented -(put 'defmethod 'texinfo-deffn-formatting-property 'texinfo-format-defmethod) -(put 'defmethodx 'texinfo-deffn-formatting-property 'texinfo-format-defmethod) -(defun texinfo-format-defmethod (parsed-args) - ;; Specialized object oriented entity: - ;; @defmethod class name args... - ;; In Info, `Method on class: name ARGS' - ;; Note: args in upper case; use of `on' - ;; Use cdr of texinfo-defun-type to determine category: - (let ((category (car (cdr texinfo-defun-type))) - (class (car parsed-args)) - (name (car (cdr parsed-args))) - (args (cdr (cdr parsed-args)))) - (insert " -- " category " on " class ": " name) - (while args - (insert " " (upcase (car args))) - (setq args (cdr args))))) - -;; @defivar: Specialized object-oriented -(put 'defivar 'texinfo-deffn-formatting-property 'texinfo-format-defivar) -(put 'defivarx 'texinfo-deffn-formatting-property 'texinfo-format-defivar) -(defun texinfo-format-defivar (parsed-args) - ;; Specialized object oriented entity: - ;; @defivar class name - ;; In Info, `Instance variable of class: name' - ;; Note: args in upper case; use of `of' - ;; Use cdr of texinfo-defun-type to determine category: - (let ((category (car (cdr texinfo-defun-type))) - (class (car parsed-args)) - (name (car (cdr parsed-args))) - (args (cdr (cdr parsed-args)))) - (insert " -- " category " of " class ": " name) - (while args - (insert " " (upcase (car args))) - (setq args (cdr args))))) - - -;;; Indexing for definitions - -;; An index entry has three parts: the `entry proper', the node name, and the -;; line number. Depending on the which command is used, the entry is -;; formatted differently: -;; -;; @defun, -;; @defmac, -;; @defspec, -;; @defvar, -;; @defopt all use their 1st argument as the entry-proper -;; -;; @deffn, -;; @defvr, -;; @deftp -;; @deftypefun -;; @deftypevar all use their 2nd argument as the entry-proper -;; -;; @deftypefn, -;; @deftypevr both use their 3rd argument as the entry-proper -;; -;; @defmethod uses its 2nd and 1st arguments as an entry-proper -;; formatted: NAME on CLASS - -;; @defop uses its 3rd and 2nd arguments as an entry-proper -;; formatted: NAME on CLASS -;; -;; @defivar uses its 2nd and 1st arguments as an entry-proper -;; formatted: NAME of CLASS -;; -;; @defcv uses its 3rd and 2nd argument as an entry-proper -;; formatted: NAME of CLASS - -(put 'defun 'texinfo-defun-indexing-property 'texinfo-index-defun) -(put 'defunx 'texinfo-defun-indexing-property 'texinfo-index-defun) -(put 'defmac 'texinfo-defun-indexing-property 'texinfo-index-defun) -(put 'defmacx 'texinfo-defun-indexing-property 'texinfo-index-defun) -(put 'defspec 'texinfo-defun-indexing-property 'texinfo-index-defun) -(put 'defspecx 'texinfo-defun-indexing-property 'texinfo-index-defun) -(put 'defvar 'texinfo-defun-indexing-property 'texinfo-index-defun) -(put 'defvarx 'texinfo-defun-indexing-property 'texinfo-index-defun) -(put 'defopt 'texinfo-defun-indexing-property 'texinfo-index-defun) -(put 'defoptx 'texinfo-defun-indexing-property 'texinfo-index-defun) -(defun texinfo-index-defun (parsed-args) - ;; use 1st parsed-arg as entry-proper - ;; `index-list' will be texinfo-findex or the like - (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) - (set index-list - (cons - ;; Three elements: entry-proper, node-name, line-number - (list - (car parsed-args) - texinfo-last-node - ;; Region formatting may not provide last node position. - (if texinfo-last-node-pos - (1+ (count-lines texinfo-last-node-pos (point))) - 1)) - (symbol-value index-list))))) - -(put 'deffn 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(put 'deffnx 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(put 'defvr 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(put 'defvrx 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(put 'deftp 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(put 'deftpx 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(put 'deftypefun 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(put 'deftypefunx 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(put 'deftypevar 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(put 'deftypevarx 'texinfo-defun-indexing-property 'texinfo-index-deffn) -(defun texinfo-index-deffn (parsed-args) - ;; use 2nd parsed-arg as entry-proper - ;; `index-list' will be texinfo-findex or the like - (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) - (set index-list - (cons - ;; Three elements: entry-proper, node-name, line-number - (list - (car (cdr parsed-args)) - texinfo-last-node - ;; Region formatting may not provide last node position. - (if texinfo-last-node-pos - (1+ (count-lines texinfo-last-node-pos (point))) - 1)) - (symbol-value index-list))))) - -(put 'deftypefn 'texinfo-defun-indexing-property 'texinfo-index-deftypefn) -(put 'deftypefnx 'texinfo-defun-indexing-property 'texinfo-index-deftypefn) -(put 'deftypevr 'texinfo-defun-indexing-property 'texinfo-index-deftypefn) -(put 'deftypevrx 'texinfo-defun-indexing-property 'texinfo-index-deftypefn) -(defun texinfo-index-deftypefn (parsed-args) - ;; use 3rd parsed-arg as entry-proper - ;; `index-list' will be texinfo-findex or the like - (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) - (set index-list - (cons - ;; Three elements: entry-proper, node-name, line-number - (list - (car (cdr (cdr parsed-args))) - texinfo-last-node - ;; Region formatting may not provide last node position. - (if texinfo-last-node-pos - (1+ (count-lines texinfo-last-node-pos (point))) - 1)) - (symbol-value index-list))))) - -(put 'defmethod 'texinfo-defun-indexing-property 'texinfo-index-defmethod) -(put 'defmethodx 'texinfo-defun-indexing-property 'texinfo-index-defmethod) -(defun texinfo-index-defmethod (parsed-args) - ;; use 2nd on 1st parsed-arg as entry-proper - ;; `index-list' will be texinfo-findex or the like - (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) - (set index-list - (cons - ;; Three elements: entry-proper, node-name, line-number - (list - (format "%s on %s" - (car (cdr parsed-args)) - (car parsed-args)) - texinfo-last-node - ;; Region formatting may not provide last node position. - (if texinfo-last-node-pos - (1+ (count-lines texinfo-last-node-pos (point))) - 1)) - (symbol-value index-list))))) - -(put 'defop 'texinfo-defun-indexing-property 'texinfo-index-defop) -(put 'defopx 'texinfo-defun-indexing-property 'texinfo-index-defop) -(defun texinfo-index-defop (parsed-args) - ;; use 3rd on 2nd parsed-arg as entry-proper - ;; `index-list' will be texinfo-findex or the like - (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) - (set index-list - (cons - ;; Three elements: entry-proper, node-name, line-number - (list - (format "%s on %s" - (car (cdr (cdr parsed-args))) - (car (cdr parsed-args))) - texinfo-last-node - ;; Region formatting may not provide last node position. - (if texinfo-last-node-pos - (1+ (count-lines texinfo-last-node-pos (point))) - 1)) - (symbol-value index-list))))) - -(put 'defivar 'texinfo-defun-indexing-property 'texinfo-index-defivar) -(put 'defivarx 'texinfo-defun-indexing-property 'texinfo-index-defivar) -(defun texinfo-index-defivar (parsed-args) - ;; use 2nd of 1st parsed-arg as entry-proper - ;; `index-list' will be texinfo-findex or the like - (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) - (set index-list - (cons - ;; Three elements: entry-proper, node-name, line-number - (list - (format "%s of %s" - (car (cdr parsed-args)) - (car parsed-args)) - texinfo-last-node - ;; Region formatting may not provide last node position. - (if texinfo-last-node-pos - (1+ (count-lines texinfo-last-node-pos (point))) - 1)) - (symbol-value index-list))))) - -(put 'defcv 'texinfo-defun-indexing-property 'texinfo-index-defcv) -(put 'defcvx 'texinfo-defun-indexing-property 'texinfo-index-defcv) -(defun texinfo-index-defcv (parsed-args) - ;; use 3rd of 2nd parsed-arg as entry-proper - ;; `index-list' will be texinfo-findex or the like - (let ((index-list (get texinfo-command-name 'texinfo-defun-index))) - (set index-list - (cons - ;; Three elements: entry-proper, node-name, line-number - (list - (format "%s of %s" - (car (cdr (cdr parsed-args))) - (car (cdr parsed-args))) - texinfo-last-node - ;; Region formatting may not provide last node position. - (if texinfo-last-node-pos - (1+ (count-lines texinfo-last-node-pos (point))) - 1)) - (symbol-value index-list))))) - - -;;; Properties for definitions - -;; Each definition command has six properties: -;; -;; 1. texinfo-deffn-formatting-property to format definition line -;; 2. texinfo-defun-indexing-property to create index entry -;; 3. texinfo-format formatting command -;; 4. texinfo-end end formatting command -;; 5. texinfo-defun-type type of deffn to format -;; 6. texinfo-defun-index type of index to use -;; -;; The `x' forms of each definition command are used for the second -;; and subsequent header lines. - -;; The texinfo-deffn-formatting-property and texinfo-defun-indexing-property -;; are listed just before the appropriate formatting and indexing commands. - -(put 'deffn 'texinfo-format 'texinfo-format-defun) -(put 'deffnx 'texinfo-format 'texinfo-format-defunx) -(put 'deffn 'texinfo-end 'texinfo-end-defun) -(put 'deffn 'texinfo-defun-type '('deffn-type nil)) -(put 'deffnx 'texinfo-defun-type '('deffn-type nil)) -(put 'deffn 'texinfo-defun-index 'texinfo-findex) -(put 'deffnx 'texinfo-defun-index 'texinfo-findex) - -(put 'defun 'texinfo-format 'texinfo-format-defun) -(put 'defunx 'texinfo-format 'texinfo-format-defunx) -(put 'defun 'texinfo-end 'texinfo-end-defun) -(put 'defun 'texinfo-defun-type '('defun-type "Function")) -(put 'defunx 'texinfo-defun-type '('defun-type "Function")) -(put 'defun 'texinfo-defun-index 'texinfo-findex) -(put 'defunx 'texinfo-defun-index 'texinfo-findex) - -(put 'defmac 'texinfo-format 'texinfo-format-defun) -(put 'defmacx 'texinfo-format 'texinfo-format-defunx) -(put 'defmac 'texinfo-end 'texinfo-end-defun) -(put 'defmac 'texinfo-defun-type '('defun-type "Macro")) -(put 'defmacx 'texinfo-defun-type '('defun-type "Macro")) -(put 'defmac 'texinfo-defun-index 'texinfo-findex) -(put 'defmacx 'texinfo-defun-index 'texinfo-findex) - -(put 'defspec 'texinfo-format 'texinfo-format-defun) -(put 'defspecx 'texinfo-format 'texinfo-format-defunx) -(put 'defspec 'texinfo-end 'texinfo-end-defun) -(put 'defspec 'texinfo-defun-type '('defun-type "Special form")) -(put 'defspecx 'texinfo-defun-type '('defun-type "Special form")) -(put 'defspec 'texinfo-defun-index 'texinfo-findex) -(put 'defspecx 'texinfo-defun-index 'texinfo-findex) - -(put 'defvr 'texinfo-format 'texinfo-format-defun) -(put 'defvrx 'texinfo-format 'texinfo-format-defunx) -(put 'defvr 'texinfo-end 'texinfo-end-defun) -(put 'defvr 'texinfo-defun-type '('deffn-type nil)) -(put 'defvrx 'texinfo-defun-type '('deffn-type nil)) -(put 'defvr 'texinfo-defun-index 'texinfo-vindex) -(put 'defvrx 'texinfo-defun-index 'texinfo-vindex) - -(put 'defvar 'texinfo-format 'texinfo-format-defun) -(put 'defvarx 'texinfo-format 'texinfo-format-defunx) -(put 'defvar 'texinfo-end 'texinfo-end-defun) -(put 'defvar 'texinfo-defun-type '('defun-type "Variable")) -(put 'defvarx 'texinfo-defun-type '('defun-type "Variable")) -(put 'defvar 'texinfo-defun-index 'texinfo-vindex) -(put 'defvarx 'texinfo-defun-index 'texinfo-vindex) - -(put 'defconst 'texinfo-format 'texinfo-format-defun) -(put 'defconstx 'texinfo-format 'texinfo-format-defunx) -(put 'defconst 'texinfo-end 'texinfo-end-defun) -(put 'defconst 'texinfo-defun-type '('defun-type "Constant")) -(put 'defconstx 'texinfo-defun-type '('defun-type "Constant")) -(put 'defconst 'texinfo-defun-index 'texinfo-vindex) -(put 'defconstx 'texinfo-defun-index 'texinfo-vindex) - -(put 'defcmd 'texinfo-format 'texinfo-format-defun) -(put 'defcmdx 'texinfo-format 'texinfo-format-defunx) -(put 'defcmd 'texinfo-end 'texinfo-end-defun) -(put 'defcmd 'texinfo-defun-type '('defun-type "Command")) -(put 'defcmdx 'texinfo-defun-type '('defun-type "Command")) -(put 'defcmd 'texinfo-defun-index 'texinfo-findex) -(put 'defcmdx 'texinfo-defun-index 'texinfo-findex) - -(put 'defopt 'texinfo-format 'texinfo-format-defun) -(put 'defoptx 'texinfo-format 'texinfo-format-defunx) -(put 'defopt 'texinfo-end 'texinfo-end-defun) -(put 'defopt 'texinfo-defun-type '('defun-type "User Option")) -(put 'defoptx 'texinfo-defun-type '('defun-type "User Option")) -(put 'defopt 'texinfo-defun-index 'texinfo-vindex) -(put 'defoptx 'texinfo-defun-index 'texinfo-vindex) - -(put 'deftp 'texinfo-format 'texinfo-format-defun) -(put 'deftpx 'texinfo-format 'texinfo-format-defunx) -(put 'deftp 'texinfo-end 'texinfo-end-defun) -(put 'deftp 'texinfo-defun-type '('deftp-type nil)) -(put 'deftpx 'texinfo-defun-type '('deftp-type nil)) -(put 'deftp 'texinfo-defun-index 'texinfo-tindex) -(put 'deftpx 'texinfo-defun-index 'texinfo-tindex) - -;;; Object-oriented stuff is a little hairier. - -(put 'defop 'texinfo-format 'texinfo-format-defun) -(put 'defopx 'texinfo-format 'texinfo-format-defunx) -(put 'defop 'texinfo-end 'texinfo-end-defun) -(put 'defop 'texinfo-defun-type '('defop-type nil)) -(put 'defopx 'texinfo-defun-type '('defop-type nil)) -(put 'defop 'texinfo-defun-index 'texinfo-findex) -(put 'defopx 'texinfo-defun-index 'texinfo-findex) - -(put 'defmethod 'texinfo-format 'texinfo-format-defun) -(put 'defmethodx 'texinfo-format 'texinfo-format-defunx) -(put 'defmethod 'texinfo-end 'texinfo-end-defun) -(put 'defmethod 'texinfo-defun-type '('defmethod-type "Method")) -(put 'defmethodx 'texinfo-defun-type '('defmethod-type "Method")) -(put 'defmethod 'texinfo-defun-index 'texinfo-findex) -(put 'defmethodx 'texinfo-defun-index 'texinfo-findex) - -(put 'defcv 'texinfo-format 'texinfo-format-defun) -(put 'defcvx 'texinfo-format 'texinfo-format-defunx) -(put 'defcv 'texinfo-end 'texinfo-end-defun) -(put 'defcv 'texinfo-defun-type '('defop-type nil)) -(put 'defcvx 'texinfo-defun-type '('defop-type nil)) -(put 'defcv 'texinfo-defun-index 'texinfo-vindex) -(put 'defcvx 'texinfo-defun-index 'texinfo-vindex) - -(put 'defivar 'texinfo-format 'texinfo-format-defun) -(put 'defivarx 'texinfo-format 'texinfo-format-defunx) -(put 'defivar 'texinfo-end 'texinfo-end-defun) -(put 'defivar 'texinfo-defun-type '('defmethod-type "Instance variable")) -(put 'defivarx 'texinfo-defun-type '('defmethod-type "Instance variable")) -(put 'defivar 'texinfo-defun-index 'texinfo-vindex) -(put 'defivarx 'texinfo-defun-index 'texinfo-vindex) - -;;; Typed functions and variables - -(put 'deftypefn 'texinfo-format 'texinfo-format-defun) -(put 'deftypefnx 'texinfo-format 'texinfo-format-defunx) -(put 'deftypefn 'texinfo-end 'texinfo-end-defun) -(put 'deftypefn 'texinfo-defun-type '('deftypefn-type nil)) -(put 'deftypefnx 'texinfo-defun-type '('deftypefn-type nil)) -(put 'deftypefn 'texinfo-defun-index 'texinfo-findex) -(put 'deftypefnx 'texinfo-defun-index 'texinfo-findex) - -(put 'deftypefun 'texinfo-format 'texinfo-format-defun) -(put 'deftypefunx 'texinfo-format 'texinfo-format-defunx) -(put 'deftypefun 'texinfo-end 'texinfo-end-defun) -(put 'deftypefun 'texinfo-defun-type '('deftypefun-type "Function")) -(put 'deftypefunx 'texinfo-defun-type '('deftypefun-type "Function")) -(put 'deftypefun 'texinfo-defun-index 'texinfo-findex) -(put 'deftypefunx 'texinfo-defun-index 'texinfo-findex) - -(put 'deftypevr 'texinfo-format 'texinfo-format-defun) -(put 'deftypevrx 'texinfo-format 'texinfo-format-defunx) -(put 'deftypevr 'texinfo-end 'texinfo-end-defun) -(put 'deftypevr 'texinfo-defun-type '('deftypefn-type nil)) -(put 'deftypevrx 'texinfo-defun-type '('deftypefn-type nil)) -(put 'deftypevr 'texinfo-defun-index 'texinfo-vindex) -(put 'deftypevrx 'texinfo-defun-index 'texinfo-vindex) - -(put 'deftypevar 'texinfo-format 'texinfo-format-defun) -(put 'deftypevarx 'texinfo-format 'texinfo-format-defunx) -(put 'deftypevar 'texinfo-end 'texinfo-end-defun) -(put 'deftypevar 'texinfo-defun-type '('deftypevar-type "Variable")) -(put 'deftypevarx 'texinfo-defun-type '('deftypevar-type "Variable")) -(put 'deftypevar 'texinfo-defun-index 'texinfo-vindex) -(put 'deftypevarx 'texinfo-defun-index 'texinfo-vindex) - - -;;; @set, @clear, @ifset, @ifclear - -;; If a flag is set with @set FLAG, then text between @ifset and @end -;; ifset is formatted normally, but if the flag is cleared with -;; @clear FLAG, then the text is not formatted; it is ignored. - -;; If a flag is cleared with @clear FLAG, then text between @ifclear -;; and @end ifclear is formatted normally, but if the flag is set with -;; @set FLAG, then the text is not formatted; it is ignored. @ifclear -;; is the opposite of @ifset. - -;; If a flag is set to a string with @set FLAG, -;; replace @value{FLAG} with the string. -;; If a flag with a value is cleared, -;; @value{FLAG} is invalid, -;; as if there had never been any @set FLAG previously. - -(put 'clear 'texinfo-format 'texinfo-clear) -(defun texinfo-clear () - "Clear the value of the flag." - (let* ((arg (texinfo-parse-arg-discard)) - (flag (car (read-from-string arg))) - (value (substring arg (cdr (read-from-string arg))))) - (put flag 'texinfo-whether-setp 'flag-cleared) - (put flag 'texinfo-set-value ""))) - -(put 'set 'texinfo-format 'texinfo-set) -(defun texinfo-set () - "Set the value of the flag, optionally to a string. -The command `@set foo This is a string.' -sets flag foo to the value: `This is a string.' -The command `@value{foo}' expands to the value." - (let* ((arg (texinfo-parse-arg-discard)) - (flag (car (read-from-string arg))) - (value (substring arg (cdr (read-from-string arg))))) - (put flag 'texinfo-whether-setp 'flag-set) - (put flag 'texinfo-set-value value))) - -(put 'value 'texinfo-format 'texinfo-value) -(defun texinfo-value () - "Insert the string to which the flag is set. -The command `@set foo This is a string.' -sets flag foo to the value: `This is a string.' -The command `@value{foo}' expands to the value." - (let ((arg (texinfo-parse-arg-discard))) - (cond ((and - (eq (get (car (read-from-string arg)) 'texinfo-whether-setp) - 'flag-set) - (get (car (read-from-string arg)) 'texinfo-set-value)) - (insert (get (car (read-from-string arg)) 'texinfo-set-value))) - ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) - 'flag-cleared) - (insert (format "{No value for \"%s\"}" arg))) - ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) nil) - (insert (format "{No value for \"%s\"}" arg)))))) - -(put 'ifset 'texinfo-end 'texinfo-discard-command) -(put 'ifset 'texinfo-format 'texinfo-if-set) -(defun texinfo-if-set () - "If set, continue formatting; else do not format region up to @end ifset" - (let ((arg (texinfo-parse-arg-discard))) - (cond - ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) - 'flag-set) - ;; Format the text (i.e., do not remove it); do nothing here. - ()) - ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) - 'flag-cleared) - ;; Clear region (i.e., cause the text to be ignored). - (delete-region texinfo-command-start - (progn (re-search-forward "@end ifset[ \t]*\n") - (point)))) - ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) - nil) - ;; In this case flag is neither set nor cleared. - ;; Act as if set, i.e. do nothing. - ())))) - -(put 'ifclear 'texinfo-end 'texinfo-discard-command) -(put 'ifclear 'texinfo-format 'texinfo-if-clear) -(defun texinfo-if-clear () - "If clear, continue formatting; if set, do not format up to @end ifset" - (let ((arg (texinfo-parse-arg-discard))) - (cond - ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) - 'flag-set) - ;; Clear region (i.e., cause the text to be ignored). - (delete-region texinfo-command-start - (progn (re-search-forward "@end ifclear[ \t]*\n") - (point)))) - ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) - 'flag-cleared) - ;; Format the text (i.e., do not remove it); do nothing here. - ()) - ((eq (get (car (read-from-string arg)) 'texinfo-whether-setp) - nil) - ;; In this case flag is neither set nor cleared. - ;; Act as if clear, i.e. do nothing. - ())))) - -;;; @ifeq - -(put 'ifeq 'texinfo-format 'texinfo-format-ifeq) -(defun texinfo-format-ifeq () - "If ARG1 and ARG2 caselessly string compare to same string, perform COMMAND. -Otherwise produces no output. - -Thus: - @ifeq{ arg1 , arg1 , @code{foo}} bar - - ==> `foo' bar. -but - @ifeq{ arg1 , arg2 , @code{foo}} bar - - ==> bar - -Note that the Texinfo command and its arguments must be arguments to -the @ifeq command." - ;; compare-buffer-substrings does not exist in version 18; don't use - (goto-char texinfo-command-end) - (let* ((case-fold-search t) - (stop (save-excursion (forward-sexp 1) (point))) - start end - ;; @ifeq{arg1, arg2, @command{optional-args}} - (arg1 - (progn - (forward-char 1) - (skip-chars-forward " ") - (setq start (point)) - (search-forward "," stop t) - (skip-chars-backward ", ") - (buffer-substring start (point)))) - (arg2 - (progn - (search-forward "," stop t) - (skip-chars-forward " ") - (setq start (point)) - (search-forward "," stop t) - (skip-chars-backward ", ") - (buffer-substring start (point)))) - (texinfo-command - (progn - (search-forward "," stop t) - (skip-chars-forward " ") - (setq start (point)) - (goto-char (1- stop)) - (skip-chars-backward " ") - (buffer-substring start (point))))) - (delete-region texinfo-command-start stop) - (if (equal arg1 arg2) - (insert texinfo-command)) - (goto-char texinfo-command-start))) - - -;;; Process included files: `@include' command - -;; Updated 19 October 1990 -;; In the original version, include files were ignored by Info but -;; incorporated in to the printed manual. To make references to the -;; included file, the Texinfo source file has to refer to the included -;; files using the `(filename)nodename' format for referring to other -;; Info files. Also, the included files had to be formatted on their -;; own. It was just like they were another file. - -;; Currently, include files are inserted into the buffer that is -;; formatted for Info. If large, the resulting info file is split and -;; tagified. For current include files to work, the master menu must -;; refer to all the nodes, and the highest level nodes in the include -;; files must have the correct next, prev, and up pointers. - -;; The included file may have an @setfilename and even an @settitle, -;; but not an `\input texinfo' line. - -;; Updated 24 March 1993 -;; In order for @raisesections and @lowersections to work, included -;; files must be inserted into the buffer holding the outer file -;; before other Info formatting takes place. So @include is no longer -;; is treated like other @-commands. -(put 'include 'texinfo-format 'texinfo-format-noop) - -;; Original definition: -;; (defun texinfo-format-include () -;; (let ((filename (texinfo-parse-arg-discard)) -;; (default-directory input-directory) -;; subindex) -;; (setq subindex -;; (save-excursion -;; (progn (find-file -;; (cond ((file-readable-p (concat filename ".texinfo")) -;; (concat filename ".texinfo")) -;; ((file-readable-p (concat filename ".texi")) -;; (concat filename ".texi")) -;; ((file-readable-p (concat filename ".tex")) -;; (concat filename ".tex")) -;; ((file-readable-p filename) -;; filename) -;; (t (error "@include'd file %s not found" -;; filename)))) -;; (texinfo-format-buffer-1)))) -;; (texinfo-subindex 'texinfo-vindex (car subindex) (nth 1 subindex)) -;; (texinfo-subindex 'texinfo-findex (car subindex) (nth 2 subindex)) -;; (texinfo-subindex 'texinfo-cindex (car subindex) (nth 3 subindex)) -;; (texinfo-subindex 'texinfo-pindex (car subindex) (nth 4 subindex)) -;; (texinfo-subindex 'texinfo-tindex (car subindex) (nth 5 subindex)) -;; (texinfo-subindex 'texinfo-kindex (car subindex) (nth 6 subindex)))) -;; -;;(defun texinfo-subindex (indexvar file content) -;; (set indexvar (cons (list 'recurse file content) -;; (symbol-value indexvar)))) - -;; Second definition: -;; (put 'include 'texinfo-format 'texinfo-format-include) -;; (defun texinfo-format-include () -;; (let ((filename (concat input-directory -;; (texinfo-parse-arg-discard))) -;; (default-directory input-directory)) -;; (message "Reading: %s" filename) -;; (save-excursion -;; (save-restriction -;; (narrow-to-region -;; (point) -;; (+ (point) (car (cdr (insert-file-contents filename))))) -;; (goto-char (point-min)) -;; (texinfo-append-refill) -;; (texinfo-format-convert (point-min) (point-max)))) -;; (setq last-input-buffer input-buffer) ; to bypass setfilename -;; )) - - -;;; Numerous commands do nothing in Info -;; These commands are defined in texinfo.tex for printed output. - - -;;; various noops, such as @b{foo}, that take arguments in braces - -(put 'b 'texinfo-format 'texinfo-format-noop) -(put 'i 'texinfo-format 'texinfo-format-noop) -(put 'r 'texinfo-format 'texinfo-format-noop) -(put 't 'texinfo-format 'texinfo-format-noop) -(put 'w 'texinfo-format 'texinfo-format-noop) -(put 'asis 'texinfo-format 'texinfo-format-noop) -(put 'dmn 'texinfo-format 'texinfo-format-noop) -(put 'math 'texinfo-format 'texinfo-format-noop) -(put 'titlefont 'texinfo-format 'texinfo-format-noop) -(defun texinfo-format-noop () - (insert (texinfo-parse-arg-discard)) - (goto-char texinfo-command-start)) - -;; @hyphenation command discards an argument within braces -(put 'hyphenation 'texinfo-format 'texinfo-discard-command-and-arg) -(defun texinfo-discard-command-and-arg () - "Discard both @-command and its argument in braces." - (goto-char texinfo-command-end) - (forward-list 1) - (setq texinfo-command-end (point)) - (delete-region texinfo-command-start texinfo-command-end)) - - -;;; Do nothing commands, such as @smallbook, that have no args and no braces -;; These must appear on a line of their own - -(put 'bye 'texinfo-format 'texinfo-discard-line) -(put 'smallbook 'texinfo-format 'texinfo-discard-line) -(put 'finalout 'texinfo-format 'texinfo-discard-line) -(put 'overfullrule 'texinfo-format 'texinfo-discard-line) -(put 'smallbreak 'texinfo-format 'texinfo-discard-line) -(put 'medbreak 'texinfo-format 'texinfo-discard-line) -(put 'bigbreak 'texinfo-format 'texinfo-discard-line) - - -;;; These noop commands discard the rest of the line. - -(put 'c 'texinfo-format 'texinfo-discard-line-with-args) -(put 'comment 'texinfo-format 'texinfo-discard-line-with-args) -(put 'contents 'texinfo-format 'texinfo-discard-line-with-args) -(put 'group 'texinfo-end 'texinfo-discard-line-with-args) -(put 'group 'texinfo-format 'texinfo-discard-line-with-args) -(put 'headings 'texinfo-format 'texinfo-discard-line-with-args) -(put 'setchapterstyle 'texinfo-format 'texinfo-discard-line-with-args) -(put 'hsize 'texinfo-format 'texinfo-discard-line-with-args) -(put 'itemindent 'texinfo-format 'texinfo-discard-line-with-args) -(put 'lispnarrowing 'texinfo-format 'texinfo-discard-line-with-args) -(put 'need 'texinfo-format 'texinfo-discard-line-with-args) -(put 'nopara 'texinfo-format 'texinfo-discard-line-with-args) -(put 'page 'texinfo-format 'texinfo-discard-line-with-args) -(put 'parindent 'texinfo-format 'texinfo-discard-line-with-args) -(put 'setchapternewpage 'texinfo-format 'texinfo-discard-line-with-args) -(put 'setq 'texinfo-format 'texinfo-discard-line-with-args) -(put 'settitle 'texinfo-format 'texinfo-discard-line-with-args) -(put 'setx 'texinfo-format 'texinfo-discard-line-with-args) -(put 'shortcontents 'texinfo-format 'texinfo-discard-line-with-args) -(put 'shorttitlepage 'texinfo-format 'texinfo-discard-line-with-args) -(put 'summarycontents 'texinfo-format 'texinfo-discard-line-with-args) -(put 'input 'texinfo-format 'texinfo-discard-line-with-args) -(put 'dircategory 'texinfo-format 'texinfo-discard-line-with-args) - - -;;; Some commands cannot be handled - -(defun texinfo-unsupported () - (error "%s is not handled by texinfo" - (buffer-substring texinfo-command-start texinfo-command-end))) - -;;; Batch formatting - -(defun batch-texinfo-format () - "Runs texinfo-format-buffer on the files remaining on the command line. -Must be used only with -batch, and kills emacs on completion. -Each file will be processed even if an error occurred previously. -For example, invoke - \"emacs -batch -funcall batch-texinfo-format $docs/ ~/*.texinfo\"." - (if (not noninteractive) - (error "batch-texinfo-format may only be used -batch.")) - (let ((version-control t) - (auto-save-default nil) - (find-file-run-dired nil) - (kept-old-versions 259259) - (kept-new-versions 259259)) - (let ((error 0) - file - (files ())) - (while command-line-args-left - (setq file (expand-file-name (car command-line-args-left))) - (cond ((not (file-exists-p file)) - (message ">> %s does not exist!" file) - (setq error 1 - command-line-args-left (cdr command-line-args-left))) - ((file-directory-p file) - (setq command-line-args-left - (nconc (directory-files file) - (cdr command-line-args-left)))) - (t - (setq files (cons file files) - command-line-args-left (cdr command-line-args-left))))) - (while files - (setq file (car files) - files (cdr files)) - (condition-case err - (progn - (if buffer-file-name (kill-buffer (current-buffer))) - (find-file file) - (buffer-disable-undo (current-buffer)) - (set-buffer-modified-p nil) - (texinfo-mode) - (message "texinfo formatting %s..." file) - (texinfo-format-buffer nil) - (if (buffer-modified-p) - (progn (message "Saving modified %s" (buffer-file-name)) - (save-buffer)))) - (error - (message ">> Error: %s" (prin1-to-string err)) - (message ">> point at") - (let ((s (buffer-substring (point) - (min (+ (point) 100) - (point-max)))) - (tem 0)) - (while (setq tem (string-match "\n+" s tem)) - (setq s (concat (substring s 0 (match-beginning 0)) - "\n>> " - (substring s (match-end 0))) - tem (1+ tem))) - (message ">> %s" s)) - (setq error 1)))) - (kill-emacs error)))) - - -;;; Place `provide' at end of file. -(provide 'texinfmt) - -;;; texinfmt.el ends here. diff --git a/texinfo/emacs/texinfo.el b/texinfo/emacs/texinfo.el deleted file mode 100644 index 9e1099f4b88..00000000000 --- a/texinfo/emacs/texinfo.el +++ /dev/null @@ -1,874 +0,0 @@ -;;; texinfo.el --- major mode for editing Texinfo files - -;; Copyright (C) 1985, '88, '89, '90, '91, -;; '92, '93, '96, '97 Free Software Foundation, Inc. - -;; Author: Robert J. Chassell -;; Date: [Set date below for texinfo-version] -;; Maintainer: bug-texinfo@prep.ai.mit.edu -;; Keywords: maint, tex, docs - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Code: - -(defgroup texinfo nil - "Texinfo Mode" - :group 'docs) - -(defvar texinfo-version "2.37 of 24 May 1997") - -(defun texinfo-version (&optional here) - "Show the version of texinfo.el in the minibuffer. -If optional argument HERE is non-nil, insert info at point." - (interactive "P") - (let ((version-string - (format "Version of \`texinfo.el\': %s" texinfo-version))) - (if here - (insert version-string) - (if (interactive-p) - (message "%s" version-string) - version-string)))) - - -;;; Autoloads: - -(autoload 'makeinfo-region - "makeinfo" - "Make Info file from region of current Texinfo file, and switch to it. - -This command does not offer the `next-error' feature since it would -apply to a temporary file, not the original; use the `makeinfo-buffer' -command to gain use of `next-error'." - t nil) - -(autoload 'makeinfo-buffer - "makeinfo" - "Make Info file from current buffer. - -Use the \\[next-error] command to move to the next error -\(if there are errors\)." - t nil) - -(autoload 'kill-compilation - "compile" - "Kill the process made by the \\[compile] command." - t nil) - -(autoload 'makeinfo-recenter-compilation-buffer - "makeinfo" - "Redisplay `*compilation*' buffer so most recent output can be seen. -The last line of the buffer is displayed on -line LINE of the window, or centered if LINE is nil." - t nil) - -(autoload 'texinfo-update-node - "texnfo-upd" - "Without any prefix argument, update the node in which point is located. -Non-nil argument (prefix, if interactive) means update the nodes in the -marked region. - -The functions for creating or updating nodes and menus, and their -keybindings, are: - - texinfo-update-node (&optional region-p) \\[texinfo-update-node] - texinfo-every-node-update () \\[texinfo-every-node-update] - texinfo-sequential-node-update (&optional region-p) - - texinfo-make-menu (&optional region-p) \\[texinfo-make-menu] - texinfo-all-menus-update () \\[texinfo-all-menus-update] - texinfo-master-menu () - - texinfo-indent-menu-description (column &optional region-p) - -The `texinfo-column-for-description' variable specifies the column to -which menu descriptions are indented. Its default value is 32." - t nil) - -(autoload 'texinfo-every-node-update - "texnfo-upd" - "Update every node in a Texinfo file." - t nil) - -(autoload 'texinfo-sequential-node-update - "texnfo-upd" - "Update one node (or many) in a Texinfo file with sequential pointers. - -This function causes the `Next' or `Previous' pointer to point to the -immediately preceding or following node, even if it is at a higher or -lower hierarchical level in the document. Continually pressing `n' or -`p' takes you straight through the file. - -Without any prefix argument, update the node in which point is located. -Non-nil argument (prefix, if interactive) means update the nodes in the -marked region. - -This command makes it awkward to navigate among sections and -subsections; it should be used only for those documents that are meant -to be read like a novel rather than a reference, and for which the -Info `g*' command is inadequate." - t nil) - -(autoload 'texinfo-make-menu - "texnfo-upd" - "Without any prefix argument, make or update a menu. -Make the menu for the section enclosing the node found following point. - -Non-nil argument (prefix, if interactive) means make or update menus -for nodes within or part of the marked region. - -Whenever a menu exists, and is being updated, the descriptions that -are associated with node names in the pre-existing menu are -incorporated into the new menu. Otherwise, the nodes' section titles -are inserted as descriptions." - t nil) - -(autoload 'texinfo-all-menus-update - "texnfo-upd" - "Update every regular menu in a Texinfo file. -Remove pre-existing master menu, if there is one. - -If called with a non-nil argument, this function first updates all the -nodes in the buffer before updating the menus." - t nil) - -(autoload 'texinfo-master-menu - "texnfo-upd" - "Make a master menu for a whole Texinfo file. -Non-nil argument (prefix, if interactive) means first update all -existing nodes and menus. Remove pre-existing master menu, if there is one. - -This function creates a master menu that follows the top node. The -master menu includes every entry from all the other menus. It -replaces any existing ordinary menu that follows the top node. - -If called with a non-nil argument, this function first updates all the -menus in the buffer (incorporating descriptions from pre-existing -menus) before it constructs the master menu. - -The function removes the detailed part of an already existing master -menu. This action depends on the pre-existing master menu using the -standard `texinfo-master-menu-header'. - -The master menu has the following format, which is adapted from the -recommendation in the Texinfo Manual: - - * The first part contains the major nodes in the Texinfo file: the - nodes for the chapters, chapter-like sections, and the major - appendices. This includes the indices, so long as they are in - chapter-like sections, such as unnumbered sections. - - * The second and subsequent parts contain a listing of the other, - lower level menus, in order. This way, an inquirer can go - directly to a particular node if he or she is searching for - specific information. - -Each of the menus in the detailed node listing is introduced by the -title of the section containing the menu." - t nil) - -(autoload 'texinfo-indent-menu-description - "texnfo-upd" - "Indent every description in menu following point to COLUMN. -Non-nil argument (prefix, if interactive) means indent every -description in every menu in the region. Does not indent second and -subsequent lines of a multi-line description." - t nil) - -(autoload 'texinfo-insert-node-lines - "texnfo-upd" - "Insert missing `@node' lines in region of Texinfo file. -Non-nil argument (prefix, if interactive) means also to insert the -section titles as node names; and also to insert the section titles as -node names in pre-existing @node lines that lack names." - t nil) - -(autoload 'texinfo-start-menu-description - "texnfo-upd" - "In this menu entry, insert the node's section title as a description. -Position point at beginning of description ready for editing. -Do not insert a title if the line contains an existing description. - -You will need to edit the inserted text since a useful description -complements the node name rather than repeats it as a title does." - t nil) - -(autoload 'texinfo-multiple-files-update - "texnfo-upd" - "Update first node pointers in each file included in OUTER-FILE; -create or update main menu in the outer file that refers to such nodes. -This does not create or update menus or pointers within the included files. - -With optional MAKE-MASTER-MENU argument (prefix arg, if interactive), -insert a master menu in OUTER-FILE. This does not create or update -menus or pointers within the included files. - -With optional UPDATE-EVERYTHING argument (numeric prefix arg, if -interactive), update all the menus and all the `Next', `Previous', and -`Up' pointers of all the files included in OUTER-FILE before inserting -a master menu in OUTER-FILE. - -The command also updates the `Top' level node pointers of OUTER-FILE. - -Notes: - - * this command does NOT save any files--you must save the - outer file and any modified, included files. - - * except for the `Top' node, this command does NOT handle any - pre-existing nodes in the outer file; hence, indices must be - enclosed in an included file. - -Requirements: - - * each of the included files must contain exactly one highest - hierarchical level node, - * this highest node must be the first node in the included file, - * each highest hierarchical level node must be of the same type. - -Thus, normally, each included file contains one, and only one, -chapter." - t nil) - - -;;; Code: - -;;; Don't you dare insert any `require' calls at top level in this file--rms. - -;;; Syntax table - -(defvar texinfo-mode-syntax-table nil) - -(if texinfo-mode-syntax-table - nil - (setq texinfo-mode-syntax-table (make-syntax-table)) - (modify-syntax-entry ?\" " " texinfo-mode-syntax-table) - (modify-syntax-entry ?\\ " " texinfo-mode-syntax-table) - (modify-syntax-entry ?@ "\\" texinfo-mode-syntax-table) - (modify-syntax-entry ?\^q "\\" texinfo-mode-syntax-table) - (modify-syntax-entry ?\[ "(]" texinfo-mode-syntax-table) - (modify-syntax-entry ?\] ")[" texinfo-mode-syntax-table) - (modify-syntax-entry ?{ "(}" texinfo-mode-syntax-table) - (modify-syntax-entry ?} "){" texinfo-mode-syntax-table) - (modify-syntax-entry ?\' "w" texinfo-mode-syntax-table)) - -;; Written by Wolfgang Bangerth <zcg51122@rpool1.rus.uni-stuttgart.de> -;; To override this example, set either `imenu-generic-expression' -;; or `imenu-create-index-function'. -(defvar texinfo-imenu-generic-expression - '((nil "^@node[ \t]+\\([^,\n]*\\)" 1) - ("Chapters" "^@chapter[ \t]+\\(.*\\)$" 1)) - - "Imenu generic expression for TexInfo mode. See `imenu-generic-expression'.") - -(defvar texinfo-font-lock-keywords - '(;; All but the first 2 had an OVERRIDE of t. - ;; It didn't seem to be any better, and it's slower--simon. - ("^\\(@c\\|@comment\\)\\>.*" . font-lock-comment-face) ;comments - ;; Robert J. Chassell <bob@gnu.ai.mit.edu> says remove this line. - ;;("\\$\\([^$]*\\)\\$" 1 font-lock-string-face t) - ("@\\([a-zA-Z]+\\|[^ \t\n]\\)" 1 font-lock-keyword-face) ;commands - ("^\\*\\(.*\\)[\t ]*$" 1 font-lock-function-name-face t) ;menu items - ("@\\(emph\\|strong\\|b\\|i\\){\\([^}]+\\)" 2 font-lock-comment-face) - ("@\\(file\\|kbd\\|key\\|url\\|email\\){\\([^}]+\\)" 2 font-lock-string-face) - ("@\\(samp\\|code\\|var\\|math\\){\\([^}]+\\)" - 2 font-lock-variable-name-face) - ("@\\(cite\\|xref\\|pxref\\){\\([^}]+\\)" 2 font-lock-reference-face) - ("@\\(end\\|itemx?\\) +\\(.+\\)" 2 font-lock-function-name-face keep) - ) - "Additional expressions to highlight in TeXinfo mode.") - -(defvar texinfo-section-list - '(("top" 1) - ("majorheading" 1) - ("chapter" 2) - ("unnumbered" 2) - ("appendix" 2) - ("chapheading" 2) - ("section" 3) - ("unnumberedsec" 3) - ("appendixsec" 3) - ("heading" 3) - ("subsection" 4) - ("unnumberedsubsec" 4) - ("appendixsubsec" 4) - ("subheading" 4) - ("subsubsection" 5) - ("unnumberedsubsubsec" 5) - ("appendixsubsubsec" 5) - ("subsubheading" 5)) - "Alist of sectioning commands and their relative level.") - -(defun texinfo-outline-level () - ;; Calculate level of current texinfo outline heading. - (save-excursion - (if (bobp) - 0 - (forward-char 1) - (let* ((word (buffer-substring-no-properties - (point) (progn (forward-word 1) (point)))) - (entry (assoc word texinfo-section-list))) - (if entry - (nth 1 entry) - 5))))) - - -;;; Keybindings -(defvar texinfo-mode-map nil) - -;;; Keys common both to Texinfo mode and to TeX shell. - -(defun texinfo-define-common-keys (keymap) - "Define the keys both in Texinfo mode and in the texinfo-tex-shell." - (define-key keymap "\C-c\C-t\C-k" 'tex-kill-job) - (define-key keymap "\C-c\C-t\C-x" 'texinfo-quit-job) - (define-key keymap "\C-c\C-t\C-l" 'tex-recenter-output-buffer) - (define-key keymap "\C-c\C-t\C-d" 'texinfo-delete-from-print-queue) - (define-key keymap "\C-c\C-t\C-q" 'tex-show-print-queue) - (define-key keymap "\C-c\C-t\C-p" 'texinfo-tex-print) - (define-key keymap "\C-c\C-t\C-v" 'texinfo-tex-view) - (define-key keymap "\C-c\C-t\C-i" 'texinfo-texindex) - - (define-key keymap "\C-c\C-t\C-r" 'texinfo-tex-region) - (define-key keymap "\C-c\C-t\C-b" 'texinfo-tex-buffer)) - -;; Mode documentation displays commands in reverse order -;; from how they are listed in the texinfo-mode-map. - -(if texinfo-mode-map - nil - (setq texinfo-mode-map (make-sparse-keymap)) - - ;; bindings for `texnfo-tex.el' - (texinfo-define-common-keys texinfo-mode-map) - - ;; bindings for `makeinfo.el' - (define-key texinfo-mode-map "\C-c\C-m\C-k" 'kill-compilation) - (define-key texinfo-mode-map "\C-c\C-m\C-l" - 'makeinfo-recenter-compilation-buffer) - (define-key texinfo-mode-map "\C-c\C-m\C-r" 'makeinfo-region) - (define-key texinfo-mode-map "\C-c\C-m\C-b" 'makeinfo-buffer) - - ;; bindings for `texinfmt.el' - (define-key texinfo-mode-map "\C-c\C-e\C-r" 'texinfo-format-region) - (define-key texinfo-mode-map "\C-c\C-e\C-b" 'texinfo-format-buffer) - - ;; bindings for updating nodes and menus - - (define-key texinfo-mode-map "\C-c\C-um" 'texinfo-master-menu) - - (define-key texinfo-mode-map "\C-c\C-u\C-m" 'texinfo-make-menu) - (define-key texinfo-mode-map "\C-c\C-u\C-n" 'texinfo-update-node) - (define-key texinfo-mode-map "\C-c\C-u\C-e" 'texinfo-every-node-update) - (define-key texinfo-mode-map "\C-c\C-u\C-a" 'texinfo-all-menus-update) - - (define-key texinfo-mode-map "\C-c\C-s" 'texinfo-show-structure) - - (define-key texinfo-mode-map "\C-c}" 'up-list) - (define-key texinfo-mode-map "\C-c]" 'up-list) - (define-key texinfo-mode-map "\C-c{" 'texinfo-insert-braces) - - ;; bindings for inserting strings - - (define-key texinfo-mode-map "\C-c\C-c\C-d" 'texinfo-start-menu-description) - - (define-key texinfo-mode-map "\C-c\C-cv" 'texinfo-insert-@var) - (define-key texinfo-mode-map "\C-c\C-ct" 'texinfo-insert-@table) - (define-key texinfo-mode-map "\C-c\C-cs" 'texinfo-insert-@samp) - (define-key texinfo-mode-map "\C-c\C-co" 'texinfo-insert-@noindent) - (define-key texinfo-mode-map "\C-c\C-cn" 'texinfo-insert-@node) - (define-key texinfo-mode-map "\C-c\C-ck" 'texinfo-insert-@kbd) - (define-key texinfo-mode-map "\C-c\C-ci" 'texinfo-insert-@item) - (define-key texinfo-mode-map "\C-c\C-cf" 'texinfo-insert-@file) - (define-key texinfo-mode-map "\C-c\C-cx" 'texinfo-insert-@example) - (define-key texinfo-mode-map "\C-c\C-ce" 'texinfo-insert-@end) - (define-key texinfo-mode-map "\C-c\C-cd" 'texinfo-insert-@dfn) - (define-key texinfo-mode-map "\C-c\C-cc" 'texinfo-insert-@code)) - - -;;; Texinfo mode - -(defvar texinfo-chapter-level-regexp - "chapter\\|unnumbered \\|appendix \\|majorheading\\|chapheading" - "Regular expression matching Texinfo chapter-level headings. -This does not match `@node' and does not match the `@top' command.") - -;;;###autoload -(defun texinfo-mode () - "Major mode for editing Texinfo files. - - It has these extra commands: -\\{texinfo-mode-map} - - These are files that are used as input for TeX to make printed manuals -and also to be turned into Info files with \\[makeinfo-buffer] or -the `makeinfo' program. These files must be written in a very restricted and -modified version of TeX input format. - - Editing commands are like text-mode except that the syntax table is -set up so expression commands skip Texinfo bracket groups. To see -what the Info version of a region of the Texinfo file will look like, -use \\[makeinfo-region], which runs `makeinfo' on the current region. - - You can show the structure of a Texinfo file with \\[texinfo-show-structure]. -This command shows the structure of a Texinfo file by listing the -lines with the @-sign commands for @chapter, @section, and the like. -These lines are displayed in another window called the *Occur* window. -In that window, you can position the cursor over one of the lines and -use \\[occur-mode-goto-occurrence], to jump to the corresponding spot -in the Texinfo file. - - In addition, Texinfo mode provides commands that insert various -frequently used @-sign commands into the buffer. You can use these -commands to save keystrokes. And you can insert balanced braces with -\\[texinfo-insert-braces] and later use the command \\[up-list] to -move forward past the closing brace. - -Also, Texinfo mode provides functions for automatically creating or -updating menus and node pointers. These functions - - * insert the `Next', `Previous' and `Up' pointers of a node, - * insert or update the menu for a section, and - * create a master menu for a Texinfo source file. - -Here are the functions: - - texinfo-update-node \\[texinfo-update-node] - texinfo-every-node-update \\[texinfo-every-node-update] - texinfo-sequential-node-update - - texinfo-make-menu \\[texinfo-make-menu] - texinfo-all-menus-update \\[texinfo-all-menus-update] - texinfo-master-menu - - texinfo-indent-menu-description (column &optional region-p) - -The `texinfo-column-for-description' variable specifies the column to -which menu descriptions are indented. - -Passed an argument (a prefix argument, if interactive), the -`texinfo-update-node' and `texinfo-make-menu' functions do their jobs -in the region. - -To use the updating commands, you must structure your Texinfo file -hierarchically, such that each `@node' line, with the exception of the -Top node, is accompanied by some kind of section line, such as an -`@chapter' or `@section' line. - -If the file has a `top' node, it must be called `top' or `Top' and -be the first node in the file. - -Entering Texinfo mode calls the value of text-mode-hook, and then the -value of texinfo-mode-hook." - (interactive) - (text-mode) - (setq mode-name "Texinfo") - (setq major-mode 'texinfo-mode) - (use-local-map texinfo-mode-map) - (set-syntax-table texinfo-mode-syntax-table) - (make-local-variable 'page-delimiter) - (setq page-delimiter - (concat - "^@node [ \t]*[Tt]op\\|^@\\(" - texinfo-chapter-level-regexp - "\\)")) - (make-local-variable 'require-final-newline) - (setq require-final-newline t) - (make-local-variable 'indent-tabs-mode) - (setq indent-tabs-mode nil) - (make-local-variable 'paragraph-separate) - (setq paragraph-separate - (concat "\b\\|@[a-zA-Z]*[ \n]\\|" paragraph-separate)) - (make-local-variable 'paragraph-start) - (setq paragraph-start (concat "\b\\|@[a-zA-Z]*[ \n]\\|" paragraph-start)) - (make-local-variable 'fill-column) - (setq fill-column 72) - (make-local-variable 'comment-start) - (setq comment-start "@c ") - (make-local-variable 'comment-start-skip) - (setq comment-start-skip "@c +") - (make-local-variable 'words-include-escapes) - (setq words-include-escapes t) - (make-local-variable 'imenu-generic-expression) - (setq imenu-generic-expression texinfo-imenu-generic-expression) - (make-local-variable 'font-lock-defaults) - (setq font-lock-defaults '(texinfo-font-lock-keywords t)) - (make-local-variable 'outline-regexp) - (setq outline-regexp - (concat "@\\(" - (mapconcat 'car texinfo-section-list "\\>\\|") - "\\>\\)")) - (make-local-variable 'outline-level) - (setq outline-level 'texinfo-outline-level) - (make-local-variable 'tex-start-of-header) - (setq tex-start-of-header "%\\*\\*start") - (make-local-variable 'tex-end-of-header) - (setq tex-end-of-header "%\\*\\*end") - (make-local-variable 'tex-first-line-header-regexp) - (setq tex-first-line-header-regexp "^\\\\input") - (make-local-variable 'tex-trailer) - (setq tex-trailer "@bye\n") - (run-hooks 'text-mode-hook 'texinfo-mode-hook)) - - -;;; Insert string commands - -;; Keep as concatinated lists for ease of maintenance -(defconst texinfo-environment-regexp - (concat - "^@" - "\\(" - "cartouche\\|" - "display\\|" - "end\\|" - "enumerate\\|" - "example\\|" - "f?table\\|" - "flushleft\\|" - "flushright\\|" - "format\\|" - "group\\|" - "ifhtml\\|" - "ifinfo\\|" - "iftex\\|" - "ignore\\|" - "itemize\\|" - "lisp\\|" - "macro\\|" - "multitable\\|" - "quotation\\|" - "smallexample\\|" - "smalllisp\\|" - "tex" - "\\)") - "Regexp for environment-like TexInfo list commands. - Subexpression 1 is what goes into the corresponding `@end' statement.") - -;; The following texinfo-insert-@end command not only inserts a SPC -;; after the @end, but tries to find out what belongs there. It is -;; not very smart: it does not understand nested lists. - -(defun texinfo-insert-@end () - "Insert the matching `@end' for the last Texinfo command that needs one." - (interactive) - (let ((depth 1) string) - (save-excursion - (while (and (> depth 0) - (re-search-backward texinfo-environment-regexp nil t)) - (if (looking-at "@end") - (setq depth (1+ depth)) - (setq depth (1- depth)))) - (looking-at texinfo-environment-regexp) - (if (zerop depth) - (setq string - (buffer-substring (match-beginning 1) - (match-end 1))))) - (insert "@end ") - (if string (insert string "\n")))) - -;; The following insert commands accept a prefix arg N, which is the -;; number of words (actually s-exprs) that should be surrounded by -;; braces. Thus you can first paste a variable name into a .texinfo -;; buffer, then say C-u 1 C-c C-c v at the beginning of the just -;; pasted variable name to put @var{...} *around* the variable name. -;; Operate on previous word or words with negative arg. - -;; These commands use texinfo-insert-@-with-arg -(defun texinfo-insert-@-with-arg (string &optional arg) - (if arg - (progn - (setq arg (prefix-numeric-value arg)) - (if (< arg 0) - (progn - (skip-chars-backward " \t\n\r\f") - (save-excursion - (forward-sexp arg) - (insert "@" string "{")) - (insert "}")) - (skip-chars-forward " \t\n\r\f") - (insert "@" string "{") - (forward-sexp arg) - (insert "}"))) - (insert "@" string "{}") - (backward-char))) - -(defun texinfo-insert-braces () - "Make a pair of braces and be poised to type inside of them. -Use \\[up-list] to move forward out of the braces." - (interactive) - (insert "{}") - (backward-char)) - -(defun texinfo-insert-@code (&optional arg) - "Insert a `@code{...}' command in a Texinfo buffer. -A numeric argument says how many words the braces should surround. -The default is not to surround any existing words with the braces." - (interactive "P") - (texinfo-insert-@-with-arg "code" arg)) - -(defun texinfo-insert-@dfn (&optional arg) - "Insert a `@dfn{...}' command in a Texinfo buffer. -A numeric argument says how many words the braces should surround. -The default is not to surround any existing words with the braces." - (interactive "P") - (texinfo-insert-@-with-arg "dfn" arg)) - -(defun texinfo-insert-@example () - "Insert the string `@example' in a Texinfo buffer." - (interactive) - (insert "@example\n")) - -(defun texinfo-insert-@file (&optional arg) - "Insert a `@file{...}' command in a Texinfo buffer. -A numeric argument says how many words the braces should surround. -The default is not to surround any existing words with the braces." - (interactive "P") - (texinfo-insert-@-with-arg "file" arg)) - -(defun texinfo-insert-@item () - "Insert the string `@item' in a Texinfo buffer." - (interactive) - (insert "@item") - (newline)) - -(defun texinfo-insert-@kbd (&optional arg) - "Insert a `@kbd{...}' command in a Texinfo buffer. -A numeric argument says how many words the braces should surround. -The default is not to surround any existing words with the braces." - (interactive "P") - (texinfo-insert-@-with-arg "kbd" arg)) - -(defun texinfo-insert-@node () - "Insert the string `@node' in a Texinfo buffer. -This also inserts on the following line a comment indicating -the order of arguments to @node." - (interactive) - (insert "@node \n@comment node-name, next, previous, up") - (forward-line -1) - (forward-char 6)) - -(defun texinfo-insert-@noindent () - "Insert the string `@noindent' in a Texinfo buffer." - (interactive) - (insert "@noindent\n")) - -(defun texinfo-insert-@samp (&optional arg) - "Insert a `@samp{...}' command in a Texinfo buffer. -A numeric argument says how many words the braces should surround. -The default is not to surround any existing words with the braces." - (interactive "P") - (texinfo-insert-@-with-arg "samp" arg)) - -(defun texinfo-insert-@table (&optional arg) - "Insert the string `@table' in a Texinfo buffer." - (interactive "P") - (insert "@table ")) - -(defun texinfo-insert-@var (&optional arg) - "Insert a `@var{}' command in a Texinfo buffer. -A numeric argument says how many words the braces should surround. -The default is not to surround any existing words with the braces." - (interactive "P") - (texinfo-insert-@-with-arg "var" arg)) - -;;; Texinfo file structure - -;; These are defined in texnfo-upd.el. defvars here avoid warnings. -(defvar texinfo-section-types-regexp) -(defvar texinfo-section-level-regexp) -(defvar texinfo-subsection-level-regexp) -(defvar texinfo-subsubsection-level-regexp) - -(defun texinfo-show-structure (&optional nodes-too) - "Show the structure of a Texinfo file. -List the lines in the file that begin with the @-sign commands for -@chapter, @section, and the like. - -With optional argument (prefix if interactive), list both the lines -with @-sign commands for @chapter, @section, and the like, and list -@node lines. - -Lines with structuring commands beginning in them are displayed in -another buffer named `*Occur*'. In that buffer, you can move point to -one of those lines and then use \\<occur-mode-map>\\[occur-mode-goto-occurrence], -to jump to the corresponding spot in the Texinfo source file." - - (interactive "P") - (require 'texnfo-upd) - (save-excursion - (goto-char (point-min)) - (if nodes-too - (occur (concat "\\(^@node\\)\\|" texinfo-section-types-regexp)) - (occur texinfo-section-types-regexp))) - (pop-to-buffer "*Occur*") - (goto-char (point-min)) - (flush-lines "-----") - ;; Now format the "*Occur*" buffer to show the structure. - ;; Thanks to ceder@signum.se (Per Cederqvist) - (goto-char (point-max)) - (let ((margin 5)) - (while (re-search-backward "^ *[0-9]*:" nil 0) - (re-search-forward ":") - (setq margin - (cond - ((looking-at - (concat "@\\(" texinfo-chapter-level-regexp "\\)")) 5) - ;; ((looking-at "@chapter ") 5) - ;; ((looking-at "@unnumbered ") 5) - ;; ((looking-at "@appendix ") 5) - ;; ((looking-at "@majorheading ") 5) - ;; ((looking-at "@chapheading ") 5) - - ((looking-at - (concat "@\\(" texinfo-section-level-regexp "\\)")) 9) - ;; ((looking-at "@section ") 9) - ;; ((looking-at "@unnumberedsec ") 9) - ;; ((looking-at "@appendixsec ") 9) - ;; ((looking-at "@heading ") 9) - - ((looking-at - (concat "@\\(" texinfo-subsection-level-regexp "\\)")) 13) - ;; ((looking-at "@subsection ") 13) - ;; ((looking-at "@unnumberedsubsec ") 13) - ;; ((looking-at "@appendixsubsec ") 13) - ;; ((looking-at "@subheading ") 13) - - ((looking-at - (concat "@\\(" texinfo-subsubsection-level-regexp "\\)")) 17) - ;; ((looking-at "@subsubsection ") 17) - ;; ((looking-at "@unnumberedsubsubsec ") 17) - ;; ((looking-at "@appendixsubsubsec ") 17) - ;; ((looking-at "@subsubheading ") 17) - (t margin))) - (indent-to-column margin) - (beginning-of-line)))) - -;;; The tex and print function definitions: - -(defcustom texinfo-texi2dvi-command "texi2dvi" - "*Command used by `texinfo-tex-buffer' to run TeX and texindex on a buffer." - :type 'string - :group 'texinfo) - -(defcustom texinfo-tex-command "tex" - "*Command used by `texinfo-tex-region' to run TeX on a region." - :type 'string - :group 'texinfo) - -(defcustom texinfo-texindex-command "texindex" - "*Command used by `texinfo-texindex' to sort unsorted index files." - :type 'string - :group 'texinfo) - -(defcustom texinfo-delete-from-print-queue-command "lprm" - "*Command string used to delete a job from the line printer queue. -Command is used by \\[texinfo-delete-from-print-queue] based on -number provided by a previous \\[tex-show-print-queue] -command." - :type 'string - :group 'texinfo) - -(defvar texinfo-tex-trailer "@bye" - "String appended after a region sent to TeX by `texinfo-tex-region'.") - -(defun texinfo-tex-region (beg end) - "Run TeX on the current region. -This works by writing a temporary file (`tex-zap-file') in the directory -that is the value of `tex-directory', then running TeX on that file. - -The first line of the buffer is copied to the -temporary file; and if the buffer has a header, it is written to the -temporary file before the region itself. The buffer's header is all lines -between the strings defined by `tex-start-of-header' and `tex-end-of-header' -inclusive. The header must start in the first 100 lines. - -The value of `texinfo-tex-trailer' is appended to the temporary file after the region." - (interactive "r") - (require 'tex-mode) - (let ((tex-command texinfo-tex-command) - (tex-trailer "@bye\n")) - (tex-region beg end))) - -(defun texinfo-tex-buffer () - "Run TeX on visited file, once or twice, to make a correct `.dvi' file." - (interactive) - (require 'tex-mode) - (let ((tex-command texinfo-texi2dvi-command)) - (tex-buffer))) - -(defun texinfo-texindex () - "Run `texindex' on unsorted index files. -The index files are made by \\[texinfo-tex-region] or \\[texinfo-tex-buffer]. -This runs the shell command defined by `texinfo-texindex-command'." - (interactive) - (require 'tex-mode) - (tex-send-command texinfo-texindex-command (concat tex-zap-file ".??")) - ;; alternatively - ;; (send-string "tex-shell" - ;; (concat texinfo-texindex-command - ;; " " tex-zap-file ".??" "\n")) - (tex-recenter-output-buffer nil)) - -(defun texinfo-tex-print () - "Print `.dvi' file made by \\[texinfo-tex-region] or \\[texinfo-tex-buffer]. -This runs the shell command defined by `tex-dvi-print-command'." - (interactive) - (require 'tex-mode) - (tex-print)) - -(defun texinfo-tex-view () - "View `.dvi' file made by \\[texinfo-tex-region] or \\[texinfo-tex-buffer]. -This runs the shell command defined by `tex-dvi-view-command'." - (interactive) - (require 'tex-mode) - (tex-view)) - -(defun texinfo-quit-job () - "Quit currently running TeX job, by sending an `x' to it." - (interactive) - (if (not (get-process "tex-shell")) - (error "No TeX shell running")) - (tex-send-command "x")) -;; alternatively: -;; save-excursion -;; (set-buffer (get-buffer "*tex-shell*")) -;; (goto-char (point-max)) -;; (insert "x") -;; (comint-send-input) - -(defun texinfo-delete-from-print-queue (job-number) - "Delete job from the line printer spooling queue. -You are prompted for the job number (use a number shown by a previous -\\[tex-show-print-queue] command)." - (interactive "nPrinter job number for deletion: ") - (require 'tex-mode) - (if (tex-shell-running) - (tex-kill-job) - (tex-start-shell)) - (tex-send-command texinfo-delete-from-print-queue-command job-number) - ;; alternatively - ;; (send-string "tex-shell" - ;; (concat - ;; texinfo-delete-from-print-queue-command - ;; " " - ;; job-number"\n")) - (tex-recenter-output-buffer nil)) - -(provide 'texinfo) - -;;; texinfo.el ends here diff --git a/texinfo/emacs/texnfo-tex.el b/texinfo/emacs/texnfo-tex.el deleted file mode 100644 index 225ea685c04..00000000000 --- a/texinfo/emacs/texnfo-tex.el +++ /dev/null @@ -1,346 +0,0 @@ -;;;; texnfo-tex.el - -;;; Texinfo mode TeX and hardcopy printing commands. - -;; These commands are for running TeX on a region of a Texinfo file in -;; GNU Emacs, or on the whole buffer, and for printing the resulting -;; DVI file. - -;;; Version 2.07 22 October 1991 -;;; Robert J. Chassell -;;; Please send bug reports to: bug-texinfo@prep.ai.mit.edu - -;;; Copyright (C) 1989, 1990, 1991 Free Software Foundation, Inc. - - -;;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, - - -;;; The Texinfo mode TeX related commands are: - -; texinfo-tex-region to run tex on the current region. -; texinfo-tex-buffer to run tex on the current buffer. -; texinfo-texindex to sort unsorted index files. -; texinfo-tex-print to print the .dvi file made by tex. -; texinfo-kill-tex-job to kill the currently running tex job. -; texinfo-recenter-tex-output-buffer to redisplay tex output buffer. -; texinfo-show-tex-print-queue to show the print queue. - - -;;; Keys common both to Texinfo mode and to TeX shell. - -;; Defined in `texinfo.el' -; (defun texinfo-define-common-keys (keymap) -; "Define the keys both in Texinfo mode and in the texinfo-tex-shell." -; (define-key keymap "\C-c\C-t\C-k" 'texinfo-kill-tex-job) -; (define-key keymap "\C-c\C-t\C-x" 'texinfo-quit-tex-job) -; (define-key keymap "\C-c\C-t\C-l" 'texinfo-recenter-tex-output-buffer) -; (define-key keymap "\C-c\C-t\C-d" 'texinfo-delete-from-tex-print-queue) -; (define-key keymap "\C-c\C-t\C-q" 'texinfo-show-tex-print-queue) -; (define-key keymap "\C-c\C-t\C-p" 'texinfo-tex-print) -; (define-key keymap "\C-c\C-t\C-i" 'texinfo-texindex) -; (define-key keymap "\C-c\C-t\C-r" 'texinfo-tex-region) -; (define-key keymap "\C-c\C-t\C-b" 'texinfo-tex-buffer)) - -;; See also texinfo-tex-start-shell. -;; The following is executed in the `texinfo.el' file -;(texinfo-define-common-keys texinfo-mode-map) - - -;;; Variable definitions: - -(require 'shell) - -(defvar texinfo-tex-shell-cd-command "cd" - "Command to give to shell running TeX to change directory.") - -(defvar texinfo-tex-command "tex" - "*Command used by texinfo-tex-region to run tex on a region.") - -(defvar texinfo-texindex-command "texindex" - "*Command used by texinfo-texindex to sort unsorted index files.") - -(defvar texinfo-tex-dvi-print-command "lpr -d" - "*Command string used by \\[tex-print] to print a .dvi file.") - -(defvar texinfo-show-tex-queue-command "lpq" - "*Command string used to show the Texinfo TeX print queue. -Command is used by \\[texinfo-show-tex-print-queue] and it -should show the queue that \\[texinfo-tex-print] puts jobs on.") - -(defvar texinfo-delete-from-print-queue-command "lprm" - "*Command string used to delete a job from the line printer queue. -Command is used by \\[texinfo-delete-from-tex-print-queue] based on -number provided by a previous \\[texinfo-show-tex-print-queue] -command.") - -(defvar texinfo-tex-trailer "@bye" - "String appended after a region sent to TeX by texinfo-tex-region.") - -(defvar texinfo-tex-original-file "" - "Original name of file on which to run TeX.") - -(defvar texinfo-tex-temp-file nil - "Temporary file name used for text being sent as input to TeX.") - -(defvar texinfo-tex-root-temp-file nil - "Temporary file name used for text being sent as input to TeX.") - - -;;; Texinfo TeX main functions - -(defun texinfo-tex-region (beginning end) - "Run tex on the current region. - -A temporary file is written in the default directory, and tex is run -in that directory. The first line of the file is copied to the -temporary file; and if the buffer has a header, it is written to the -temporary file before the region itself. The buffer's header is all -lines between the strings defined by texinfo-start-of-header and -texinfo-end-of-header inclusive. The header must start in the first 100 -lines. The value of texinfo-tex-trailer is appended to the temporary file -after the region." - - (interactive "r") - (if (get-buffer "*texinfo-tex-shell*") - (quit-process (get-process "texinfo-tex-shell") t) - (texinfo-tex-start-shell)) - - (setq texinfo-tex-root-temp-file - (expand-file-name - (make-temp-name - (prin1-to-string (read (buffer-name)))))) - - (let ((texinfo-tex-temp-file (concat texinfo-tex-root-temp-file ".tex"))) - (save-excursion - (save-restriction - (widen) - (goto-char (point-min)) - (forward-line 100) - (let ((search-end (point)) - (header-beginning (point-min)) (header-end (point-min))) - (goto-char (point-min)) - ;; Copy first line, the `\input texinfo' line, to temp file - (write-region (point) - (save-excursion (forward-line 1) (point)) - texinfo-tex-temp-file nil nil) - ;; Don't copy first line twice if region includes it. - (forward-line 1) - (if (< beginning (point)) (setq beginning (point))) - ;; Initialize the temp file with either the header or nothing - (if (search-forward texinfo-start-of-header search-end t) - (progn - (beginning-of-line) - (setq header-beginning (point)) ; Mark beginning of header. - (if (search-forward texinfo-end-of-header nil t) - (progn (beginning-of-line) - (setq header-end (point))) ; Mark end of header. - (setq header-beginning (point-min))))) ; Else no header. - ;; Copy header to temp file. - (write-region - (min header-beginning beginning ) - header-end - texinfo-tex-temp-file t nil) - ;; Copy region to temp file. - (write-region - (max beginning header-end) - end - texinfo-tex-temp-file t nil) - ;; This is a kludge to insert the texinfo-tex-trailer into the - ;; texinfo-tex-temp-file. We have to create a special buffer - ;; in which to insert the texinfo-tex-trailer first because there is - ;; no function with which to append a literal string directly - ;; to a file. - (let ((local-tex-trailer texinfo-tex-trailer) - (temp-buffer (get-buffer-create " texinfo-trailer-buffer"))) - (set-buffer temp-buffer) - (erase-buffer) - ;; make sure trailer isn't hidden by a comment - (insert-string "\n") - (if local-tex-trailer (insert local-tex-trailer)) - (write-region (point-min) (point-max) - texinfo-tex-temp-file t nil))) - (set-process-sentinel (get-process "texinfo-tex-shell") - 'texinfo-tex-shell-sentinel) - (send-string "texinfo-tex-shell" - (concat texinfo-tex-shell-cd-command " " - default-directory "\n")) - (send-string "texinfo-tex-shell" - (concat texinfo-tex-command " " - texinfo-tex-temp-file "\n ")) - (texinfo-recenter-tex-output-buffer 0))))) - -(defun texinfo-tex-buffer (buffer) - "Run TeX on current buffer. -After running TeX the first time, you may have to run \\[texinfo-texindex] -and then \\[texinfo-tex-buffer] again." - (interactive - (list - ;; Sometimes you put point into *texinfo-tex-shell*; this prompts - ;; you for the correct file regardless. - (if (and - (string= (buffer-name (current-buffer)) "*texinfo-tex-shell*") - texinfo-tex-root-temp-file) - (read-string (format "Run TeX on: ") - texinfo-tex-original-file) - (read-string (format "Run TeX on: ") (buffer-name (current-buffer)))))) - - ;; Set to original buffer if in *texinfo-tex-shell*; otherwise, - ;; record name of current buffer. - (if (string= (buffer-name (current-buffer)) "*texinfo-tex-shell*") - (set-buffer buffer) - (setq texinfo-tex-original-file - (buffer-name (current-buffer)))) - - (if (get-buffer "*texinfo-tex-shell*") - (quit-process (get-process "texinfo-tex-shell") t) - (texinfo-tex-start-shell)) - (cond ((null buffer-file-name) - (error "Buffer not visiting any file!")) - ((buffer-modified-p) - (error "Buffer has been modified since last saved!")) - (t (set-process-sentinel (get-process "texinfo-tex-shell") - 'texinfo-tex-shell-sentinel) - (send-string "texinfo-tex-shell" - (concat texinfo-tex-shell-cd-command - " " - (file-name-directory - (buffer-file-name - (get-buffer buffer))) - "\n")) - (send-string "texinfo-tex-shell" - (concat texinfo-tex-command " " buffer "\n ")) - - ;; so the texinfo-tex-print command works - (setq texinfo-tex-root-temp-file - (substring buffer 0 - (or (string-match "\\.tex" buffer) - (length buffer)))) - - (texinfo-recenter-tex-output-buffer 0)))) - -(defun texinfo-texindex () - "Run texindex on unsorted index files. -The index files are made by \\[texinfo-tex-region] or \\[texinfo-tex-buffer]. -Runs the shell command defined by texinfo-texindex-command." - (interactive) - (send-string "texinfo-tex-shell" - (concat texinfo-texindex-command - " " texinfo-tex-root-temp-file ".??" "\n")) - (texinfo-recenter-tex-output-buffer nil)) - -(defun texinfo-tex-print () - "Print .dvi file made by \\[texinfo-tex-region] or \\[texinfo-tex-buffer]. -Runs the shell command defined by texinfo-tex-dvi-print-command." - (interactive) - (send-string "texinfo-tex-shell" - (concat texinfo-tex-dvi-print-command - " " texinfo-tex-root-temp-file ".dvi" "\n")) - (texinfo-recenter-tex-output-buffer nil)) - - -;;; Texinfo TeX utility functions - -(defun texinfo-tex-start-shell () - (save-excursion - (require 'texinfo) - (set-buffer (make-shell "texinfo-tex-shell" "/bin/sh" nil "-v")) - (setq texinfo-tex-shell-map (copy-keymap shell-mode-map)) - (texinfo-define-common-keys texinfo-tex-shell-map) - (use-local-map texinfo-tex-shell-map) - (run-hooks 'texinfo-tex-shell-hook) - (if (zerop (buffer-size)) - (sleep-for 1)))) - -(defun texinfo-quit-tex-job () - "Quit currently running TeX job, by sending an `x' to it." - (interactive) - (if (not (get-process "texinfo-tex-shell")) - (error "No TeX shell running.")) - (save-excursion - (set-buffer (get-buffer "*texinfo-tex-shell*")) - (goto-char (point-max)) - (insert "x") - (shell-send-input))) - -(defun texinfo-kill-tex-job () - "Kill the currently running TeX job." - (interactive) - (if (get-process "texinfo-tex-shell") - ;; Use `texinfo-tex-shell-sentinel' to restart - ;; texinfo-tex-shell after it is killed. - (kill-process (get-process "texinfo-tex-shell")))) - -(defun texinfo-tex-shell-sentinel (process event) - "Restart texinfo-tex-shell after it is killed." - (if (equal event "killed\n") - (save-excursion - (set-buffer "*texinfo-tex-shell*") - (insert "\n") - (texinfo-tex-start-shell)))) - -(defun texinfo-recenter-tex-output-buffer (linenum) - "Redisplay buffer of TeX job output so that most recent output can be seen. -The last line of the buffer is displayed on -line LINE of the window, or centered if LINE is nil." - (interactive "P") - (let ((texinfo-tex-shell (get-buffer "*texinfo-tex-shell*")) - (old-buffer (current-buffer))) - (if (null texinfo-tex-shell) - (message "No TeX output buffer") - (pop-to-buffer texinfo-tex-shell) - (bury-buffer texinfo-tex-shell) - (goto-char (point-max)) - (recenter (if linenum - (prefix-numeric-value linenum) - (/ (window-height) 2))) - (pop-to-buffer old-buffer) - ))) - -(defun texinfo-show-tex-print-queue () - "Show the print queue that \\[texinfo-tex-print] put your job on. -Runs the shell command defined by texinfo-show-tex-queue-command." - (interactive) - (if (not (texinfo-tex-shell-running-p)) - (texinfo-tex-start-shell)) - (send-string "texinfo-tex-shell" - (concat texinfo-show-tex-queue-command "\n")) - (texinfo-recenter-tex-output-buffer nil)) - -(defun texinfo-delete-from-tex-print-queue (job-number) - "Delete job from the line printer spooling queue. -You are prompted for the job number (shown by a previous -\\[texinfo-show-tex-print-queue] command." - (interactive "nPrinter job number for deletion: ") - (if (texinfo-tex-shell-running-p) - (texinfo-kill-tex-job) - (texinfo-tex-start-shell)) - (send-string "texinfo-tex-shell" - (concat - texinfo-delete-from-print-queue-command - " " - job-number"\n")) - (texinfo-recenter-tex-output-buffer nil)) - -(defun texinfo-tex-shell-running-p () - (and (get-process "texinfo-tex-shell") - (eq (process-status (get-process "texinfo-tex-shell")) 'run))) - - -;;; Place `provide' at end of file. -(provide 'texnfo-tex) -;;;;;;;;;;;;;;;; end texnfo-tex.el ;;;;;;;;;;;;;;;; diff --git a/texinfo/emacs/texnfo-upd.el b/texinfo/emacs/texnfo-upd.el deleted file mode 100644 index 516c1a6130b..00000000000 --- a/texinfo/emacs/texnfo-upd.el +++ /dev/null @@ -1,2062 +0,0 @@ -;;; texnfo-upd.el --- utilities for updating nodes and menus in Texinfo files - -;; Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc. - -;; Author: Robert J. Chassell -;; Maintainer: bug-texinfo@prep.ai.mit.edu -;; Keywords: maint, tex, docs - -;; This file is part of GNU Emacs. - -;; GNU Emacs is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; GNU Emacs is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. - -;;; Commentary: - -;; Known bug: update commands fail to ignore @ignore. - -;; Summary: how to use the updating commands - -;; The node and menu updating functions automatically - -;; * insert missing `@node' lines, -;; * insert the `Next', `Previous' and `Up' pointers of a node, -;; * insert or update the menu for a section, -;; * create a master menu for a Texinfo source file. -;; -;; With a prefix argument, the `texinfo-update-node' and -;; `texinfo-make-menu' functions do their jobs in the region. -;; -;; In brief, the functions for creating or updating nodes and menus, are: -;; -;; texinfo-update-node (&optional beginning end) -;; texinfo-every-node-update () -;; texinfo-sequential-node-update (&optional region-p) -;; -;; texinfo-make-menu (&optional beginning end) -;; texinfo-all-menus-update () -;; texinfo-master-menu () -;; -;; texinfo-insert-node-lines (&optional title-p) -;; -;; texinfo-indent-menu-description (column &optional region-p) - -;; The `texinfo-column-for-description' variable specifies the column to -;; which menu descriptions are indented. - -;; Texinfo file structure -;; ---------------------- - -;; To use the updating commands, you must structure your Texinfo file -;; hierarchically. Each `@node' line, with the exception of the top -;; node, must be accompanied by some kind of section line, such as an -;; `@chapter' or `@section' line. Each node-line/section-line -;; combination must look like this: - -;; @node Lists and Tables, Cross References, Structuring, Top -;; @comment node-name, next, previous, up -;; @chapter Making Lists and Tables - -;; or like this (without the `@comment' line): - -;; @node Lists and Tables, Cross References, Structuring, Top -;; @chapter Making Lists and Tables - -;; If the file has a `top' node, it must be called `top' or `Top' and -;; be the first node in the file. - - -;;; The update node functions described in detail - -;; The `texinfo-update-node' command with no prefix argument inserts -;; the correct next, previous and up pointers for the node in which -;; point is located (i.e., for the node preceding point). - -;; With prefix argument, the `texinfo-update-node' function inserts the -;; correct next, previous and up pointers for the nodes inside the -;; region. - -;; It does not matter whether the `@node' line has pre-existing -;; `Next', `Previous', or `Up' pointers in it. They are removed. - -;; The `texinfo-every-node-update' function runs `texinfo-update-node' -;; on the whole buffer. - -;; The `texinfo-sequential-node-update' function inserts the -;; immediately following and preceding node into the `Next' or -;; `Previous' pointers regardless of their hierarchical level. This is -;; only useful for certain kinds of text, like a novel, which you go -;; through sequentially. - - -;;; The menu making functions described in detail - -;; The `texinfo-make-menu' function without an argument creates or -;; updates a menu for the section encompassing the node that follows -;; point. With an argument, it makes or updates menus for the nodes -;; within or part of the marked region. - -;; Whenever an existing menu is updated, the descriptions from -;; that menu are incorporated into the new menu. This is done by copying -;; descriptions from the existing menu to the entries in the new menu -;; that have the same node names. If the node names are different, the -;; descriptions are not copied to the new menu. - -;; Menu entries that refer to other Info files are removed since they -;; are not a node within current buffer. This is a deficiency. - -;; The `texinfo-all-menus-update' function runs `texinfo-make-menu' -;; on the whole buffer. - -;; The `texinfo-master-menu' function creates an extended menu located -;; after the top node. (The file must have a top node.) The function -;; first updates all the regular menus in the buffer (incorporating the -;; descriptions from pre-existing menus), and then constructs a master -;; menu that includes every entry from every other menu. (However, the -;; function cannot update an already existing master menu; if one -;; exists, it must be removed before calling the function.) - -;; The `texinfo-indent-menu-description' function indents every -;; description in the menu following point, to the specified column. -;; Non-nil argument (prefix, if interactive) means indent every -;; description in every menu in the region. This function does not -;; indent second and subsequent lines of a multi-line description. - -;; The `texinfo-insert-node-lines' function inserts `@node' before the -;; `@chapter', `@section', and such like lines of a region in a Texinfo -;; file where the `@node' lines are missing. -;; -;; With a non-nil argument (prefix, if interactive), the function not -;; only inserts `@node' lines but also inserts the chapter or section -;; titles as the names of the corresponding nodes; and inserts titles -;; as node names in pre-existing `@node' lines that lack names. -;; -;; Since node names should be more concise than section or chapter -;; titles, node names so inserted will need to be edited manually. - - -;;; Code: - -(defvar texinfo-master-menu-header - " --- The Detailed Node Listing ---\n" - "String inserted before lower level entries in Texinfo master menu. -It comes after the chapter-level menu entries.") - -(defun texinfo-make-menu (&optional beginning end) - "Without any prefix argument, make or update a menu. -Make the menu for the section enclosing the node found following point. - -A prefix argument means make or update menus -for nodes within or part of the marked region. - -Whenever a menu exists, and is being updated, the descriptions that -are associated with node names in the pre-existing menu are -incorporated into the new menu. Otherwise, the nodes' section titles -are inserted as descriptions." - - (interactive - (if prefix-arg - (list (point) (mark)))) - (if (null beginning) - (let ((level (texinfo-hierarchic-level))) - (texinfo-make-one-menu level) - (message "Menu updated")) - ;; else - (message "Making or updating menus in %s... " (buffer-name)) - (save-excursion - (goto-char (min beginning end)) - ;; find section type following point - (let ((level (texinfo-hierarchic-level)) - (region-end (max beginning end))) - (save-restriction - (widen) - - (while (texinfo-find-lower-level-node level region-end) - (setq level (texinfo-hierarchic-level)) ; new, lower level - (texinfo-make-one-menu level)) - - (while (and (< (point) region-end) - (texinfo-find-higher-level-node level region-end)) - (setq level (texinfo-hierarchic-level)) - (while (texinfo-find-lower-level-node level region-end) - (setq level (texinfo-hierarchic-level)) ; new, lower level - (texinfo-make-one-menu level)))))) - (message "Making or updating menus in %s...done" (buffer-name)))) - -(defun texinfo-make-one-menu (level) - "Make a menu of all the appropriate nodes in this section. -`Appropriate nodes' are those associated with sections that are -at the level specified by LEVEL. Point is left at the end of menu." - (let* - ((case-fold-search t) - (beginning - (save-excursion - (goto-char (texinfo-update-menu-region-beginning level)) - (end-of-line) - (point))) - (end (texinfo-update-menu-region-end level)) - (first (texinfo-menu-first-node beginning end)) - (node-name (progn - (goto-char beginning) - (beginning-of-line) - (texinfo-copy-node-name))) - (new-menu-list (texinfo-make-menu-list beginning end level))) - (if (texinfo-old-menu-p beginning first) - (progn - (texinfo-incorporate-descriptions new-menu-list) - (texinfo-incorporate-menu-entry-names new-menu-list) - (texinfo-delete-old-menu beginning first))) - (texinfo-insert-menu new-menu-list node-name))) - -(defun texinfo-all-menus-update (&optional update-all-nodes-p) - "Update every regular menu in a Texinfo file. -Update pre-existing master menu, if there is one. - -If called with a non-nil argument, this function first updates all the -nodes in the buffer before updating the menus." - (interactive "P") - (let ((case-fold-search t) - master-menu-p) - (save-excursion - (push-mark (point-max) t) - (goto-char (point-min)) - (message "Checking for a master menu in %s ... "(buffer-name)) - (save-excursion - (if (search-forward texinfo-master-menu-header nil t) - (progn - ;; Check if @detailmenu kludge is used; - ;; if so, leave point before @detailmenu. - (search-backward "\n@detailmenu" - (save-excursion (forward-line -3) (point)) - t) - ;; Remove detailed master menu listing - (setq master-menu-p t) - (goto-char (match-beginning 0)) - (let ((end-of-detailed-menu-descriptions - (save-excursion ; beginning of end menu line - (goto-char (texinfo-menu-end)) - (beginning-of-line) (forward-char -1) - (point)))) - (delete-region (point) end-of-detailed-menu-descriptions))))) - - (if update-all-nodes-p - (progn - (message "Updating all nodes in %s ... " (buffer-name)) - (sleep-for 2) - (texinfo-update-node (point-min) (point-max)))) - - (message "Updating all menus in %s ... " (buffer-name)) - (sleep-for 2) - (texinfo-make-menu (point-max) (point-min)) - - (if master-menu-p - (progn - (message "Updating the master menu in %s... " (buffer-name)) - (sleep-for 2) - (texinfo-master-menu nil)))) - - (message "Done...updated all the menus. You may save the buffer."))) - -(defun texinfo-find-lower-level-node (level region-end) - "Search forward from point for node at any level lower than LEVEL. -Search is limited to the end of the marked region, REGION-END, -and to the end of the menu region for the level. - -Return t if the node is found, else nil. Leave point at the beginning -of the node if one is found; else do not move point." - (let ((case-fold-search t)) - (if (and (< (point) region-end) - (re-search-forward - (concat - "\\(^@node\\).*\n" ; match node line - "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any - "\\|" ; or - "\\(^@ifinfo[ ]*\n\\)\\)?" ; ifinfo line, if any - (eval (cdr (assoc level texinfo-update-menu-lower-regexps)))) - ;; the next higher level node marks the end of this - ;; section, and no lower level node will be found beyond - ;; this position even if region-end is farther off - (texinfo-update-menu-region-end level) - t)) - (goto-char (match-beginning 1))))) - -(defun texinfo-find-higher-level-node (level region-end) - "Search forward from point for node at any higher level than argument LEVEL. -Search is limited to the end of the marked region, REGION-END. - -Return t if the node is found, else nil. Leave point at the beginning -of the node if one is found; else do not move point." - (let ((case-fold-search t)) - (cond - ((or (string-equal "top" level) (string-equal "chapter" level)) - (if (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" region-end t) - (progn (beginning-of-line) t))) - (t - (if (re-search-forward - (concat - "\\(^@node\\).*\n" ; match node line - "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any - "\\|" ; or - "\\(^@ifinfo[ ]*\n\\)\\)?" ; ifinfo line, if any - (eval (cdr (assoc level texinfo-update-menu-higher-regexps)))) - region-end t) - (progn (beginning-of-line) t)))))) - - -;;; Making the list of new menu entries - -(defun texinfo-make-menu-list (beginning end level) - "Make a list of node names and their descriptions. -Point is left at the end of the menu region, but the menu is not inserted. - -First argument is position from which to start making menu list; -second argument is end of region in which to try to locate entries; -third argument is the level of the nodes that are the entries. - -Node names and descriptions are dotted pairs of strings. Each pair is -an element of the list. If the description does not exist, the -element consists only of the node name." - (goto-char beginning) - (let (new-menu-list) - (while (texinfo-menu-locate-entry-p level end) - (setq new-menu-list - (cons (cons - (texinfo-copy-node-name) - (prog1 "" (forward-line 1))) - ;; Use following to insert section titles automatically. - ;; (texinfo-copy-section-title)) - new-menu-list))) - (reverse new-menu-list))) - -(defun texinfo-menu-locate-entry-p (level search-end) - "Find a node that will be part of menu for this section. -First argument is a string such as \"section\" specifying the general -hierarchical level of the menu; second argument is a position -specifying the end of the search. - -The function returns t if the node is found, else nil. It searches -forward from point, and leaves point at the beginning of the node. - -The function finds entries of the same type. Thus `subsections' and -`unnumberedsubsecs' will appear in the same menu." - (let ((case-fold-search t)) - (if (re-search-forward - (concat - "\\(^@node\\).*\n" ; match node line - "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any - "\\|" ; or - "\\(^@ifinfo[ ]*\n\\)\\)?" ; ifinfo line, if any - (eval - (cdr (assoc level texinfo-update-menu-same-level-regexps)))) - search-end - t) - (goto-char (match-beginning 1))))) - -(defun texinfo-copy-node-name () - "Return the node name as a string. - -Start with point at the beginning of the node line; copy the text -after the node command up to the first comma on the line, if any, and -return the text as a string. Leaves point at the beginning of the -line. If there is no node name, returns an empty string." - - (save-excursion - (buffer-substring - (progn (forward-word 1) ; skip over node command - (skip-chars-forward " \t") ; and over spaces - (point)) - (if (search-forward - "," - (save-excursion (end-of-line) (point)) t) ; bound search - (1- (point)) - (end-of-line) (point))))) - -(defun texinfo-copy-section-title () - "Return the title of the section as a string. -The title is used as a description line in the menu when one does not -already exist. - -Move point to the beginning of the appropriate section line by going -to the start of the text matched by last regexp searched for, which -must have been done by `texinfo-menu-locate-entry-p'." - - ;; could use the same re-search as in `texinfo-menu-locate-entry-p' - ;; instead of using `match-beginning'; such a variation would be - ;; more general, but would waste information already collected - - (goto-char (match-beginning 7)) ; match section name - - (buffer-substring - (progn (forward-word 1) ; skip over section type - (skip-chars-forward " \t") ; and over spaces - (point)) - (progn (end-of-line) (point)))) - - -;;; Handling the old menu - -(defun texinfo-old-menu-p (beginning first) - "Move point to the beginning of the menu for this section, if any. -Otherwise move point to the end of the first node of this section. -Return t if a menu is found, nil otherwise. - -First argument is the position of the beginning of the section in which -the menu will be located; second argument is the position of the first -node within the section. - -If no menu is found, the function inserts two newlines just before the -end of the section, and leaves point there where a menu ought to be." - (goto-char beginning) - (if (not (re-search-forward "^@menu" first 'goto-end)) - (progn (insert "\n\n") (forward-line -2) nil) - t)) - -(defun texinfo-incorporate-descriptions (new-menu-list) - "Copy the old menu line descriptions that exist to the new menu. - -Point must be at beginning of old menu. - -If the node-name of the new menu is found in the old menu, insert the -old description into the new entry. - -For this function, the new menu is a list made up of lists of dotted -pairs in which the first element of the pair is the node name and the -second element the description. The new menu is changed destructively. -The old menu is the menu as it appears in the Texinfo file." - - (let ((new-menu-list-pointer new-menu-list) - (end-of-menu (texinfo-menu-end))) - (while new-menu-list - (save-excursion ; keep point at beginning of menu - (if (re-search-forward - ;; Existing nodes can have the form - ;; * NODE NAME:: DESCRIPTION - ;; or - ;; * MENU ITEM: NODE NAME. DESCRIPTION. - ;; - ;; Recognize both when looking for the description. - (concat "\\* \\(" ; so only menu entries are found - (regexp-quote (car (car new-menu-list))) "::" - "\\|" - ".*: " (regexp-quote (car (car new-menu-list))) "[.,\t\n]" - "\\)" - ) ; so only complete entries are found - end-of-menu - t) - (setcdr (car new-menu-list) - (texinfo-menu-copy-old-description end-of-menu)))) - (setq new-menu-list (cdr new-menu-list))) - (setq new-menu-list new-menu-list-pointer))) - -(defun texinfo-incorporate-menu-entry-names (new-menu-list) - "Copy any old menu entry names to the new menu. - -Point must be at beginning of old menu. - -If the node-name of the new menu entry cannot be found in the old -menu, do nothing. - -For this function, the new menu is a list made up of lists of dotted -pairs in which the first element of the pair is the node name and the -second element is the description (or nil). - -If we find an existing menu entry name, we change the first element of -the pair to be another dotted pair in which the car is the menu entry -name and the cdr is the node name. - -NEW-MENU-LIST is changed destructively. The old menu is the menu as it -appears in the texinfo file." - - (let ((new-menu-list-pointer new-menu-list) - (end-of-menu (texinfo-menu-end))) - (while new-menu-list - (save-excursion ; keep point at beginning of menu - (if (re-search-forward - ;; Existing nodes can have the form - ;; * NODE NAME:: DESCRIPTION - ;; or - ;; * MENU ITEM: NODE NAME. DESCRIPTION. - ;; - ;; We're interested in the second case. - (concat "\\* " ; so only menu entries are found - "\\(.*\\): " (car (car new-menu-list)) "[.,\t\n]") - end-of-menu - t) - (setcar - (car new-menu-list) ; replace the node name - (cons (buffer-substring (match-beginning 1) (match-end 1)) - (car (car new-menu-list))))) - (setq new-menu-list (cdr new-menu-list)))) - (setq new-menu-list new-menu-list-pointer))) - -(defun texinfo-menu-copy-old-description (end-of-menu) - "Return description field of old menu line as string. -Point must be located just after the node name. Point left before description. -Single argument, END-OF-MENU, is position limiting search." - (skip-chars-forward "[:.,\t\n ]+") - ;; don't copy a carriage return at line beginning with asterisk! - ;; do copy a description that begins with an `@'! - ;; !! Known bug: does not copy descriptions starting with ^|\{?* etc. - (if (and (looking-at "\\(\\w+\\|@\\)") - (not (looking-at "\\(^\\* \\|^@end menu\\)"))) - (buffer-substring - (point) - (save-excursion - (re-search-forward "\\(^\\* \\|^@end menu\\)" end-of-menu t) - (forward-line -1) - (end-of-line) ; go to end of last description line - (point))) - "")) - -(defun texinfo-menu-end () - "Return position of end of menu, but don't move point. -Signal an error if not end of menu." - (save-excursion - (if (re-search-forward "^@end menu" nil t) - (point) - (error "Menu does not have an end.")))) - -(defun texinfo-delete-old-menu (beginning first) - "Delete the old menu. Point must be in or after menu. -First argument is position of the beginning of the section in which -the menu will be located; second argument is the position of the first -node within the section." - ;; No third arg to search, so error if search fails. - (re-search-backward "^@menu" beginning) - (delete-region (point) - (save-excursion - (re-search-forward "^@end menu" first) - (point)))) - - -;;; Inserting new menu - -;; try 32, but perhaps 24 is better -(defvar texinfo-column-for-description 32 - "*Column at which descriptions start in a Texinfo menu.") - -(defun texinfo-insert-menu (menu-list node-name) - "Insert formatted menu at point. -Indents the first line of the description, if any, to the value of -texinfo-column-for-description. - -MENU-LIST has form: - - \(\(\"node-name1\" . \"description\"\) - \(\"node-name2\" . \"description\"\) ... \) - -However, the description field might be nil. - -Also, the node-name field might itself be a dotted pair (call it P) of -strings instead of just a string. In that case, the car of P -is the menu entry name, and the cdr of P is the node name." - - (insert "@menu\n") - (while menu-list - ;; Every menu entry starts with a star and a space. - (insert "* ") - - ;; Insert the node name (and menu entry name, if present). - (let ((node-part (car (car menu-list)))) - (if (stringp node-part) - ;; "Double colon" entry line; menu entry and node name are the same, - (insert (format "%s::" node-part)) - ;; "Single colon" entry line; menu entry and node name are different. - (insert (format "%s: %s." (car node-part) (cdr node-part))))) - - ;; Insert the description, if present. - (if (cdr (car menu-list)) - (progn - ;; Move to right place. - (indent-to texinfo-column-for-description 2) - ;; Insert description. - (insert (format "%s" (cdr (car menu-list)))))) - - (insert "\n") ; end this menu entry - (setq menu-list (cdr menu-list))) - (insert "@end menu") - (message - "Updated \"%s\" level menu following node: %s ... " level node-name)) - - -;;; Starting menu descriptions by inserting titles - -(defun texinfo-start-menu-description () - "In this menu entry, insert the node's section title as a description. -Position point at beginning of description ready for editing. -Do not insert a title if the line contains an existing description. - -You will need to edit the inserted text since a useful description -complements the node name rather than repeats it as a title does." - - (interactive) - (let (beginning end node-name title) - (save-excursion - (beginning-of-line) - (if (search-forward "* " (save-excursion (end-of-line) (point)) t) - (progn (skip-chars-forward " \t") - (setq beginning (point))) - (error "This is not a line in a menu!")) - - (cond - ;; "Double colon" entry line; menu entry and node name are the same, - ((search-forward "::" (save-excursion (end-of-line) (point)) t) - (if (looking-at "[ \t]*[^ \t\n]+") - (error "Descriptive text already exists.")) - (skip-chars-backward ": \t") - (setq node-name (buffer-substring beginning (point)))) - - ;; "Single colon" entry line; menu entry and node name are different. - ((search-forward ":" (save-excursion (end-of-line) (point)) t) - (skip-chars-forward " \t") - (setq beginning (point)) - ;; Menu entry line ends in a period, comma, or tab. - (if (re-search-forward "[.,\t]" - (save-excursion (forward-line 1) (point)) t) - (progn - (if (looking-at "[ \t]*[^ \t\n]+") - (error "Descriptive text already exists.")) - (skip-chars-backward "., \t") - (setq node-name (buffer-substring beginning (point)))) - ;; Menu entry line ends in a return. - (re-search-forward ".*\n" - (save-excursion (forward-line 1) (point)) t) - (skip-chars-backward " \t\n") - (setq node-name (buffer-substring beginning (point))) - (if (= 0 (length node-name)) - (error "No node name on this line.") - (insert ".")))) - (t (error "No node name on this line."))) - ;; Search for node that matches node name, and copy the section title. - (if (re-search-forward - (concat - "^@node[ \t]+" - node-name - ".*\n" ; match node line - "\\(" - "\\(\\(^@c \\|^@comment\\).*\n\\)" ; match comment line, if any - "\\|" ; or - "\\(^@ifinfo[ ]*\n\\)" ; ifinfo line, if any - "\\)?") - nil t) - (progn - (setq title - (buffer-substring - ;; skip over section type - (progn (forward-word 1) - ;; and over spaces - (skip-chars-forward " \t") - (point)) - (progn (end-of-line) - (skip-chars-backward " \t") - (point))))) - (error "Cannot find node to match node name in menu entry."))) - ;; Return point to the menu and insert the title. - (end-of-line) - (delete-region - (point) - (save-excursion (skip-chars-backward " \t") (point))) - (indent-to texinfo-column-for-description 2) - (save-excursion (insert title)))) - - -;;; Handling description indentation - -;; Since the make-menu functions indent descriptions, these functions -;; are useful primarily for indenting a single menu specially. - -(defun texinfo-indent-menu-description (column &optional region-p) - "Indent every description in menu following point to COLUMN. -Non-nil argument (prefix, if interactive) means indent every -description in every menu in the region. Does not indent second and -subsequent lines of a multi-line description." - - (interactive - "nIndent menu descriptions to (column number): \nP") - (save-excursion - (save-restriction - (widen) - (if (not region-p) - (progn - (re-search-forward "^@menu") - (texinfo-menu-indent-description column) - (message - "Indented descriptions in menu. You may save the buffer.")) - ;;else - (message "Indenting every menu description in region... ") - (goto-char (region-beginning)) - (while (and (< (point) (region-end)) - (texinfo-locate-menu-p)) - (forward-line 1) - (texinfo-menu-indent-description column)) - (message "Indenting done. You may save the buffer."))))) - -(defun texinfo-menu-indent-description (to-column-number) - "Indent the Texinfo file menu description to TO-COLUMN-NUMBER. -Start with point just after the word `menu' in the `@menu' line and -leave point on the line before the `@end menu' line. Does not indent -second and subsequent lines of a multi-line description." - (let* ((beginning-of-next-line (point))) - (while (< beginning-of-next-line - (save-excursion ; beginning of end menu line - (goto-char (texinfo-menu-end)) - (beginning-of-line) - (point))) - - (if (re-search-forward "\\* \\(.*::\\|.*: [^.,\t\n]+[.,\t]\\)" - (texinfo-menu-end) - t) - (progn - (let ((beginning-white-space (point))) - (skip-chars-forward " \t") ; skip over spaces - (if (looking-at "\\(@\\|\\w\\)+") ; if there is text - (progn - ;; remove pre-existing indentation - (delete-region beginning-white-space (point)) - (indent-to-column to-column-number)))))) - ;; position point at beginning of next line - (forward-line 1) - (setq beginning-of-next-line (point))))) - - -;;; Making the master menu - -(defun texinfo-master-menu (update-all-nodes-menus-p) - "Make a master menu for a whole Texinfo file. -Non-nil argument (prefix, if interactive) means first update all -existing nodes and menus. Remove pre-existing master menu, if there is one. - -This function creates a master menu that follows the top node. The -master menu includes every entry from all the other menus. It -replaces any existing ordinary menu that follows the top node. - -If called with a non-nil argument, this function first updates all the -menus in the buffer (incorporating descriptions from pre-existing -menus) before it constructs the master menu. - -The function removes the detailed part of an already existing master -menu. This action depends on the pre-existing master menu using the -standard `texinfo-master-menu-header'. - -The master menu has the following format, which is adapted from the -recommendation in the Texinfo Manual: - - * The first part contains the major nodes in the Texinfo file: the - nodes for the chapters, chapter-like sections, and the major - appendices. This includes the indices, so long as they are in - chapter-like sections, such as unnumbered sections. - - * The second and subsequent parts contain a listing of the other, - lower level menus, in order. This way, an inquirer can go - directly to a particular node if he or she is searching for - specific information. - -Each of the menus in the detailed node listing is introduced by the -title of the section containing the menu." - - (interactive "P") - (let ((case-fold-search t)) - (widen) - (goto-char (point-min)) - - ;; Move point to location after `top'. - (if (not (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" nil t)) - (error "This buffer needs a Top node!")) - - (let ((first-chapter - (save-excursion - (or (re-search-forward "^@node" nil t) - (error "Too few nodes for a master menu!")) - (point)))) - (if (search-forward texinfo-master-menu-header first-chapter t) - (progn - ;; Check if @detailmenu kludge is used; - ;; if so, leave point before @detailmenu. - (search-backward "\n@detailmenu" - (save-excursion (forward-line -3) (point)) - t) - ;; Remove detailed master menu listing - (goto-char (match-beginning 0)) - (let ((end-of-detailed-menu-descriptions - (save-excursion ; beginning of end menu line - (goto-char (texinfo-menu-end)) - (beginning-of-line) (forward-char -1) - (point)))) - (delete-region (point) end-of-detailed-menu-descriptions))))) - - (if update-all-nodes-menus-p - (progn - (message "Making a master menu in %s ...first updating all nodes... " - (buffer-name)) - (sleep-for 2) - (texinfo-update-node (point-min) (point-max)) - - (message "Updating all menus in %s ... " (buffer-name)) - (sleep-for 2) - (texinfo-make-menu (point-min) (point-max)))) - - (message "Now making the master menu in %s... " (buffer-name)) - (sleep-for 2) - (goto-char (point-min)) - (texinfo-insert-master-menu-list - (texinfo-master-menu-list)) - - ;; Remove extra newlines that texinfo-insert-master-menu-list - ;; may have inserted. - - (save-excursion - (goto-char (point-min)) - - (if (search-forward texinfo-master-menu-header nil t) - (progn - (goto-char (match-beginning 0)) - ;; Check if @detailmenu kludge is used; - ;; if so, leave point before @detailmenu. - (search-backward "\n@detailmenu" - (save-excursion (forward-line -3) (point)) - t) - (insert "\n") - (delete-blank-lines) - (goto-char (point-min)))) - - (re-search-forward "^@menu") - (forward-line -1) - (delete-blank-lines) - - (re-search-forward "^@end menu") - (forward-line 1) - (delete-blank-lines)) - - (message - "Done...completed making master menu. You may save the buffer."))) - -(defun texinfo-master-menu-list () - "Return a list of menu entries and header lines for the master menu. - -Start with the menu for chapters and indices and then find each -following menu and the title of the node preceding that menu. - -The master menu list has this form: - - \(\(\(... \"entry-1-2\" \"entry-1\"\) \"title-1\"\) - \(\(... \"entry-2-2\" \"entry-2-1\"\) \"title-2\"\) - ...\) - -However, there does not need to be a title field." - - (let (master-menu-list) - (while (texinfo-locate-menu-p) - (setq master-menu-list - (cons (list - (texinfo-copy-menu) - (texinfo-copy-menu-title)) - master-menu-list))) - (reverse master-menu-list))) - -(defun texinfo-insert-master-menu-list (master-menu-list) - "Format and insert the master menu in the current buffer." - (goto-char (point-min)) - ;; Insert a master menu only after `Top' node and before next node - ;; \(or include file if there is no next node\). - (if (not (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" nil t)) - (error "This buffer needs a Top node!")) - (let ((first-chapter - (save-excursion (re-search-forward "^@node\\|^@include") (point)))) - (if (not (re-search-forward "^@menu" first-chapter t)) - (error - "Buffer lacks ordinary `Top' menu in which to insert master."))) - (beginning-of-line) - (delete-region ; buffer must have ordinary top menu - (point) - (save-excursion (re-search-forward "^@end menu") (point))) - - (save-excursion - ;; `master-menu-inserted-p' is a kludge to tell - ;; whether to insert @end detailmenu (see bleow) - (let (master-menu-inserted-p) - ;; Handle top of menu - (insert "\n@menu\n") - ;; Insert chapter menu entries - (setq this-very-menu-list (reverse (car (car master-menu-list)))) - ;; Tell user what is going on. - (message "Inserting chapter menu entry: %s ... " this-very-menu-list) - (while this-very-menu-list - (insert "* " (car this-very-menu-list) "\n") - (setq this-very-menu-list (cdr this-very-menu-list))) - - (setq master-menu-list (cdr master-menu-list)) - - ;; Only insert detailed master menu if there is one.... - (if (car (car master-menu-list)) - (progn (setq master-menu-inserted-p t) - (insert (concat "\n@detailmenu" texinfo-master-menu-header)))) - - ;; @detailmenu added 5 Sept 1996 to `texinfo-master-menu-header' - ;; at Karl Berry's request to avert a bug in `makeinfo'; - ;; all agree this is a bad kludge and should eventually be removed. - ;; @detailmenu ... @end detailmenu is a noop in `texinfmt.el'. - ;; See @end detailmenu below; - ;; also see `texinfo-all-menus-update' above, `texinfo-master-menu', - ;; `texinfo-multiple-files-update'. - - ;; Now, insert all the other menus - - ;; The menu master-menu-list has a form like this: - ;; ((("beta" "alpha") "title-A") - ;; (("delta" "gamma") "title-B")) - - (while master-menu-list - - (message - "Inserting menu for %s .... " (car (cdr (car master-menu-list)))) - ;; insert title of menu section - (insert "\n" (car (cdr (car master-menu-list))) "\n\n") - - ;; insert each menu entry - (setq this-very-menu-list (reverse (car (car master-menu-list)))) - (while this-very-menu-list - (insert "* " (car this-very-menu-list) "\n") - (setq this-very-menu-list (cdr this-very-menu-list))) - - (setq master-menu-list (cdr master-menu-list))) - - ;; Finish menu - - ;; @detailmenu (see note above) - ;; Only insert @end detailmenu if a master menu was inserted. - (if master-menu-inserted-p - (insert "\n@end detailmenu")) - (insert "\n@end menu\n\n")))) - -(defun texinfo-locate-menu-p () - "Find the next menu in the texinfo file. -If found, leave point after word `menu' on the `@menu' line, and return t. -If a menu is not found, do not move point and return nil." - (re-search-forward "\\(^@menu\\)" nil t)) - -(defun texinfo-copy-menu-title () - "Return the title of the section preceding the menu as a string. -If such a title cannot be found, return an empty string. Do not move -point." - (let ((case-fold-search t)) - (save-excursion - (if (re-search-backward - (concat - "\\(^@top" - "\\|" ; or - texinfo-section-types-regexp ; all other section types - "\\)") - nil - t) - (progn - (beginning-of-line) - (forward-word 1) ; skip over section type - (skip-chars-forward " \t") ; and over spaces - (buffer-substring - (point) - (progn (end-of-line) (point)))) - "")))) - -(defun texinfo-copy-menu () - "Return the entries of an existing menu as a list. -Start with point just after the word `menu' in the `@menu' line -and leave point on the line before the `@end menu' line." - (let* (this-menu-list - (end-of-menu (texinfo-menu-end)) ; position of end of `@end menu' - (last-entry (save-excursion ; position of beginning of - ; last `* ' entry - (goto-char end-of-menu) - ;; handle multi-line description - (if (not (re-search-backward "^\\* " nil t)) - (error "No entries in menu.")) - (point)))) - (while (< (point) last-entry) - (if (re-search-forward "^\\* " end-of-menu t) - (progn - (setq this-menu-list - (cons - (buffer-substring - (point) - ;; copy multi-line descriptions - (save-excursion - (re-search-forward "\\(^\\* \\|^@e\\)" nil t) - (- (point) 3))) - this-menu-list))))) - this-menu-list)) - - -;;; Determining the hierarchical level in the texinfo file - -(defun texinfo-specific-section-type () - "Return the specific type of next section, as a string. -For example, \"unnumberedsubsec\". Return \"top\" for top node. - -Searches forward for a section. Hence, point must be before the -section whose type will be found. Does not move point. Signal an -error if the node is not the top node and a section is not found." - (let ((case-fold-search t)) - (save-excursion - (cond - ((re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" -;;; Following search limit by cph but causes a bug -;;; (save-excursion -;;; (end-of-line) -;;; (point)) - nil - t) - "top") - ((re-search-forward texinfo-section-types-regexp nil t) - (buffer-substring-no-properties - (progn (beginning-of-line) ; copy its name - (1+ (point))) - (progn (forward-word 1) - (point)))) - (t - (error - "texinfo-specific-section-type: Chapter or section not found.")))))) - -(defun texinfo-hierarchic-level () - "Return the general hierarchal level of the next node in a texinfo file. -Thus, a subheading or appendixsubsec is of type subsection." - (let ((case-fold-search t)) - (cdr (assoc - (texinfo-specific-section-type) - texinfo-section-to-generic-alist)))) - - -;;; Locating the major positions - -(defun texinfo-update-menu-region-beginning (level) - "Locate beginning of higher level section this section is within. -Return position of the beginning of the node line; do not move point. -Thus, if this level is subsection, searches backwards for section node. -Only argument is a string of the general type of section." - (let ((case-fold-search t)) - ;; !! Known bug: if section immediately follows top node, this - ;; returns the beginning of the buffer as the beginning of the - ;; higher level section. - (cond - ((or (string-equal "top" level) - (string-equal "chapter" level)) - (save-excursion - (goto-char (point-min)) - (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" nil t) - (beginning-of-line) - (point))) - (t - (save-excursion - (re-search-backward - (concat - "\\(^@node\\).*\n" ; match node line - "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any - "\\|" ; or - "\\(^@ifinfo[ ]*\n\\)\\)?" ; ifinfo line, if any - (eval - (cdr (assoc level texinfo-update-menu-higher-regexps)))) - nil - 'goto-beginning) - (point)))))) - -(defun texinfo-update-menu-region-end (level) - "Locate end of higher level section this section is within. -Return position; do not move point. Thus, if this level is a -subsection, find the node for the section this subsection is within. -If level is top or chapter, returns end of file. Only argument is a -string of the general type of section." - (let ((case-fold-search t)) - (save-excursion - (if (re-search-forward - (concat - "\\(^@node\\).*\n" ; match node line - "\\(\\(\\(^@c\\).*\n\\)" ; match comment line, if any - "\\|" ; or - "\\(^@ifinfo[ ]*\n\\)\\)?" ; ifinfo line, if any - (eval - ;; Never finds end of level above chapter so goes to end. - (cdr (assoc level texinfo-update-menu-higher-regexps)))) - nil - 'goto-end) - (match-beginning 1) - (point-max))))) - -(defun texinfo-menu-first-node (beginning end) - "Locate first node of the section the menu will be placed in. -Return position; do not move point. -The menu will be located just before this position. - -First argument is the position of the beginning of the section in -which the menu will be located; second argument is the position of the -end of that region; it limits the search." - - (save-excursion - (goto-char beginning) - (forward-line 1) - (re-search-forward "^@node" end t) - (beginning-of-line) - (point))) - - -;;; Alists and regular expressions for defining hierarchical levels - -(defvar texinfo-section-to-generic-alist - '(("top" . "top") - - ("chapter" . "chapter") - ("unnumbered" . "chapter") - ("majorheading" . "chapter") - ("chapheading" . "chapter") - ("appendix" . "chapter") - - ("section" . "section") - ("unnumberedsec" . "section") - ("heading" . "section") - ("appendixsec" . "section") - - ("subsection" . "subsection") - ("unnumberedsubsec" . "subsection") - ("subheading" . "subsection") - ("appendixsubsec" . "subsection") - - ("subsubsection" . "subsubsection") - ("unnumberedsubsubsec" . "subsubsection") - ("subsubheading" . "subsubsection") - ("appendixsubsubsec" . "subsubsection")) - "*An alist of specific and corresponding generic Texinfo section types. -The keys are strings specifying specific types of section; the values -are strings of their corresponding general types.") - -;; We used to look for just sub, but that found @subtitle. -(defvar texinfo-section-types-regexp - "^@\\(chapter \\|sect\\|subs\\|subh\\|unnum\\|major\\|chapheading \\|heading \\|appendix\\)" - "Regexp matching chapter, section, other headings (but not the top node).") - -(defvar texinfo-chapter-level-regexp - "chapter\\|unnumbered \\|appendix \\|majorheading\\|chapheading" - "Regular expression matching just the Texinfo chapter level headings.") - -(defvar texinfo-section-level-regexp - "section\\|unnumberedsec\\|heading \\|appendixsec" - "Regular expression matching just the Texinfo section level headings.") - -(defvar texinfo-subsection-level-regexp - "subsection\\|unnumberedsubsec\\|subheading\\|appendixsubsec" - "Regular expression matching just the Texinfo subsection level headings.") - -(defvar texinfo-subsubsection-level-regexp - "subsubsection\\|unnumberedsubsubsec\\|subsubheading\\|appendixsubsubsec" - "Regular expression matching just the Texinfo subsubsection level headings.") - -(defvar texinfo-update-menu-same-level-regexps - '(("top" . "top[ \t]+") - ("chapter" . - (concat "\\(^@\\)\\(" texinfo-chapter-level-regexp "\\)[ \t]*")) - ("section" . - (concat "\\(^@\\)\\(" texinfo-section-level-regexp "\\)[ \t]*")) - ("subsection" . - (concat "\\(^@\\)\\(" texinfo-subsection-level-regexp "\\)[ \t]+")) - ("subsubsection" . - (concat "\\(^@\\)\\(" texinfo-subsubsection-level-regexp "\\)[ \t]+"))) - "*Regexps for searching for same level sections in a Texinfo file. -The keys are strings specifying the general hierarchical level in the -document; the values are regular expressions.") - -(defvar texinfo-update-menu-higher-regexps - '(("top" . "^@node [ \t]*DIR") - ("chapter" . "^@node [ \t]*top[ \t]*\\(,\\|$\\)") - ("section" . - (concat - "\\(^@\\(" - texinfo-chapter-level-regexp - "\\)[ \t]*\\)")) - ("subsection" . - (concat - "\\(^@\\(" - texinfo-section-level-regexp - "\\|" - texinfo-chapter-level-regexp - "\\)[ \t]*\\)")) - ("subsubsection" . - (concat - "\\(^@\\(" - texinfo-subsection-level-regexp - "\\|" - texinfo-section-level-regexp - "\\|" - texinfo-chapter-level-regexp - "\\)[ \t]*\\)"))) - "*Regexps for searching for higher level sections in a Texinfo file. -The keys are strings specifying the general hierarchical level in the -document; the values are regular expressions.") - -(defvar texinfo-update-menu-lower-regexps - '(("top" . - (concat - "\\(^@\\(" - texinfo-chapter-level-regexp - "\\|" - texinfo-section-level-regexp - "\\|" - texinfo-subsection-level-regexp - "\\|" - texinfo-subsubsection-level-regexp - "\\)[ \t]*\\)")) - ("chapter" . - (concat - "\\(^@\\(" - texinfo-section-level-regexp - "\\|" - texinfo-subsection-level-regexp - "\\|" - texinfo-subsubsection-level-regexp - "\\)[ \t]*\\)")) - ("section" . - (concat - "\\(^@\\(" - texinfo-subsection-level-regexp - "\\|" - texinfo-subsubsection-level-regexp - "\\)[ \t]+\\)")) - ("subsection" . - (concat - "\\(^@\\(" - texinfo-subsubsection-level-regexp - "\\)[ \t]+\\)")) - ("subsubsection" . "nothing lower")) - "*Regexps for searching for lower level sections in a Texinfo file. -The keys are strings specifying the general hierarchical level in the -document; the values are regular expressions.") - - -;;; Updating a node - -;;;###autoload -(defun texinfo-update-node (&optional beginning end) - "Without any prefix argument, update the node in which point is located. -Interactively, a prefix argument means to operate on the region. - -The functions for creating or updating nodes and menus, and their -keybindings, are: - - texinfo-update-node (&optional beginning end) \\[texinfo-update-node] - texinfo-every-node-update () \\[texinfo-every-node-update] - texinfo-sequential-node-update (&optional region-p) - - texinfo-make-menu (&optional region-p) \\[texinfo-make-menu] - texinfo-all-menus-update () \\[texinfo-all-menus-update] - texinfo-master-menu () - - texinfo-indent-menu-description (column &optional region-p) - -The `texinfo-column-for-description' variable specifies the column to -which menu descriptions are indented. Its default value is 32." - - (interactive - (if prefix-arg - (list (point) (mark)))) - (if (null beginning) - ;; Update a single node. - (let ((auto-fill-function nil) (auto-fill-hook nil)) - (if (not (re-search-backward "^@node" (point-min) t)) - (error "Node line not found before this position")) - (texinfo-update-the-node) - (message "Done...updated the node. You may save the buffer.")) - ;; else - (let ((auto-fill-function nil) - (auto-fill-hook nil)) - (save-excursion - (save-restriction - (narrow-to-region beginning end) - (goto-char (point-min)) - (while (re-search-forward "^@node" (point-max) t) - (beginning-of-line) - (texinfo-update-the-node)) - (goto-char (point-max)) - (message "Done...nodes updated in region. You may save the buffer.")))))) - -;;;###autoload -(defun texinfo-every-node-update () - "Update every node in a Texinfo file." - (interactive) - (save-excursion - (texinfo-update-node (point-min) (point-max)) - (message "Done...updated every node. You may save the buffer."))) - -(defun texinfo-update-the-node () - "Update one node. Point must be at the beginning of node line. -Leave point at the end of the node line." - (texinfo-check-for-node-name) - (texinfo-delete-existing-pointers) - (message "Updating node: %s ... " (texinfo-copy-node-name)) - (save-restriction - (widen) - (let* - ((case-fold-search t) - (level (texinfo-hierarchic-level)) - (beginning (texinfo-update-menu-region-beginning level)) - (end (texinfo-update-menu-region-end level))) - (if (string-equal level "top") - (texinfo-top-pointer-case) - ;; else - (texinfo-insert-pointer beginning end level 'next) - (texinfo-insert-pointer beginning end level 'previous) - (texinfo-insert-pointer beginning end level 'up) - (texinfo-clean-up-node-line))))) - -(defun texinfo-top-pointer-case () - "Insert pointers in the Top node. This is a special case. - -The `Next' pointer is a pointer to a chapter or section at a lower -hierarchical level in the file. The `Previous' and `Up' pointers are -to `(dir)'. Point must be at the beginning of the node line, and is -left at the end of the node line." - - (texinfo-clean-up-node-line) - (insert ", " - (save-excursion - ;; There may be an @chapter or other such command between - ;; the top node line and the next node line, as a title - ;; for an `ifinfo' section. This @chapter command must - ;; must be skipped. So the procedure is to search for - ;; the next `@node' line, and then copy its name. - (if (re-search-forward "^@node" nil t) - (progn - (beginning-of-line) - (texinfo-copy-node-name)) - " ")) - ", (dir), (dir)")) - -(defun texinfo-check-for-node-name () - "Determine whether the node has a node name. Prompt for one if not. -Point must be at beginning of node line. Does not move point." - (save-excursion - (let ((initial (texinfo-copy-next-section-title))) - ;; This is not clean. Use `interactive' to read the arg. - (forward-word 1) ; skip over node command - (skip-chars-forward " \t") ; and over spaces - (if (not (looking-at "[^,\t\n ]+")) ; regexp based on what Info looks for - ; alternatively, use "[a-zA-Z]+" - (let ((node-name - (read-from-minibuffer - "Node name (use no @, commas, colons, or apostrophes): " - initial))) - (insert " " node-name)))))) - -(defun texinfo-delete-existing-pointers () - "Delete `Next', `Previous', and `Up' pointers. -Starts from the current position of the cursor, and searches forward -on the line for a comma and if one is found, deletes the rest of the -line, including the comma. Leaves point at beginning of line." - (let ((eol-point (save-excursion (end-of-line) (point)))) - (if (search-forward "," eol-point t) - (delete-region (1- (point)) eol-point))) - (beginning-of-line)) - -(defun texinfo-find-pointer (beginning end level direction) - "Move point to section associated with next, previous, or up pointer. -Return type of pointer (either `normal' or `no-pointer'). - -The first and second arguments bound the search for a pointer to the -beginning and end, respectively, of the enclosing higher level -section. The third argument is a string specifying the general kind -of section such as \"chapter\" or \"section\". When looking for the -`Next' pointer, the section found will be at the same hierarchical -level in the Texinfo file; when looking for the `Previous' pointer, -the section found will be at the same or higher hierarchical level in -the Texinfo file; when looking for the `Up' pointer, the section found -will be at some level higher in the Texinfo file. The fourth argument -\(one of 'next, 'previous, or 'up\) specifies whether to find the -`Next', `Previous', or `Up' pointer." - (let ((case-fold-search t)) - (cond ((eq direction 'next) - (forward-line 3) ; skip over current node - ;; Search for section commands accompanied by node lines; - ;; ignore section commands in the middle of nodes. - (if (re-search-forward - ;; A `Top' node is never a next pointer, so won't find it. - (concat - ;; Match node line. - "\\(^@node\\).*\n" - ;; Match comment or ifinfo line, if any - "\\(\\(\\(^@c\\).*\n\\)\\|\\(^@ifinfo[ ]*\n\\)\\)?" - (eval - (cdr (assoc level texinfo-update-menu-same-level-regexps)))) - end - t) - 'normal - 'no-pointer)) - ((eq direction 'previous) - (if (re-search-backward - (concat - "\\(" - ;; Match node line. - "\\(^@node\\).*\n" - ;; Match comment or ifinfo line, if any - "\\(\\(\\(^@c\\).*\n\\)\\|\\(^@ifinfo[ ]*\n\\)\\)?" - (eval - (cdr (assoc level texinfo-update-menu-same-level-regexps))) - "\\|" - ;; Match node line. - "\\(^@node\\).*\n" - ;; Match comment or ifinfo line, if any - "\\(\\(\\(^@c\\).*\n\\)\\|\\(^@ifinfo[ ]*\n\\)\\)?" - (eval - (cdr (assoc level texinfo-update-menu-higher-regexps))) - "\\|" - ;; Handle `Top' node specially. - "^@node [ \t]*top[ \t]*\\(,\\|$\\)" - "\\)") - beginning - t) - 'normal - 'no-pointer)) - ((eq direction 'up) - (if (re-search-backward - (concat - "\\(" - ;; Match node line. - "\\(^@node\\).*\n" - ;; Match comment or ifinfo line, if any - "\\(\\(\\(^@c\\).*\n\\)\\|\\(^@ifinfo[ ]*\n\\)\\)?" - (eval (cdr (assoc level texinfo-update-menu-higher-regexps))) - "\\|" - ;; Handle `Top' node specially. - "^@node [ \t]*top[ \t]*\\(,\\|$\\)" - "\\)") - (save-excursion - (goto-char beginning) - (beginning-of-line) - (point)) - t) - 'normal - 'no-pointer)) - (t - (error "texinfo-find-pointer: lack proper arguments"))))) - -(defun texinfo-pointer-name (kind) - "Return the node name preceding the section command. -The argument is the kind of section, either `normal' or `no-pointer'." - (let (name) - (cond ((eq kind 'normal) - (end-of-line) ; this handles prev node top case - (re-search-backward ; when point is already - "^@node" ; at the beginning of @node line - (save-excursion (forward-line -3)) - t) - (setq name (texinfo-copy-node-name))) - ((eq kind 'no-pointer) - ;; Don't need to put a blank in the pointer slot, - ;; since insert "' " always has a space - (setq name " "))) ; put a blank in the pointer slot - name)) - -(defun texinfo-insert-pointer (beginning end level direction) - "Insert the `Next', `Previous' or `Up' node name at point. -Move point forward. - -The first and second arguments bound the search for a pointer to the -beginning and end, respectively, of the enclosing higher level -section. The third argument is the hierarchical level of the Texinfo -file, a string such as \"section\". The fourth argument is direction -towards which the pointer is directed, one of `next', `previous', or `up'." - - (end-of-line) - (insert - ", " - (save-excursion - (texinfo-pointer-name - (texinfo-find-pointer beginning end level direction))))) - -(defun texinfo-clean-up-node-line () - "Remove extra commas, if any, at end of node line." - (end-of-line) - (skip-chars-backward ", ") - (delete-region (point) (save-excursion (end-of-line) (point)))) - - -;;; Updating nodes sequentially -;; These sequential update functions insert `Next' or `Previous' -;; pointers that point to the following or preceding nodes even if they -;; are at higher or lower hierarchical levels. This means that if a -;; section contains one or more subsections, the section's `Next' -;; pointer will point to the subsection and not the following section. -;; (The subsection to which `Next' points will most likely be the first -;; item on the section's menu.) - -;;;###autoload -(defun texinfo-sequential-node-update (&optional region-p) - "Update one node (or many) in a Texinfo file with sequential pointers. - -This function causes the `Next' or `Previous' pointer to point to the -immediately preceding or following node, even if it is at a higher or -lower hierarchical level in the document. Continually pressing `n' or -`p' takes you straight through the file. - -Without any prefix argument, update the node in which point is located. -Non-nil argument (prefix, if interactive) means update the nodes in the -marked region. - -This command makes it awkward to navigate among sections and -subsections; it should be used only for those documents that are meant -to be read like a novel rather than a reference, and for which the -Info `g*' command is inadequate." - - (interactive "P") - (if (not region-p) - ;; update a single node - (let ((auto-fill-function nil) (auto-fill-hook nil)) - (if (not (re-search-backward "^@node" (point-min) t)) - (error "Node line not found before this position.")) - (texinfo-sequentially-update-the-node) - (message - "Done...sequentially updated the node . You may save the buffer.")) - ;; else - (let ((auto-fill-function nil) - (auto-fill-hook nil) - (beginning (region-beginning)) - (end (region-end))) - (if (= end beginning) - (error "Please mark a region!")) - (save-restriction - (narrow-to-region beginning end) - (goto-char beginning) - (push-mark (point) t) - (while (re-search-forward "^@node" (point-max) t) - (beginning-of-line) - (texinfo-sequentially-update-the-node)) - (message - "Done...updated the nodes in sequence. You may save the buffer."))))) - -(defun texinfo-sequentially-update-the-node () - "Update one node such that the pointers are sequential. -A `Next' or `Previous' pointer points to any preceding or following node, -regardless of its hierarchical level." - - (texinfo-check-for-node-name) - (texinfo-delete-existing-pointers) - (message - "Sequentially updating node: %s ... " (texinfo-copy-node-name)) - (save-restriction - (widen) - (let* - ((case-fold-search t) - (level (texinfo-hierarchic-level))) - (if (string-equal level "top") - (texinfo-top-pointer-case) - ;; else - (texinfo-sequentially-insert-pointer level 'next) - (texinfo-sequentially-insert-pointer level 'previous) - (texinfo-sequentially-insert-pointer level 'up) - (texinfo-clean-up-node-line))))) - -(defun texinfo-sequentially-find-pointer (level direction) - "Find next or previous pointer sequentially in Texinfo file, or up pointer. -Move point to section associated with the pointer. Find point even if -it is in a different section. - -Return type of pointer (either `normal' or `no-pointer'). - -The first argument is a string specifying the general kind of section -such as \"chapter\" or \"section\". The section found will be at the -same hierarchical level in the Texinfo file, or, in the case of the up -pointer, some level higher. The second argument (one of `next', -`previous', or `up') specifies whether to find the `Next', `Previous', -or `Up' pointer." - (let ((case-fold-search t)) - (cond ((eq direction 'next) - (forward-line 3) ; skip over current node - (if (re-search-forward - texinfo-section-types-regexp - (point-max) - t) - 'normal - 'no-pointer)) - ((eq direction 'previous) - (if (re-search-backward - texinfo-section-types-regexp - (point-min) - t) - 'normal - 'no-pointer)) - ((eq direction 'up) - (if (re-search-backward - (eval (cdr (assoc level texinfo-update-menu-higher-regexps))) - beginning - t) - 'normal - 'no-pointer)) - (t - (error "texinfo-sequential-find-pointer: lack proper arguments"))))) - -(defun texinfo-sequentially-insert-pointer (level direction) - "Insert the `Next', `Previous' or `Up' node name at point. -Move point forward. - -The first argument is the hierarchical level of the Texinfo file, a -string such as \"section\". The second argument is direction, one of -`next', `previous', or `up'." - - (end-of-line) - (insert - ", " - (save-excursion - (texinfo-pointer-name - (texinfo-sequentially-find-pointer level direction))))) - - -;;; Inserting `@node' lines -;; The `texinfo-insert-node-lines' function inserts `@node' lines as needed -;; before the `@chapter', `@section', and such like lines of a region -;; in a Texinfo file. - -(defun texinfo-insert-node-lines (beginning end &optional title-p) - "Insert missing `@node' lines in region of Texinfo file. -Non-nil argument (prefix, if interactive) means also to insert the -section titles as node names; and also to insert the section titles as -node names in pre-existing `@node' lines that lack names." - (interactive "r\nP") - - ;; Use marker; after inserting node lines, leave point at end of - ;; region and mark at beginning. - - (let (beginning-marker end-marker title last-section-position) - - ;; Save current position on mark ring and set mark to end. - (push-mark end t) - (setq end-marker (mark-marker)) - - (goto-char beginning) - (while (re-search-forward - texinfo-section-types-regexp - end-marker - 'end) - ;; Copy title if desired. - (if title-p - (progn - (beginning-of-line) - (forward-word 1) - (skip-chars-forward " \t") - (setq title (buffer-substring - (point) - (save-excursion (end-of-line) (point)))))) - ;; Insert node line if necessary. - (if (re-search-backward - "^@node" - ;; Avoid finding previous node line if node lines are close. - (or last-section-position - (save-excursion (forward-line -2) (point))) t) - ;; @node is present, and point at beginning of that line - (forward-word 1) ; Leave point just after @node. - ;; Else @node missing; insert one. - (beginning-of-line) ; Beginning of `@section' line. - (insert "@node\n") - (backward-char 1)) ; Leave point just after `@node'. - ;; Insert title if desired. - (if title-p - (progn - (skip-chars-forward " \t") - ;; Use regexp based on what info looks for - ;; (alternatively, use "[a-zA-Z]+"); - ;; this means we only insert a title if none exists. - (if (not (looking-at "[^,\t\n ]+")) - (progn - (beginning-of-line) - (forward-word 1) - (insert " " title) - (message "Inserted title %s ... " title))))) - ;; Go forward beyond current section title. - (re-search-forward texinfo-section-types-regexp - (save-excursion (forward-line 3) (point)) t) - (setq last-section-position (point)) - (forward-line 1)) - - ;; Leave point at end of region, mark at beginning. - (set-mark beginning) - - (if title-p - (message - "Done inserting node lines and titles. You may save the buffer.") - (message "Done inserting node lines. You may save the buffer.")))) - - -;;; Update and create menus for multi-file Texinfo sources - -;; 1. M-x texinfo-multiple-files-update -;; -;; Read the include file list of an outer Texinfo file and -;; update all highest level nodes in the files listed and insert a -;; main menu in the outer file after its top node. - -;; 2. C-u M-x texinfo-multiple-files-update -;; -;; Same as 1, but insert a master menu. (Saves reupdating lower -;; level menus and nodes.) This command simply reads every menu, -;; so if the menus are wrong, the master menu will be wrong. -;; Similarly, if the lower level node pointers are wrong, they -;; will stay wrong. - -;; 3. C-u 2 M-x texinfo-multiple-files-update -;; -;; Read the include file list of an outer Texinfo file and -;; update all nodes and menus in the files listed and insert a -;; master menu in the outer file after its top node. - -;;; Note: these functions: -;;; -;;; * Do not save or delete any buffers. You may fill up your memory. -;;; * Do not handle any pre-existing nodes in outer file. -;;; Hence, you may need a file for indices. - - -;;; Auxiliary functions for multiple file updating - -(defun texinfo-multi-file-included-list (outer-file) - "Return a list of the included files in OUTER-FILE." - (let ((included-file-list (list outer-file)) - start) - (save-excursion - (switch-to-buffer (find-file-noselect outer-file)) - (widen) - (goto-char (point-min)) - (while (re-search-forward "^@include" nil t) - (skip-chars-forward " \t") - (setq start (point)) - (end-of-line) - (skip-chars-backward " \t") - (setq included-file-list - (cons (buffer-substring start (point)) - included-file-list))) - (nreverse included-file-list)))) - -(defun texinfo-copy-next-section-title () - "Return the name of the immediately following section as a string. - -Start with point at the beginning of the node line. Leave point at the -same place. If there is no title, returns an empty string." - - (save-excursion - (end-of-line) - (let ((node-end (or - (save-excursion - (if (re-search-forward "\\(^@node\\)" nil t) - (match-beginning 0))) - (point-max)))) - (if (re-search-forward texinfo-section-types-regexp node-end t) - (progn - (beginning-of-line) - ;; copy title - (let ((title - (buffer-substring - (progn (forward-word 1) ; skip over section type - (skip-chars-forward " \t") ; and over spaces - (point)) - (progn (end-of-line) (point))))) - title)) - "")))) - -(defun texinfo-multi-file-update (files &optional update-everything) - "Update first node pointers in each file in FILES. -Return a list of the node names. - -The first file in the list is an outer file; the remaining are -files included in the outer file with `@include' commands. - -If optional arg UPDATE-EVERYTHING non-nil, update every menu and -pointer in each of the included files. - -Also update the `Top' level node pointers of the outer file. - -Requirements: - - * the first file in the FILES list must be the outer file, - * each of the included files must contain exactly one highest - hierarchical level node, - * this node must be the first node in the included file, - * each highest hierarchical level node must be of the same type. - -Thus, normally, each included file contains one, and only one, chapter." - -;; The menu-list has the form: -;; -;; \(\(\"node-name1\" . \"title1\"\) -;; \(\"node-name2\" . \"title2\"\) ... \) -;; -;; However, there does not need to be a title field and this function -;; does not fill it; however a comment tells you how to do so. -;; You would use the title field if you wanted to insert titles in the -;; description slot of a menu as a description. - - (let ((case-fold-search t) - menu-list) - - ;; Find the name of the first node of the first included file. - (switch-to-buffer (find-file-noselect (car (cdr files)))) - (widen) - (goto-char (point-min)) - (if (not (re-search-forward "^@node" nil t)) - (error "No `@node' line found in %s !" (buffer-name))) - (beginning-of-line) - (texinfo-check-for-node-name) - (setq next-node-name (texinfo-copy-node-name)) - - (setq menu-list - (cons (cons - next-node-name - (prog1 "" (forward-line 1))) - ;; Use following to insert section titles automatically. - ;; (texinfo-copy-next-section-title) - menu-list)) - - ;; Go to outer file - (switch-to-buffer (find-file-noselect (car files))) - (goto-char (point-min)) - (if (not (re-search-forward "^@node [ \t]*top[ \t]*\\(,\\|$\\)" nil t)) - (error "This buffer needs a Top node!")) - (beginning-of-line) - (texinfo-delete-existing-pointers) - (end-of-line) - (insert ", " next-node-name ", (dir), (dir)") - (beginning-of-line) - (setq previous-node-name "Top") - (setq files (cdr files)) - - (while files - - (if (not (cdr files)) - ;; No next file - (setq next-node-name "") - ;; Else, - ;; find the name of the first node in the next file. - (switch-to-buffer (find-file-noselect (car (cdr files)))) - (widen) - (goto-char (point-min)) - (if (not (re-search-forward "^@node" nil t)) - (error "No `@node' line found in %s !" (buffer-name))) - (beginning-of-line) - (texinfo-check-for-node-name) - (setq next-node-name (texinfo-copy-node-name)) - (setq menu-list - (cons (cons - next-node-name - (prog1 "" (forward-line 1))) - ;; Use following to insert section titles automatically. - ;; (texinfo-copy-next-section-title) - menu-list))) - - ;; Go to node to be updated. - (switch-to-buffer (find-file-noselect (car files))) - (goto-char (point-min)) - (if (not (re-search-forward "^@node" nil t)) - (error "No `@node' line found in %s !" (buffer-name))) - (beginning-of-line) - - ;; Update other menus and nodes if requested. - (if update-everything (texinfo-all-menus-update t)) - - (beginning-of-line) - (texinfo-delete-existing-pointers) - (end-of-line) - (insert ", " next-node-name ", " previous-node-name ", " up-node-name) - - (beginning-of-line) - (setq previous-node-name (texinfo-copy-node-name)) - - (setq files (cdr files))) - (nreverse menu-list))) - -(defun texinfo-multi-files-insert-main-menu (menu-list) - "Insert formatted main menu at point. -Indents the first line of the description, if any, to the value of -`texinfo-column-for-description'." - - (insert "@menu\n") - (while menu-list - ;; Every menu entry starts with a star and a space. - (insert "* ") - - ;; Insert the node name (and menu entry name, if present). - (let ((node-part (car (car menu-list)))) - (if (stringp node-part) - ;; "Double colon" entry line; menu entry and node name are the same, - (insert (format "%s::" node-part)) - ;; "Single colon" entry line; menu entry and node name are different. - (insert (format "%s: %s." (car node-part) (cdr node-part))))) - - ;; Insert the description, if present. - (if (cdr (car menu-list)) - (progn - ;; Move to right place. - (indent-to texinfo-column-for-description 2) - ;; Insert description. - (insert (format "%s" (cdr (car menu-list)))))) - - (insert "\n") ; end this menu entry - (setq menu-list (cdr menu-list))) - (insert "@end menu")) - -(defun texinfo-multi-file-master-menu-list (files-list) - "Return master menu list from files in FILES-LIST. -Menu entries in each file collected using `texinfo-master-menu-list'. - -The first file in FILES-LIST must be the outer file; the others must -be the files included within it. A main menu must already exist." - (save-excursion - (let (master-menu-list) - (while files-list - (switch-to-buffer (find-file-noselect (car files-list))) - (message "Working on: %s " (current-buffer)) - (goto-char (point-min)) - (setq master-menu-list - (append master-menu-list (texinfo-master-menu-list))) - (setq files-list (cdr files-list))) - master-menu-list))) - - -;;; The multiple-file update function - -(defun texinfo-multiple-files-update - (outer-file &optional update-everything make-master-menu) - "Update first node pointers in each file included in OUTER-FILE; -create or update the `Top' level node pointers and the main menu in -the outer file that refers to such nodes. This does not create or -update menus or pointers within the included files. - -With optional MAKE-MASTER-MENU argument (prefix arg, if interactive), -insert a master menu in OUTER-FILE in addition to creating or updating -pointers in the first @node line in each included file and creating or -updating the `Top' level node pointers of the outer file. This does -not create or update other menus and pointers within the included -files. - -With optional UPDATE-EVERYTHING argument (numeric prefix arg, if -interactive), update all the menus and all the `Next', `Previous', and -`Up' pointers of all the files included in OUTER-FILE before inserting -a master menu in OUTER-FILE. Also, update the `Top' level node -pointers of OUTER-FILE. - -Notes: - - * this command does NOT save any files--you must save the - outer file and any modified, included files. - - * except for the `Top' node, this command does NOT handle any - pre-existing nodes in the outer file; hence, indices must be - enclosed in an included file. - -Requirements: - - * each of the included files must contain exactly one highest - hierarchical level node, - * this highest node must be the first node in the included file, - * each highest hierarchical level node must be of the same type. - -Thus, normally, each included file contains one, and only one, -chapter." - - (interactive (cons - (read-string - "Name of outer `include' file: " - (buffer-file-name)) - (cond ((not current-prefix-arg) - '(nil nil)) - ((listp current-prefix-arg) - '(t nil)) ; make-master-menu - ((numberp current-prefix-arg) - '(t t)) ; update-everything - ))) - - (let* ((included-file-list (texinfo-multi-file-included-list outer-file)) - (files included-file-list) - main-menu-list - next-node-name - previous-node-name - (up-node-name "Top")) - -;;; Update the pointers -;;; and collect the names of the nodes and titles - (setq main-menu-list (texinfo-multi-file-update files update-everything)) - -;;; Insert main menu - - ;; Go to outer file - (switch-to-buffer (find-file-noselect (car included-file-list))) - (if (texinfo-old-menu-p - (point-min) - (save-excursion - (re-search-forward "^@include") - (beginning-of-line) - (point))) - - ;; If found, leave point after word `menu' on the `@menu' line. - (progn - (texinfo-incorporate-descriptions main-menu-list) - ;; Delete existing menu. - (beginning-of-line) - (delete-region - (point) - (save-excursion (re-search-forward "^@end menu") (point))) - ;; Insert main menu - (texinfo-multi-files-insert-main-menu main-menu-list)) - - ;; Else no current menu; insert it before `@include' - (texinfo-multi-files-insert-main-menu main-menu-list)) - -;;; Insert master menu - - (if make-master-menu - (progn - ;; First, removing detailed part of any pre-existing master menu - (goto-char (point-min)) - (if (search-forward texinfo-master-menu-header nil t) - (progn - (goto-char (match-beginning 0)) - ;; Check if @detailmenu kludge is used; - ;; if so, leave point before @detailmenu. - (search-backward "\n@detailmenu" - (save-excursion (forward-line -3) (point)) - t) - ;; Remove detailed master menu listing - (let ((end-of-detailed-menu-descriptions - (save-excursion ; beginning of end menu line - (goto-char (texinfo-menu-end)) - (beginning-of-line) (forward-char -1) - (point)))) - (delete-region (point) end-of-detailed-menu-descriptions)))) - - ;; Create a master menu and insert it - (texinfo-insert-master-menu-list - (texinfo-multi-file-master-menu-list - included-file-list))))) - - ;; Remove unwanted extra lines. - (save-excursion - (goto-char (point-min)) - - (re-search-forward "^@menu") - (forward-line -1) - (insert "\n") ; Ensure at least one blank line. - (delete-blank-lines) - - (re-search-forward "^@end menu") - (forward-line 1) - (insert "\n") ; Ensure at least one blank line. - (delete-blank-lines)) - - (message "Multiple files updated.")) - - -;;; Place `provide' at end of file. -(provide 'texnfo-upd) - -;;; texnfo-upd.el ends here diff --git a/texinfo/intl/ChangeLog b/texinfo/intl/ChangeLog deleted file mode 100644 index ecff6f6b2cd..00000000000 --- a/texinfo/intl/ChangeLog +++ /dev/null @@ -1,1022 +0,0 @@ -1997-09-06 02:10 Ulrich Drepper <drepper@cygnus.com> - - * intlh.inst.in: Reformat copyright. - -1997-08-19 15:22 Ulrich Drepper <drepper@cygnus.com> - - * dcgettext.c (DCGETTEXT): Remove wrong comment. - -1997-08-16 00:13 Ulrich Drepper <drepper@cygnus.com> - - * Makefile.in (install-data): Don't change directory to install. - -1997-08-01 14:30 Ulrich Drepper <drepper@cygnus.com> - - * cat-compat.c: Fix copyright. - - * localealias.c: Don't define strchr unless !HAVE_STRCHR. - - * loadmsgcat.c: Update copyright. Fix typos. - - * l10nflist.c: Don't define strchr unless !HAVE_STRCHR. - (_nl_make_l10nflist): Handle sponsor and revision correctly. - - * gettext.c: Update copyright. - * gettext.h: Likewise. - * hash-string.h: Likewise. - - * finddomain.c: Remoave dead code. Define strchr only if - !HAVE_STRCHR. - - * explodename.c: Include <sys/types.h>. - - * explodename.c: Reformat copyright text. - (_nl_explode_name): Fix typo. - - * dcgettext.c: Define and use __set_errno. - (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is - not defined. - - * bindtextdom.c: Pretty printing. - -1997-05-01 02:25 Ulrich Drepper <drepper@cygnus.com> - - * dcgettext.c (guess_category_value): Don't depend on - HAVE_LC_MESSAGES. We don't need the macro here. - Patch by Bruno Haible <haible@ilog.fr>. - - * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL - macro. Instead use HAVE_LOCALE_NULL and define it when using - glibc, as in dcgettext.c. - Patch by Bruno Haible <haible@ilog.fr>. - - * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois - Pinard. - -Mon Mar 10 06:51:17 1997 Ulrich Drepper <drepper@cygnus.com> - - * Makefile.in: Implement handling of libtool. - - * gettextP.h: Change data structures for use of generic lowlevel - i18n file handling. - -Wed Dec 4 20:21:18 1996 Ulrich Drepper <drepper@cygnus.com> - - * textdomain.c: Put parentheses around arguments of memcpy macro - definition. - * localealias.c: Likewise. - * l10nflist.c: Likewise. - * finddomain.c: Likewise. - * bindtextdom.c: Likewise. - Reported by Thomas Esken. - -Mon Nov 25 22:57:51 1996 Ulrich Drepper <drepper@cygnus.com> - - * textdomain.c: Move definition of `memcpy` macro to right - position. - -Fri Nov 22 04:01:58 1996 Ulrich Drepper <drepper@cygnus.com> - - * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using - bcopy if not already defined. Reported by Thomas Esken. - * bindtextdom.c: Likewise. - * l10nflist.c: Likewise. - * localealias.c: Likewise. - * textdomain.c: Likewise. - -Tue Oct 29 11:10:27 1996 Ulrich Drepper <drepper@cygnus.com> - - * Makefile.in (libdir): Change to use exec_prefix instead of - prefix. Reported by Knut-HåvardAksnes <etokna@eto.ericsson.se>. - -Sat Aug 31 03:07:09 1996 Ulrich Drepper <drepper@cygnus.com> - - * l10nflist.c (_nl_normalize_codeset): We convert to lower case, - so don't prepend uppercase `ISO' for only numeric arg. - -Fri Jul 19 00:15:46 1996 Ulrich Drepper <drepper@cygnus.com> - - * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after - definition of _GNU_SOURCE. Patch by Roland McGrath. - - * Makefile.in (uninstall): Fix another bug with `for' loop and - empty arguments. Patch by Jim Meyering. Correct name os - uninstalled files: no intl- prefix anymore. - - * Makefile.in (install-data): Again work around shells which - cannot handle mpty for list. Reported by Jim Meyering. - -Sat Jul 13 18:11:35 1996 Ulrich Drepper <drepper@cygnus.com> - - * Makefile.in (install): Split goal. Now depend on install-exec - and install-data. - (install-exec, install-data): New goals. Created from former - install goal. - Reported by Karl Berry. - -Sat Jun 22 04:58:14 1996 Ulrich Drepper <drepper@cygnus.com> - - * Makefile.in (MKINSTALLDIRS): New variable. Path to - mkinstalldirs script. - (install): use MKINSTALLDIRS variable or if the script is not present - try to find it in the $top_scrdir). - -Wed Jun 19 02:56:56 1996 Ulrich Drepper <drepper@cygnus.com> - - * l10nflist.c: Linux libc *partly* includes the argz_* functions. - Grr. Work around by renaming the static version and use macros - for renaming. - -Tue Jun 18 20:11:17 1996 Ulrich Drepper <drepper@cygnus.com> - - * l10nflist.c: Correct presence test macros of __argz_* functions. - - * l10nflist.c: Include <argz.h> based on test of it instead when - __argz_* functions are available. - Reported by Andreas Schwab. - -Thu Jun 13 15:17:44 1996 Ulrich Drepper <drepper@cygnus.com> - - * explodename.c, l10nflist.c: Define NULL for dumb systems. - -Tue Jun 11 17:05:13 1996 Ulrich Drepper <drepper@cygnus.com> - - * intlh.inst.in, libgettext.h (dcgettext): Rename local variable - result to __result to prevent name clash. - - * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to - get prototype for stpcpy and strcasecmp. - - * intlh.inst.in, libgettext.h: Move declaration of - `_nl_msg_cat_cntr' outside __extension__ block to prevent warning - from gcc's -Wnested-extern option. - -Fri Jun 7 01:58:00 1996 Ulrich Drepper <drepper@cygnus.com> - - * Makefile.in (install): Remove comment. - -Thu Jun 6 17:28:17 1996 Ulrich Drepper <drepper@cygnus.com> - - * Makefile.in (install): Work around for another Buglix stupidity. - Always use an `else' close for `if's. Reported by Nelson Beebe. - - * Makefile.in (intlh.inst): Correct typo in phony rule. - Reported by Nelson Beebe. - -Thu Jun 6 01:49:52 1996 Ulrich Drepper <drepper@cygnus.com> - - * dcgettext.c (read_alias_file): Rename variable alloca_list to - block_list as the macro calls assume. - Patch by Eric Backus. - - * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using - malloc. - (read_alias_file): Rename varriabe alloca_list to block_list as the - macro calls assume. - Patch by Eric Backus. - - * l10nflist.c: Correct conditional for <argz.h> inclusion. - Reported by Roland McGrath. - - * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not - all-@USE_NLS@. - - * Makefile.in (install): intlh.inst comes from local dir, not - $(srcdir). - - * Makefile.in (intlh.inst): Special handling of this goal. If - used in gettext, this is really a rul to construct this file. If - used in any other package it is defined as a .PHONY rule with - empty body. - - * finddomain.c: Extract locale file information handling into - l10nfile.c. Rename local stpcpy__ function to stpcpy. - - * dcgettext.c (stpcpy): Add local definition. - - * l10nflist.c: Solve some portability problems. Patches partly by - Thomas Esken. Add local definition of stpcpy. - -Tue Jun 4 02:47:49 1996 Ulrich Drepper <drepper@cygnus.com> - - * intlh.inst.in: Don't depend including <locale.h> on - HAVE_LOCALE_H. Instead configure must rewrite this fiile - depending on the result of the configure run. - - * Makefile.in (install): libintl.inst is now called intlh.inst. - Add rules for updating intlh.inst from intlh.inst.in. - - * libintl.inst: Renamed to intlh.inst.in. - - * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1 - because gcc has __buitlin_alloca. - Reported by Roland McGrath. - -Mon Jun 3 00:32:16 1996 Ulrich Drepper <drepper@cygnus.com> - - * Makefile.in (installcheck): New goal to fulfill needs of - automake's distcheck. - - * Makefile.in (install): Reorder commands so that VERSION is - found. - - * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in - @datadir@/gettext. - (COMSRCS): Add l10nfile.c. - (OBJECTS): Add l10nfile.o. - (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common). - (DISTFILE.gettext): Remove $(DISTFILES.common). - (all-gettext): Remove goal. - (install): If $(PACKAGE) = gettext install, otherwose do nothing. No - package but gettext itself should install libintl.h + headers. - (dist): Extend goal to work for gettext, too. - (dist-gettext): Remove goal. - - * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc. - -Sun Jun 2 17:33:06 1996 Ulrich Drepper <drepper@cygnus.com> - - * loadmsgcat.c (_nl_load_domain): Parameter is now comes from - find_l10nfile. - -Sat Jun 1 02:23:03 1996 Ulrich Drepper <drepper@cygnus.com> - - * l10nflist.c (__argz_next): Add definition. - - * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca - code. Use new l10nfile handling. - - * localealias.c [!HAVE_ALLOCA]: Add code for handling missing - alloca code. - - * l10nflist.c: Initial revision. - -Tue Apr 2 18:51:18 1996 Ulrich Drepper <drepper@myware> - - * Makefile.in (all-gettext): New goal. Same as all-yes. - -Thu Mar 28 23:01:22 1996 Karl Eichwalder <ke@ke.central.de> - - * Makefile.in (gettextsrcdir): Define using @datadir@. - -Tue Mar 26 12:39:14 1996 Ulrich Drepper <drepper@myware> - - * finddomain.c: Include <ctype.h>. Reported by Roland McGrath. - -Sat Mar 23 02:00:35 1996 Ulrich Drepper <drepper@myware> - - * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing - with external declaration. - -Sat Mar 2 00:47:09 1996 Ulrich Drepper <drepper@myware> - - * Makefile.in (all-no): Rename from all_no. - -Sat Feb 17 00:25:59 1996 Ulrich Drepper <drepper@myware> - - * gettextP.h [loaded_domain]: Array `successor' must now contain up - to 63 elements (because of codeset name normalization). - - * finddomain.c: Implement codeset name normalization. - -Thu Feb 15 04:39:09 1996 Ulrich Drepper <drepper@myware> - - * Makefile.in (all): Define to `all-@USE_NLS@'. - (all-yes, all_no): New goals. `all-no' is noop, `all-yes' - is former all. - -Mon Jan 15 21:46:01 1996 Howard Gayle <howard@hal.com> - - * localealias.c (alias_compare): Increment string pointers in loop - of strcasecmp replacement. - -Fri Dec 29 21:16:34 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (install-src): Who commented this goal out ? :-) - -Fri Dec 29 15:08:16 1995 Ulrich Drepper <drepper@myware> - - * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls - should not effect it because a missing catalog is no error. - Reported by Harald K<o:>nig <koenig@tat.physik.uni-tuebingen.de>. - -Tue Dec 19 22:09:13 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (Makefile): Explicitly use $(SHELL) for running - shell scripts. - -Fri Dec 15 17:34:59 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de> - - * Makefile.in (install-src): Only install library and header when - we use the own implementation. Don't do it when using the - system's gettext or catgets functions. - - * dcgettext.c (find_msg): Must not swap domain->hash_size here. - -Sat Dec 9 16:24:37 1995 Ulrich Drepper <drepper@myware> - - * localealias.c, libintl.inst, libgettext.h, hash-string.h, - gettextP.h, finddomain.c, dcgettext.c, cat-compat.c: - Use PARAMS instead of __P. Suggested by Roland McGrath. - -Tue Dec 5 11:39:14 1995 Larry Schwimmer <rosebud@cyclone.stanford.edu> - - * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if - !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty. - -Mon Dec 4 15:42:07 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (install-src): - Install libintl.inst instead of libintl.h.install. - -Sat Dec 2 22:51:38 1995 Marcus Daniels <marcus@sysc.pdx.edu> - - * cat-compat.c (textdomain): - Reverse order in which files are tried you load. First - try local file, when this failed absolute path. - -Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe <beebe@math.utah.edu> - - * cat-compat.c (bindtextdomain): Add missing { }. - -Sun Nov 26 18:21:41 1995 Ulrich Drepper <drepper@myware> - - * libintl.inst: Add missing __P definition. Reported by Nelson Beebe. - - * Makefile.in: - Add dummy `all' and `dvi' goals. Reported by Tom Tromey. - -Sat Nov 25 16:12:01 1995 Franc,ois Pinard <pinard@iro.umontreal.ca> - - * hash-string.h: Capitalize arguments of macros. - -Sat Nov 25 12:01:36 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (DISTFILES): Prevent files names longer than 13 - characters. libintl.h.glibc->libintl.glibc, - libintl.h.install->libintl.inst. Reported by Joshua R. Poulson. - -Sat Nov 25 11:31:12 1995 Eric Backus <ericb@lsid.hp.com> - - * dcgettext.c: Fix bug in preprocessor conditionals. - -Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe <beebe@math.utah.edu> - - * libgettext.h: Solaris cc does not understand - #if !SYMBOL1 && !SYMBOL2. Sad but true. - -Thu Nov 23 16:22:14 1995 Ulrich Drepper <drepper@myware> - - * hash-string.h (hash_string): - Fix for machine with >32 bit `unsigned long's. - - * dcgettext.c (DCGETTEXT): - Fix horrible bug in loop for alternative translation. - -Thu Nov 23 01:45:29 1995 Ulrich Drepper <drepper@myware> - - * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed: - Some further simplifications in message number generation. - -Mon Nov 20 21:08:43 1995 Ulrich Drepper <drepper@myware> - - * libintl.h.glibc: Use __const instead of const in prototypes. - - * Makefile.in (install-src): - Install libintl.h.install instead of libintl.h. This - is a stripped-down version. Suggested by Peter Miller. - - * libintl.h.install, libintl.h.glibc: Initial revision. - - * localealias.c (_nl_expand_alias, read_alias_file): - Protect prototypes in type casts by __P. - -Tue Nov 14 16:43:58 1995 Ulrich Drepper <drepper@myware> - - * hash-string.h: Correct prototype for hash_string. - -Sun Nov 12 12:42:30 1995 Ulrich Drepper <drepper@myware> - - * hash-string.h (hash_string): Add prototype. - - * gettextP.h: Fix copyright. - (SWAP): Add prototype. - -Wed Nov 8 22:56:33 1995 Ulrich Drepper <drepper@myware> - - * localealias.c (read_alias_file): Forgot sizeof. - Avoid calling *printf function. This introduces a big overhead. - Patch by Roland McGrath. - -Tue Nov 7 14:21:08 1995 Ulrich Drepper <drepper@myware> - - * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy. - - * finddomain.c (stpcpy): - Define substitution function local. The macro was to flaky. - - * cat-compat.c: Fix typo. - - * xopen-msg.sed, linux-msg.sed: - While bringing message number to right place only accept digits. - - * linux-msg.sed, xopen-msg.sed: Now that the counter does not have - leading 0s we don't need to remove them. Reported by Marcus - Daniels. - - * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in - dependency. Reported by Marcus Daniels. - - * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement. - Generally cleanup using #if instead of #ifndef. - - * Makefile.in: Correct typos in comment. By Franc,ois Pinard. - -Mon Nov 6 00:27:02 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (install-src): Don't install libintl.h and libintl.a - if we use an available gettext implementation. - -Sun Nov 5 22:02:08 1995 Ulrich Drepper <drepper@myware> - - * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported - by Franc,ois Pinard. - - * libgettext.h: Use #if instead of #ifdef/#ifndef. - - * finddomain.c: - Comments describing what has to be done should start with FIXME. - -Sun Nov 5 19:38:01 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning. - DISTFILES.common names the files common to both dist goals. - DISTFILES.gettext are the files only distributed in GNU gettext. - -Sun Nov 5 17:32:54 1995 Ulrich Drepper <drepper@myware> - - * dcgettext.c (DCGETTEXT): Correct searching in derived locales. - This was necessary since a change in _nl_find_msg several weeks - ago. I really don't know this is still not fixed. - -Sun Nov 5 12:43:12 1995 Ulrich Drepper <drepper@myware> - - * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This - might mark a special condition. - - * finddomain.c (make_entry_rec): Don't make illegal entry as decided. - - * Makefile.in (dist): Suppress error message when ln failed. - Get files from $(srcdir) explicitly. - - * libgettext.h (gettext_const): Rename to gettext_noop. - -Fri Nov 3 07:36:50 1995 Ulrich Drepper <drepper@myware> - - * finddomain.c (make_entry_rec): - Protect against wrong locale names by testing mask. - - * libgettext.h (gettext_const): Add macro definition. - Capitalize macro arguments. - -Thu Nov 2 23:15:51 1995 Ulrich Drepper <drepper@myware> - - * finddomain.c (_nl_find_domain): - Test for pointer != NULL before accessing value. - Reported by Tom Tromey. - - * gettext.c (NULL): - Define as (void*)0 instad of 0. Reported by Franc,ois Pinard. - -Mon Oct 30 21:28:52 1995 Ulrich Drepper <drepper@myware> - - * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering. - -Sat Oct 28 23:20:47 1995 Ulrich Drepper <drepper@myware> - - * libgettext.h: Disable dcgettext optimization for Solaris 2.3. - - * localealias.c (alias_compare): - Peter Miller reported that tolower in some systems is - even dumber than I thought. Protect call by `isupper'. - -Fri Oct 27 22:22:51 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (libdir, includedir): New variables. - (install-src): Install libintl.a and libintl.h in correct dirs. - -Fri Oct 27 22:07:29 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c. - - * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques. - - * localealias.c: - Fix typo and superflous test. Reported by Christian von Roques. - -Fri Oct 6 11:52:05 1995 Ulrich Drepper <drepper@myware> - - * finddomain.c (_nl_find_domain): - Correct some remainder from the pre-CEN syntax. Now - we don't have a constant number of successors anymore. - -Wed Sep 27 21:41:13 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (DISTFILES): Add libintl.h.glibc. - - * Makefile.in (dist-libc): Add goal for packing sources for glibc. - (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc. - - * loadmsgcat.c: Forget to continue #if line. - - * localealias.c: - [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name - space clean. - - * dcgettext.c, finddomain.c: Better comment to last change. - - * loadmsgcat.c: - [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to - __fstat, __open, __close, __read, __mmap, and __munmap resp - to keep ANSI C name space clean. - - * finddomain.c: - [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean. - - * dcgettext.c: - [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to - keep ANSI C name space clean. - - * libgettext.h: - Include sys/types.h for those old SysV systems out there. - Reported by Francesco Potorti`. - - * loadmsgcat.c (use_mmap): Define if compiled for glibc. - - * bindtextdom.c: Include all those standard headers - unconditionally if _LIBC is defined. - - * finddomain.c: Fix 2 times defiend -> defined. - - * textdomain.c: Include libintl.h instead of libgettext.h when - compiling for glibc. Include all those standard headers - unconditionally if _LIBC is defined. - - * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc. - - * gettext.c: - Include libintl.h instead of libgettext.h when compiling for glibc. - Get NULL from stddef.h if we compile for glibc. - - * finddomain.c: Include libintl.h instead of libgettext.h when - compiling for glibc. Include all those standard headers - unconditionally if _LIBC is defined. - - * dcgettext.c: Include all those standard headers unconditionally - if _LIBC is defined. - - * dgettext.c: If compiled in glibc include libintl.h instead of - libgettext.h. - (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc. - - * dcgettext.c: If compiled in glibc include libintl.h instead of - libgettext.h. - (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc. - - * bindtextdom.c: - If compiled in glibc include libintl.h instead of libgettext.h. - -Mon Sep 25 22:23:06 1995 Ulrich Drepper <drepper@myware> - - * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0. - Reported by Marcus Daniels. - - * cat-compat.c (bindtextdomain): - String used in putenv must not be recycled. - Reported by Marcus Daniels. - - * libgettext.h (__USE_GNU_GETTEXT): - Additional symbol to signal that we use GNU gettext - library. - - * cat-compat.c (bindtextdomain): - Fix bug with the strange stpcpy replacement. - Reported by Nelson Beebe. - -Sat Sep 23 08:23:51 1995 Ulrich Drepper <drepper@myware> - - * cat-compat.c: Include <string.h> for stpcpy prototype. - - * localealias.c (read_alias_file): - While expand strdup code temporary variable `cp' hided - higher level variable with same name. Rename to `tp'. - - * textdomain.c (textdomain): - Avoid warning by using temporary variable in strdup code. - - * finddomain.c (_nl_find_domain): Remove unused variable `application'. - -Thu Sep 21 15:51:44 1995 Ulrich Drepper <drepper@myware> - - * localealias.c (alias_compare): - Use strcasecmp() only if available. Else use - implementation in place. - - * intl-compat.c: - Wrapper functions now call *__ functions instead of __*. - - * libgettext.h: Declare prototypes for *__ functions instead for __*. - - * cat-compat.c, loadmsgcat.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - - * bindtextdom.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - Rename to bindtextdomain__ if not used in GNU C Library. - - * dgettext.c: - Rename function to dgettext__ if not used in GNU C Library. - - * gettext.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - Functions now called gettext__ if not used in GNU C Library. - - * dcgettext.c, localealias.c, textdomain.c, finddomain.c: - Don't use xmalloc, xstrdup, and stpcpy. These functions are not part - of the standard libc and so prevent libintl.a from being used - standalone. - -Sun Sep 17 23:14:49 1995 Ulrich Drepper <drepper@myware> - - * finddomain.c: Correct some bugs in handling of CEN standard - locale definitions. - -Thu Sep 7 01:49:28 1995 Ulrich Drepper <drepper@myware> - - * finddomain.c: Implement CEN syntax. - - * gettextP.h (loaded_domain): Extend number of successors to 31. - -Sat Aug 19 19:25:29 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (aliaspath): Remove path to X11 locale dir. - - * Makefile.in: Make install-src depend on install. This helps - gettext to install the sources and other packages can use the - install goal. - -Sat Aug 19 15:19:33 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (uninstall): Remove stuff installed by install-src. - -Tue Aug 15 13:13:53 1995 Ulrich Drepper <drepper@myware> - - * VERSION.in: Initial revision. - - * Makefile.in (DISTFILES): - Add VERSION file. This is not necessary for gettext, but - for other packages using this library. - -Tue Aug 15 06:16:44 1995 Ulrich Drepper <drepper@myware> - - * gettextP.h (_nl_find_domain): - New prototype after changing search strategy. - - * finddomain.c (_nl_find_domain): - We now try only to find a specified catalog. Fall back to other - catalogs listed in the locale list is now done in __dcgettext. - - * dcgettext.c (__dcgettext): - Now we provide message fall back even to different languages. - I.e. if a message is not available in one language all the other - in the locale list a tried. Formerly fall back was only possible - within one language. Implemented by moving one loop from - _nl_find_domain to here. - -Mon Aug 14 23:45:50 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (gettextsrcdir): - Directory where source of GNU gettext library are made - available. - (INSTALL, INSTALL_DATA): Programs used for installing sources. - (gettext-src): New. Rule to install GNU gettext sources for use in - gettextize shell script. - -Sun Aug 13 14:40:48 1995 Ulrich Drepper <drepper@myware> - - * loadmsgcat.c (_nl_load_domain): - Use mmap for loading only when munmap function is - also available. - - * Makefile.in (install): Depend on `all' goal. - -Wed Aug 9 11:04:33 1995 Ulrich Drepper <drepper@myware> - - * localealias.c (read_alias_file): - Do not overwrite '\n' when terminating alias value string. - - * localealias.c (read_alias_file): - Handle long lines. Ignore the rest not fitting in - the buffer after the initial `fgets' call. - -Wed Aug 9 00:54:29 1995 Ulrich Drepper <drepper@myware> - - * gettextP.h (_nl_load_domain): - Add prototype, replacing prototype for _nl_load_msg_cat. - - * finddomain.c (_nl_find_domain): - Remove unneeded variable filename and filename_len. - (expand_alias): Remove prototype because functions does not - exist anymore. - - * localealias.c (read_alias_file): - Change type of fname_len parameter to int. - (xmalloc): Add prototype. - - * loadmsgcat.c: Better prototypes for xmalloc. - -Tue Aug 8 22:30:39 1995 Ulrich Drepper <drepper@myware> - - * finddomain.c (_nl_find_domain): - Allow alias name to be constructed from the four components. - - * Makefile.in (aliaspath): New variable. Set to preliminary value. - (SOURCES): Add localealias.c. - (OBJECTS): Add localealias.o. - - * gettextP.h: Add prototype for _nl_expand_alias. - - * finddomain.c: Aliasing handled in intl/localealias.c. - - * localealias.c: Aliasing for locale names. - - * bindtextdom.c: Better prototypes for xmalloc and xstrdup. - -Mon Aug 7 23:47:42 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (DISTFILES): gettext.perl is now found in misc/. - - * cat-compat.c (bindtextdomain): - Correct implementation. dirname parameter was not used. - Reported by Marcus Daniels. - - * gettextP.h (loaded_domain): - New fields `successor' and `decided' for oo, lazy - message handling implementation. - - * dcgettext.c: - Adopt for oo, lazy message handliing. - Now we can inherit translations from less specific locales. - (find_msg): New function. - - * loadmsgcat.c, finddomain.c: - Complete rewrite. Implement oo, lazy message handling :-). - We now have an additional environment variable `LANGUAGE' with - a higher priority than LC_ALL for the LC_MESSAGE locale. - Here we can set a colon separated list of specifications each - of the form `language[_territory[.codeset]][@modifier]'. - -Sat Aug 5 09:55:42 1995 Ulrich Drepper <drepper@myware> - - * finddomain.c (unistd.h): - Include to get _PC_PATH_MAX defined on system having it. - -Fri Aug 4 22:42:00 1995 Ulrich Drepper <drepper@myware> - - * finddomain.c (stpcpy): Include prototype. - - * Makefile.in (dist): Remove `copying instead' message. - -Wed Aug 2 18:52:03 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (ID, TAGS): Do not use $^. - -Tue Aug 1 20:07:11 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (TAGS, ID): Use $^ as command argument. - (TAGS): Give etags -o option t write to current directory, - not $(srcdir). - (ID): Use $(srcdir) instead os $(top_srcdir)/src. - (distclean): Remove ID. - -Sun Jul 30 11:51:46 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (gnulocaledir): - New variable, always using share/ for data directory. - (DEFS): Add GNULOCALEDIR, used in finddomain.c. - - * finddomain.c (_nl_default_dirname): - Set to GNULOCALEDIR, because it always has to point - to the directory where GNU gettext Library writes it to. - - * intl-compat.c (textdomain, bindtextdomain): - Undefine macros before function definition. - -Sat Jul 22 01:10:02 1995 Ulrich Drepper <drepper@myware> - - * libgettext.h (_LIBINTL_H): - Protect definition in case where this file is included as - libgettext.h on Solaris machines. Add comment about this. - -Wed Jul 19 02:36:42 1995 Ulrich Drepper <drepper@myware> - - * intl-compat.c (textdomain): Correct typo. - -Wed Jul 19 01:51:35 1995 Ulrich Drepper <drepper@myware> - - * dcgettext.c (dcgettext): Function now called __dcgettext. - - * dgettext.c (dgettext): Now called __dgettext and calls - __dcgettext. - - * gettext.c (gettext): - Function now called __gettext and calls __dgettext. - - * textdomain.c (textdomain): Function now called __textdomain. - - * bindtextdom.c (bindtextdomain): Function now called - __bindtextdomain. - - * intl-compat.c: Initial revision. - - * Makefile.in (SOURCES): Add intl-compat.c. - (OBJECTS): We always compile the GNU gettext library functions. - OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o, - and intl-compat.o. - (GETTOBJS): Contains now only intl-compat.o. - - * libgettext.h: - Re-include protection matches dualistic character of libgettext.h. - For all functions in GNU gettext library define __ counter part. - - * finddomain.c (strchr): Define as index if not found in C library. - (_nl_find_domain): For relative paths paste / in between. - -Tue Jul 18 16:37:45 1995 Ulrich Drepper <drepper@myware> - - * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h. - - * xopen-msg.sed: Fix bug with `msgstr ""' lines. - A little bit better comments. - -Tue Jul 18 01:18:27 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in: - po-mode.el, makelinks, combine-sh are now found in ../misc. - - * po-mode.el, makelinks, combine-sh, elisp-comp: - Moved to ../misc/. - - * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__. - -Sun Jul 16 22:33:02 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (INSTALL, INSTALL_DATA): New variables. - (install-data, uninstall): Install/uninstall .elc file. - - * po-mode.el (Installation comment): - Add .pox as possible extension of .po files. - -Sun Jul 16 13:23:27 1995 Ulrich Drepper <drepper@myware> - - * elisp-comp: Complete new version by Franc,ois: This does not - fail when not compiling in the source directory. - -Sun Jul 16 00:12:17 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (../po/cat-id-tbl.o): - Use $(MAKE) instead of make for recursive make. - - * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh. - (install-exec): Add missing dummy goal. - (install-data, uninstall): @ in multi-line shell command at - beginning, not in front of echo. Reported by Eric Backus. - -Sat Jul 15 00:21:28 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (DISTFILES): - Rename libgettext.perl to gettext.perl to fit in 14 chars - file systems. - - * gettext.perl: - Rename to gettext.perl to fit in 14 chars file systems. - -Thu Jul 13 23:17:20 1995 Ulrich Drepper <drepper@myware> - - * cat-compat.c: If !STDC_HEADERS try to include malloc.h. - -Thu Jul 13 20:55:02 1995 Ulrich Drepper <drepper@myware> - - * po2tbl.sed.in: Pretty printing. - - * linux-msg.sed, xopen-msg.sed: - Correct bugs with handling substitute flags in branches. - - * hash-string.h (hash_string): - Old K&R compilers don't under stand `unsigned char'. - - * gettext.h (nls_uint32): - Some old K&R compilers (eg HP) don't understand `unsigned int'. - - * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes. - -Thu Jul 13 01:34:33 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (ELCFILES): New variable. - (DISTFILES): Add elisp-comp. - Add implicit rule for .el -> .elc compilation. - (install-data): install $ELCFILES - (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp. - - * elisp-comp: Initial revision - -Wed Jul 12 16:14:52 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in: - cat-id-tbl.c is now found in po/. This enables us to use an identical - intl/ directory in all packages. - - * dcgettext.c (dcgettext): hashing does not work for table size <= 2. - - * textdomain.c: fix typo (#if def -> #if defined) - -Tue Jul 11 18:44:43 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in (stamp-cat-id): use top_srcdir to address source files - (DISTFILES,distclean): move tupdate.perl to src/ - - * po-to-tbl.sed.in: - add additional jump to clear change flag to recognize multiline strings - -Tue Jul 11 01:32:50 1995 Ulrich Drepper <drepper@myware> - - * textdomain.c: Protect inclusion of stdlib.h and string.h. - - * loadmsgcat.c: Protect inclusion of stdlib.h. - - * libgettext.h: Protect inclusion of locale.h. - Allow use in C++ programs. - Define NULL is not happened already. - - * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of - po-to-tbl.sed. - (distclean): remove po-to-tbl.sed and tupdate.perl. - - * tupdate.perl.in: Substitute Perl path even in exec line. - Don't include entries without translation from old .po file. - -Tue Jul 4 00:41:51 1995 Ulrich Drepper <drepper@myware> - - * tupdate.perl.in: use "Updated: " in msgid "". - - * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR). - Define getenv if !__STDC__. - - * bindtextdom.c: Protect stdlib.h and string.h inclusion. - Define free if !__STDC__. - - * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. - Define free if !__STDC__. - - * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR. - -Mon Jul 3 23:56:30 1995 Ulrich Drepper <drepper@myware> - - * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR. - Remove unneeded $(srcdir) from Makefile.in dependency. - - * makelinks: Add copyright and short description. - - * po-mode.el: Last version for 0.7. - - * tupdate.perl.in: Fix die message. - - * dcgettext.c: Protect include of string.h. - - * gettext.c: Protect include of stdlib.h and further tries to get NULL. - - * finddomain.c: Some corrections in includes. - - * Makefile.in (INCLUDES): Prune list correct path to Makefile.in. - - * po-to-tbl.sed: Adopt for new .po file format. - - * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format. - -Sun Jul 2 23:55:03 1995 Ulrich Drepper <drepper@myware> - - * tupdate.perl.in: Complete rewrite for new .po file format. - -Sun Jul 2 02:06:50 1995 Ulrich Drepper <drepper@myware> - - * First official release. This directory contains all the code - needed to internationalize own packages. It provides functions - which allow to use the X/Open catgets function with an interface - like the Uniforum gettext function. For system which does not - have neither of those a complete implementation is provided. diff --git a/texinfo/intl/Makefile.in b/texinfo/intl/Makefile.in deleted file mode 100644 index a41fb5796b0..00000000000 --- a/texinfo/intl/Makefile.in +++ /dev/null @@ -1,214 +0,0 @@ -# Makefile for directory with message catalog handling in GNU NLS Utilities. -# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -SHELL = /bin/sh - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -top_builddir = .. -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -transform = @program_transform_name@ -libdir = $(exec_prefix)/lib -includedir = $(prefix)/include -datadir = $(prefix)/@DATADIRNAME@ -localedir = $(datadir)/locale -gnulocaledir = $(prefix)/share/locale -gettextsrcdir = @datadir@/gettext/intl -aliaspath = $(localedir):. -subdir = intl - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = @MKINSTALLDIRS@ - -l = @l@ - -AR = ar -CC = @CC@ -LIBTOOL = @LIBTOOL@ -RANLIB = @RANLIB@ - -DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \ --DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@ -CPPFLAGS = @CPPFLAGS@ -CFLAGS = @CFLAGS@ -LDFLAGS = @LDFLAGS@ - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -HEADERS = $(COMHDRS) libgettext.h loadinfo.h -COMHDRS = gettext.h gettextP.h hash-string.h -SOURCES = $(COMSRCS) intl-compat.c cat-compat.c -COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \ -finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \ -explodename.c -OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \ -finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \ -explodename.$lo -CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo -GETTOBJS = intl-compat.$lo -DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \ -xopen-msg.sed $(HEADERS) $(SOURCES) -DISTFILES.normal = VERSION -DISTFILES.gettext = libintl.glibc intlh.inst.in - -.SUFFIXES: -.SUFFIXES: .c .o .lo -.c.o: - $(COMPILE) $< -.c.lo: - $(LIBTOOL) --mode=compile $(COMPILE) $< - -INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib - -all: all-@USE_INCLUDED_LIBINTL@ - -all-yes: libintl.$la intlh.inst -all-no: - -libintl.a: $(OBJECTS) - rm -f $@ - $(AR) cru $@ $(OBJECTS) - $(RANLIB) $@ - -libintl.la: $(OBJECTS) - $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \ - -version-info 1:0 -rpath $(libdir) - -../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot - cd ../po && $(MAKE) cat-id-tbl.$lo - -check: all - -# This installation goal is only used in GNU gettext. Packages which -# only use the library should use install instead. - -# We must not install the libintl.h/libintl.a files if we are on a -# system which has the gettext() function in its C library or in a -# separate library or use the catgets interface. A special case is -# where configure found a previously installed GNU gettext library. -# If you want to use the one which comes with this version of the -# package, you have to use `configure --with-included-gettext'. -install: install-exec install-data -install-exec: all - if test "$(PACKAGE)" = "gettext" \ - && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ - if test -r $(MKINSTALLDIRS); then \ - $(MKINSTALLDIRS) $(libdir) $(includedir); \ - else \ - $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \ - fi; \ - $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \ - $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \ - else \ - : ; \ - fi -install-data: all - if test "$(PACKAGE)" = "gettext"; then \ - if test -r $(MKINSTALLDIRS); then \ - $(MKINSTALLDIRS) $(gettextsrcdir); \ - else \ - $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ - fi; \ - $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \ - dists="$(DISTFILES.common)"; \ - for file in $$dists; do \ - $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - dists="$(DISTFILES.common)"; \ - for file in $$dists; do \ - rm -f $(gettextsrcdir)/$$file; \ - done - -info dvi: - -$(OBJECTS): ../config.h libgettext.h -bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h -dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h - -tags: TAGS - -TAGS: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) - -id: ID - -ID: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && mkid -f$$here/ID $(HEADERS) $(SOURCES) - - -mostlyclean: - rm -f *.a *.o *.lo core core.* - -clean: mostlyclean - -distclean: clean - rm -f Makefile ID TAGS po2msg.sed po2tbl.sed libintl.h - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - - -# GNU gettext needs not contain the file `VERSION' but contains some -# other files which should not be distributed in other packages. -distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: Makefile $(DISTFILES) - if test "$(PACKAGE)" = gettext; then \ - additional="$(DISTFILES.gettext)"; \ - else \ - additional="$(DISTFILES.normal)"; \ - fi; \ - for file in $(DISTFILES.common) $$additional; do \ - ln $(srcdir)/$$file $(distdir) 2> /dev/null \ - || cp -p $(srcdir)/$$file $(distdir); \ - done - -dist-libc: - tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc - -Makefile: Makefile.in ../config.status - cd .. \ - && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - -# The dependency for intlh.inst is different in gettext and all other -# packages. Because we cannot you GNU make features we have to solve -# the problem while rewriting Makefile.in. -@GT_YES@intlh.inst: intlh.inst.in ../config.status -@GT_YES@ cd .. \ -@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \ -@GT_YES@ $(SHELL) ./config.status -@GT_NO@.PHONY: intlh.inst -@GT_NO@intlh.inst: - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/texinfo/intl/VERSION b/texinfo/intl/VERSION deleted file mode 100644 index d31950a61d6..00000000000 --- a/texinfo/intl/VERSION +++ /dev/null @@ -1 +0,0 @@ -GNU gettext library from gettext-0.10.32 diff --git a/texinfo/intl/bindtextdom.c b/texinfo/intl/bindtextdom.c deleted file mode 100644 index 9fcb8d9f29b..00000000000 --- a/texinfo/intl/bindtextdom.c +++ /dev/null @@ -1,199 +0,0 @@ -/* Implementation of the bindtextdomain(3) function - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include <stdlib.h> -#else -# ifdef HAVE_MALLOC_H -# include <malloc.h> -# else -void free (); -# endif -#endif - -#if defined HAVE_STRING_H || defined _LIBC -# include <string.h> -#else -# include <strings.h> -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif - -#ifdef _LIBC -# include <libintl.h> -#else -# include "libgettext.h" -#endif -#include "gettext.h" -#include "gettextP.h" - -/* @@ end of prolog @@ */ - -/* Contains the default location of the message catalogs. */ -extern const char _nl_default_dirname[]; - -/* List with bindings of specific domains. */ -extern struct binding *_nl_domain_bindings; - - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define BINDTEXTDOMAIN __bindtextdomain -# define strdup(str) __strdup (str) -#else -# define BINDTEXTDOMAIN bindtextdomain__ -#endif - -/* Specify that the DOMAINNAME message catalog will be found - in DIRNAME rather than in the system locale data base. */ -char * -BINDTEXTDOMAIN (domainname, dirname) - const char *domainname; - const char *dirname; -{ - struct binding *binding; - - /* Some sanity checks. */ - if (domainname == NULL || domainname[0] == '\0') - return NULL; - - for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) - { - int compare = strcmp (domainname, binding->domainname); - if (compare == 0) - /* We found it! */ - break; - if (compare < 0) - { - /* It is not in the list. */ - binding = NULL; - break; - } - } - - if (dirname == NULL) - /* The current binding has be to returned. */ - return binding == NULL ? (char *) _nl_default_dirname : binding->dirname; - - if (binding != NULL) - { - /* The domain is already bound. If the new value and the old - one are equal we simply do nothing. Otherwise replace the - old binding. */ - if (strcmp (dirname, binding->dirname) != 0) - { - char *new_dirname; - - if (strcmp (dirname, _nl_default_dirname) == 0) - new_dirname = (char *) _nl_default_dirname; - else - { -#if defined _LIBC || defined HAVE_STRDUP - new_dirname = strdup (dirname); - if (new_dirname == NULL) - return NULL; -#else - size_t len = strlen (dirname) + 1; - new_dirname = (char *) malloc (len); - if (new_dirname == NULL) - return NULL; - - memcpy (new_dirname, dirname, len); -#endif - } - - if (binding->dirname != _nl_default_dirname) - free (binding->dirname); - - binding->dirname = new_dirname; - } - } - else - { - /* We have to create a new binding. */ - size_t len; - struct binding *new_binding = - (struct binding *) malloc (sizeof (*new_binding)); - - if (new_binding == NULL) - return NULL; - -#if defined _LIBC || defined HAVE_STRDUP - new_binding->domainname = strdup (domainname); - if (new_binding->domainname == NULL) - return NULL; -#else - len = strlen (domainname) + 1; - new_binding->domainname = (char *) malloc (len); - if (new_binding->domainname == NULL) - return NULL; - memcpy (new_binding->domainname, domainname, len); -#endif - - if (strcmp (dirname, _nl_default_dirname) == 0) - new_binding->dirname = (char *) _nl_default_dirname; - else - { -#if defined _LIBC || defined HAVE_STRDUP - new_binding->dirname = strdup (dirname); - if (new_binding->dirname == NULL) - return NULL; -#else - len = strlen (dirname) + 1; - new_binding->dirname = (char *) malloc (len); - if (new_binding->dirname == NULL) - return NULL; - memcpy (new_binding->dirname, dirname, len); -#endif - } - - /* Now enqueue it. */ - if (_nl_domain_bindings == NULL - || strcmp (domainname, _nl_domain_bindings->domainname) < 0) - { - new_binding->next = _nl_domain_bindings; - _nl_domain_bindings = new_binding; - } - else - { - binding = _nl_domain_bindings; - while (binding->next != NULL - && strcmp (domainname, binding->next->domainname) > 0) - binding = binding->next; - - new_binding->next = binding->next; - binding->next = new_binding; - } - - binding = new_binding; - } - - return binding->dirname; -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__bindtextdomain, bindtextdomain); -#endif diff --git a/texinfo/intl/cat-compat.c b/texinfo/intl/cat-compat.c deleted file mode 100644 index 867d901b8ff..00000000000 --- a/texinfo/intl/cat-compat.c +++ /dev/null @@ -1,262 +0,0 @@ -/* Compatibility code for gettext-using-catgets interface. - Copyright (C) 1995, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdio.h> - -#ifdef STDC_HEADERS -# include <stdlib.h> -# include <string.h> -#else -char *getenv (); -# ifdef HAVE_MALLOC_H -# include <malloc.h> -# endif -#endif - -#ifdef HAVE_NL_TYPES_H -# include <nl_types.h> -#endif - -#include "libgettext.h" - -/* @@ end of prolog @@ */ - -/* XPG3 defines the result of `setlocale (category, NULL)' as: - ``Directs `setlocale()' to query `category' and return the current - setting of `local'.'' - However it does not specify the exact format. And even worse: POSIX - defines this not at all. So we can use this feature only on selected - system (e.g. those using GNU C Library). */ -#ifdef _LIBC -# define HAVE_LOCALE_NULL -#endif - -/* The catalog descriptor. */ -static nl_catd catalog = (nl_catd) -1; - -/* Name of the default catalog. */ -static const char default_catalog_name[] = "messages"; - -/* Name of currently used catalog. */ -static const char *catalog_name = default_catalog_name; - -/* Get ID for given string. If not found return -1. */ -static int msg_to_cat_id PARAMS ((const char *msg)); - -/* Substitution for systems lacking this function in their C library. */ -#if !_LIBC && !HAVE_STPCPY -static char *stpcpy PARAMS ((char *dest, const char *src)); -#endif - - -/* Set currently used domain/catalog. */ -char * -textdomain (domainname) - const char *domainname; -{ - nl_catd new_catalog; - char *new_name; - size_t new_name_len; - char *lang; - -#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \ - && defined HAVE_LOCALE_NULL - lang = setlocale (LC_MESSAGES, NULL); -#else - lang = getenv ("LC_ALL"); - if (lang == NULL || lang[0] == '\0') - { - lang = getenv ("LC_MESSAGES"); - if (lang == NULL || lang[0] == '\0') - lang = getenv ("LANG"); - } -#endif - if (lang == NULL || lang[0] == '\0') - lang = "C"; - - /* See whether name of currently used domain is asked. */ - if (domainname == NULL) - return (char *) catalog_name; - - if (domainname[0] == '\0') - domainname = default_catalog_name; - - /* Compute length of added path element. */ - new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang) - + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1 - + sizeof (".cat"); - - new_name = (char *) malloc (new_name_len); - if (new_name == NULL) - return NULL; - - strcpy (new_name, PACKAGE); - new_catalog = catopen (new_name, 0); - - if (new_catalog == (nl_catd) -1) - { - /* NLSPATH search didn't work, try absolute path */ - sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang, - PACKAGE); - new_catalog = catopen (new_name, 0); - - if (new_catalog == (nl_catd) -1) - { - free (new_name); - return (char *) catalog_name; - } - } - - /* Close old catalog. */ - if (catalog != (nl_catd) -1) - catclose (catalog); - if (catalog_name != default_catalog_name) - free ((char *) catalog_name); - - catalog = new_catalog; - catalog_name = new_name; - - return (char *) catalog_name; -} - -char * -bindtextdomain (domainname, dirname) - const char *domainname; - const char *dirname; -{ -#if HAVE_SETENV || HAVE_PUTENV - char *old_val, *new_val, *cp; - size_t new_val_len; - - /* This does not make much sense here but to be compatible do it. */ - if (domainname == NULL) - return NULL; - - /* Compute length of added path element. If we use setenv we don't need - the first byts for NLSPATH=, but why complicate the code for this - peanuts. */ - new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname) - + sizeof ("/%L/LC_MESSAGES/%N.cat"); - - old_val = getenv ("NLSPATH"); - if (old_val == NULL || old_val[0] == '\0') - { - old_val = NULL; - new_val_len += 1 + sizeof (LOCALEDIR) - 1 - + sizeof ("/%L/LC_MESSAGES/%N.cat"); - } - else - new_val_len += strlen (old_val); - - new_val = (char *) malloc (new_val_len); - if (new_val == NULL) - return NULL; - -# if HAVE_SETENV - cp = new_val; -# else - cp = stpcpy (new_val, "NLSPATH="); -# endif - - cp = stpcpy (cp, dirname); - cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:"); - - if (old_val == NULL) - { -# if __STDC__ - stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat"); -# else - - cp = stpcpy (cp, LOCALEDIR); - stpcpy (cp, "/%L/LC_MESSAGES/%N.cat"); -# endif - } - else - stpcpy (cp, old_val); - -# if HAVE_SETENV - setenv ("NLSPATH", new_val, 1); - free (new_val); -# else - putenv (new_val); - /* Do *not* free the environment entry we just entered. It is used - from now on. */ -# endif - -#endif - - return (char *) domainname; -} - -#undef gettext -char * -gettext (msg) - const char *msg; -{ - int msgid; - - if (msg == NULL || catalog == (nl_catd) -1) - return (char *) msg; - - /* Get the message from the catalog. We always use set number 1. - The message ID is computed by the function `msg_to_cat_id' - which works on the table generated by `po-to-tbl'. */ - msgid = msg_to_cat_id (msg); - if (msgid == -1) - return (char *) msg; - - return catgets (catalog, 1, msgid, (char *) msg); -} - -/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries - for the one equal to msg. If it is found return the ID. In case when - the string is not found return -1. */ -static int -msg_to_cat_id (msg) - const char *msg; -{ - int cnt; - - for (cnt = 0; cnt < _msg_tbl_length; ++cnt) - if (strcmp (msg, _msg_tbl[cnt]._msg) == 0) - return _msg_tbl[cnt]._msg_number; - - return -1; -} - - -/* @@ begin of epilog @@ */ - -/* We don't want libintl.a to depend on any other library. So we - avoid the non-standard function stpcpy. In GNU C Library this - function is available, though. Also allow the symbol HAVE_STPCPY - to be defined. */ -#if !_LIBC && !HAVE_STPCPY -static char * -stpcpy (dest, src) - char *dest; - const char *src; -{ - while ((*dest++ = *src++) != '\0') - /* Do nothing. */ ; - return dest - 1; -} -#endif diff --git a/texinfo/intl/dcgettext.c b/texinfo/intl/dcgettext.c deleted file mode 100644 index a316bfd1086..00000000000 --- a/texinfo/intl/dcgettext.c +++ /dev/null @@ -1,593 +0,0 @@ -/* Implementation of the dcgettext(3) function - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <sys/types.h> - -#ifdef __GNUC__ -# define alloca __builtin_alloca -# define HAVE_ALLOCA 1 -#else -# if defined HAVE_ALLOCA_H || defined _LIBC -# include <alloca.h> -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca -char *alloca (); -# endif -# endif -# endif -#endif - -#include <errno.h> -#ifndef errno -extern int errno; -#endif -#ifndef __set_errno -# define __set_errno(val) errno = (val) -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include <stdlib.h> -#else -char *getenv (); -# ifdef HAVE_MALLOC_H -# include <malloc.h> -# else -void free (); -# endif -#endif - -#if defined HAVE_STRING_H || defined _LIBC -# ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -# endif -# include <string.h> -#else -# include <strings.h> -#endif -#if !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#if defined HAVE_UNISTD_H || defined _LIBC -# include <unistd.h> -#endif - -#include "gettext.h" -#include "gettextP.h" -#ifdef _LIBC -# include <libintl.h> -#else -# include "libgettext.h" -#endif -#include "hash-string.h" - -/* @@ end of prolog @@ */ - -#ifdef _LIBC -/* Rename the non ANSI C functions. This is required by the standard - because some ANSI C functions will require linking with this object - file and the name space must not be polluted. */ -# define getcwd __getcwd -# define stpcpy __stpcpy -#else -# if !defined HAVE_GETCWD -char *getwd (); -# define getcwd(buf, max) getwd (buf) -# else -char *getcwd (); -# endif -# ifndef HAVE_STPCPY -static char *stpcpy PARAMS ((char *dest, const char *src)); -# endif -#endif - -/* Amount to increase buffer size by in each try. */ -#define PATH_INCR 32 - -/* The following is from pathmax.h. */ -/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define - PATH_MAX but might cause redefinition warnings when sys/param.h is - later included (as on MORE/BSD 4.3). */ -#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__)) -# include <limits.h> -#endif - -#ifndef _POSIX_PATH_MAX -# define _POSIX_PATH_MAX 255 -#endif - -#if !defined(PATH_MAX) && defined(_PC_PATH_MAX) -# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX)) -#endif - -/* Don't include sys/param.h if it already has been. */ -#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN) -# include <sys/param.h> -#endif - -#if !defined(PATH_MAX) && defined(MAXPATHLEN) -# define PATH_MAX MAXPATHLEN -#endif - -#ifndef PATH_MAX -# define PATH_MAX _POSIX_PATH_MAX -#endif - -/* XPG3 defines the result of `setlocale (category, NULL)' as: - ``Directs `setlocale()' to query `category' and return the current - setting of `local'.'' - However it does not specify the exact format. And even worse: POSIX - defines this not at all. So we can use this feature only on selected - system (e.g. those using GNU C Library). */ -#ifdef _LIBC -# define HAVE_LOCALE_NULL -#endif - -/* Name of the default domain used for gettext(3) prior any call to - textdomain(3). The default value for this is "messages". */ -const char _nl_default_default_domain[] = "messages"; - -/* Value used as the default domain for gettext(3). */ -const char *_nl_current_default_domain = _nl_default_default_domain; - -/* Contains the default location of the message catalogs. */ -const char _nl_default_dirname[] = GNULOCALEDIR; - -/* List with bindings of specific domains created by bindtextdomain() - calls. */ -struct binding *_nl_domain_bindings; - -/* Prototypes for local functions. */ -static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file, - const char *msgid)); -static const char *category_to_name PARAMS ((int category)); -static const char *guess_category_value PARAMS ((int category, - const char *categoryname)); - - -/* For those loosing systems which don't have `alloca' we have to add - some additional code emulating it. */ -#ifdef HAVE_ALLOCA -/* Nothing has to be done. */ -# define ADD_BLOCK(list, address) /* nothing */ -# define FREE_BLOCKS(list) /* nothing */ -#else -struct block_list -{ - void *address; - struct block_list *next; -}; -# define ADD_BLOCK(list, addr) \ - do { \ - struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ - /* If we cannot get a free block we cannot add the new element to \ - the list. */ \ - if (newp != NULL) { \ - newp->address = (addr); \ - newp->next = (list); \ - (list) = newp; \ - } \ - } while (0) -# define FREE_BLOCKS(list) \ - do { \ - while (list != NULL) { \ - struct block_list *old = list; \ - list = list->next; \ - free (old); \ - } \ - } while (0) -# undef alloca -# define alloca(size) (malloc (size)) -#endif /* have alloca */ - - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define DCGETTEXT __dcgettext -#else -# define DCGETTEXT dcgettext__ -#endif - -/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY - locale. */ -char * -DCGETTEXT (domainname, msgid, category) - const char *domainname; - const char *msgid; - int category; -{ -#ifndef HAVE_ALLOCA - struct block_list *block_list = NULL; -#endif - struct loaded_l10nfile *domain; - struct binding *binding; - const char *categoryname; - const char *categoryvalue; - char *dirname, *xdomainname; - char *single_locale; - char *retval; - int saved_errno = errno; - - /* If no real MSGID is given return NULL. */ - if (msgid == NULL) - return NULL; - - /* If DOMAINNAME is NULL, we are interested in the default domain. If - CATEGORY is not LC_MESSAGES this might not make much sense but the - defintion left this undefined. */ - if (domainname == NULL) - domainname = _nl_current_default_domain; - - /* First find matching binding. */ - for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next) - { - int compare = strcmp (domainname, binding->domainname); - if (compare == 0) - /* We found it! */ - break; - if (compare < 0) - { - /* It is not in the list. */ - binding = NULL; - break; - } - } - - if (binding == NULL) - dirname = (char *) _nl_default_dirname; - else if (binding->dirname[0] == '/') - dirname = binding->dirname; - else - { - /* We have a relative path. Make it absolute now. */ - size_t dirname_len = strlen (binding->dirname) + 1; - size_t path_max; - char *ret; - - path_max = (unsigned) PATH_MAX; - path_max += 2; /* The getcwd docs say to do this. */ - - dirname = (char *) alloca (path_max + dirname_len); - ADD_BLOCK (block_list, dirname); - - __set_errno (0); - while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE) - { - path_max += PATH_INCR; - dirname = (char *) alloca (path_max + dirname_len); - ADD_BLOCK (block_list, dirname); - __set_errno (0); - } - - if (ret == NULL) - { - /* We cannot get the current working directory. Don't signal an - error but simply return the default string. */ - FREE_BLOCKS (block_list); - __set_errno (saved_errno); - return (char *) msgid; - } - - stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); - } - - /* Now determine the symbolic name of CATEGORY and its value. */ - categoryname = category_to_name (category); - categoryvalue = guess_category_value (category, categoryname); - - xdomainname = (char *) alloca (strlen (categoryname) - + strlen (domainname) + 5); - ADD_BLOCK (block_list, xdomainname); - - stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"), - domainname), - ".mo"); - - /* Creating working area. */ - single_locale = (char *) alloca (strlen (categoryvalue) + 1); - ADD_BLOCK (block_list, single_locale); - - - /* Search for the given string. This is a loop because we perhaps - got an ordered list of languages to consider for th translation. */ - while (1) - { - /* Make CATEGORYVALUE point to the next element of the list. */ - while (categoryvalue[0] != '\0' && categoryvalue[0] == ':') - ++categoryvalue; - if (categoryvalue[0] == '\0') - { - /* The whole contents of CATEGORYVALUE has been searched but - no valid entry has been found. We solve this situation - by implicitly appending a "C" entry, i.e. no translation - will take place. */ - single_locale[0] = 'C'; - single_locale[1] = '\0'; - } - else - { - char *cp = single_locale; - while (categoryvalue[0] != '\0' && categoryvalue[0] != ':') - *cp++ = *categoryvalue++; - *cp = '\0'; - } - - /* If the current locale value is C (or POSIX) we don't load a - domain. Return the MSGID. */ - if (strcmp (single_locale, "C") == 0 - || strcmp (single_locale, "POSIX") == 0) - { - FREE_BLOCKS (block_list); - __set_errno (saved_errno); - return (char *) msgid; - } - - - /* Find structure describing the message catalog matching the - DOMAINNAME and CATEGORY. */ - domain = _nl_find_domain (dirname, single_locale, xdomainname); - - if (domain != NULL) - { - retval = find_msg (domain, msgid); - - if (retval == NULL) - { - int cnt; - - for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) - { - retval = find_msg (domain->successor[cnt], msgid); - - if (retval != NULL) - break; - } - } - - if (retval != NULL) - { - FREE_BLOCKS (block_list); - __set_errno (saved_errno); - return retval; - } - } - } - /* NOTREACHED */ -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__dcgettext, dcgettext); -#endif - - -static char * -find_msg (domain_file, msgid) - struct loaded_l10nfile *domain_file; - const char *msgid; -{ - size_t top, act, bottom; - struct loaded_domain *domain; - - if (domain_file->decided == 0) - _nl_load_domain (domain_file); - - if (domain_file->data == NULL) - return NULL; - - domain = (struct loaded_domain *) domain_file->data; - - /* Locate the MSGID and its translation. */ - if (domain->hash_size > 2 && domain->hash_tab != NULL) - { - /* Use the hashing table. */ - nls_uint32 len = strlen (msgid); - nls_uint32 hash_val = hash_string (msgid); - nls_uint32 idx = hash_val % domain->hash_size; - nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2)); - nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); - - if (nstr == 0) - /* Hash table entry is empty. */ - return NULL; - - if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len - && strcmp (msgid, - domain->data + W (domain->must_swap, - domain->orig_tab[nstr - 1].offset)) == 0) - return (char *) domain->data + W (domain->must_swap, - domain->trans_tab[nstr - 1].offset); - - while (1) - { - if (idx >= domain->hash_size - incr) - idx -= domain->hash_size - incr; - else - idx += incr; - - nstr = W (domain->must_swap, domain->hash_tab[idx]); - if (nstr == 0) - /* Hash table entry is empty. */ - return NULL; - - if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len - && strcmp (msgid, - domain->data + W (domain->must_swap, - domain->orig_tab[nstr - 1].offset)) - == 0) - return (char *) domain->data - + W (domain->must_swap, domain->trans_tab[nstr - 1].offset); - } - /* NOTREACHED */ - } - - /* Now we try the default method: binary search in the sorted - array of messages. */ - bottom = 0; - top = domain->nstrings; - while (bottom < top) - { - int cmp_val; - - act = (bottom + top) / 2; - cmp_val = strcmp (msgid, domain->data - + W (domain->must_swap, - domain->orig_tab[act].offset)); - if (cmp_val < 0) - top = act; - else if (cmp_val > 0) - bottom = act + 1; - else - break; - } - - /* If an translation is found return this. */ - return bottom >= top ? NULL : (char *) domain->data - + W (domain->must_swap, - domain->trans_tab[act].offset); -} - - -/* Return string representation of locale CATEGORY. */ -static const char * -category_to_name (category) - int category; -{ - const char *retval; - - switch (category) - { -#ifdef LC_COLLATE - case LC_COLLATE: - retval = "LC_COLLATE"; - break; -#endif -#ifdef LC_CTYPE - case LC_CTYPE: - retval = "LC_CTYPE"; - break; -#endif -#ifdef LC_MONETARY - case LC_MONETARY: - retval = "LC_MONETARY"; - break; -#endif -#ifdef LC_NUMERIC - case LC_NUMERIC: - retval = "LC_NUMERIC"; - break; -#endif -#ifdef LC_TIME - case LC_TIME: - retval = "LC_TIME"; - break; -#endif -#ifdef LC_MESSAGES - case LC_MESSAGES: - retval = "LC_MESSAGES"; - break; -#endif -#ifdef LC_RESPONSE - case LC_RESPONSE: - retval = "LC_RESPONSE"; - break; -#endif -#ifdef LC_ALL - case LC_ALL: - /* This might not make sense but is perhaps better than any other - value. */ - retval = "LC_ALL"; - break; -#endif - default: - /* If you have a better idea for a default value let me know. */ - retval = "LC_XXX"; - } - - return retval; -} - -/* Guess value of current locale from value of the environment variables. */ -static const char * -guess_category_value (category, categoryname) - int category; - const char *categoryname; -{ - const char *retval; - - /* The highest priority value is the `LANGUAGE' environment - variable. This is a GNU extension. */ - retval = getenv ("LANGUAGE"); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* `LANGUAGE' is not set. So we have to proceed with the POSIX - methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some - systems this can be done by the `setlocale' function itself. */ -#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL - return setlocale (category, NULL); -#else - /* Setting of LC_ALL overwrites all other. */ - retval = getenv ("LC_ALL"); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* Next comes the name of the desired category. */ - retval = getenv (categoryname); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* Last possibility is the LANG environment variable. */ - retval = getenv ("LANG"); - if (retval != NULL && retval[0] != '\0') - return retval; - - /* We use C as the default domain. POSIX says this is implementation - defined. */ - return "C"; -#endif -} - -/* @@ begin of epilog @@ */ - -/* We don't want libintl.a to depend on any other library. So we - avoid the non-standard function stpcpy. In GNU C Library this - function is available, though. Also allow the symbol HAVE_STPCPY - to be defined. */ -#if !_LIBC && !HAVE_STPCPY -static char * -stpcpy (dest, src) - char *dest; - const char *src; -{ - while ((*dest++ = *src++) != '\0') - /* Do nothing. */ ; - return dest - 1; -} -#endif diff --git a/texinfo/intl/dgettext.c b/texinfo/intl/dgettext.c deleted file mode 100644 index 2fde6770f79..00000000000 --- a/texinfo/intl/dgettext.c +++ /dev/null @@ -1,59 +0,0 @@ -/* dgettext.c -- implementation of the dgettext(3) function - Copyright (C) 1995 Software Foundation, Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#if defined HAVE_LOCALE_H || defined _LIBC -# include <locale.h> -#endif - -#ifdef _LIBC -# include <libintl.h> -#else -# include "libgettext.h" -#endif - -/* @@ end of prolog @@ */ - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define DGETTEXT __dgettext -# define DCGETTEXT __dcgettext -#else -# define DGETTEXT dgettext__ -# define DCGETTEXT dcgettext__ -#endif - -/* Look up MSGID in the DOMAINNAME message catalog of the current - LC_MESSAGES locale. */ -char * -DGETTEXT (domainname, msgid) - const char *domainname; - const char *msgid; -{ - return DCGETTEXT (domainname, msgid, LC_MESSAGES); -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__dgettext, dgettext); -#endif diff --git a/texinfo/intl/explodename.c b/texinfo/intl/explodename.c deleted file mode 100644 index 37c46e9d7b8..00000000000 --- a/texinfo/intl/explodename.c +++ /dev/null @@ -1,181 +0,0 @@ -/* Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <stdlib.h> -#include <string.h> -#include <sys/types.h> - -#include "loadinfo.h" - -/* On some strange systems still no definition of NULL is found. Sigh! */ -#ifndef NULL -# if defined __STDC__ && __STDC__ -# define NULL ((void *) 0) -# else -# define NULL 0 -# endif -#endif - -/* @@ end of prolog @@ */ - -int -_nl_explode_name (name, language, modifier, territory, codeset, - normalized_codeset, special, sponsor, revision) - char *name; - const char **language; - const char **modifier; - const char **territory; - const char **codeset; - const char **normalized_codeset; - const char **special; - const char **sponsor; - const char **revision; -{ - enum { undecided, xpg, cen } syntax; - char *cp; - int mask; - - *modifier = NULL; - *territory = NULL; - *codeset = NULL; - *normalized_codeset = NULL; - *special = NULL; - *sponsor = NULL; - *revision = NULL; - - /* Now we determine the single parts of the locale name. First - look for the language. Termination symbols are `_' and `@' if - we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ - mask = 0; - syntax = undecided; - *language = cp = name; - while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@' - && cp[0] != '+' && cp[0] != ',') - ++cp; - - if (*language == cp) - /* This does not make sense: language has to be specified. Use - this entry as it is without exploding. Perhaps it is an alias. */ - cp = strchr (*language, '\0'); - else if (cp[0] == '_') - { - /* Next is the territory. */ - cp[0] = '\0'; - *territory = ++cp; - - while (cp[0] != '\0' && cp[0] != '.' && cp[0] != '@' - && cp[0] != '+' && cp[0] != ',' && cp[0] != '_') - ++cp; - - mask |= TERRITORY; - - if (cp[0] == '.') - { - /* Next is the codeset. */ - syntax = xpg; - cp[0] = '\0'; - *codeset = ++cp; - - while (cp[0] != '\0' && cp[0] != '@') - ++cp; - - mask |= XPG_CODESET; - - if (*codeset != cp && (*codeset)[0] != '\0') - { - *normalized_codeset = _nl_normalize_codeset (*codeset, - cp - *codeset); - if (strcmp (*codeset, *normalized_codeset) == 0) - free ((char *) *normalized_codeset); - else - mask |= XPG_NORM_CODESET; - } - } - } - - if (cp[0] == '@' || (syntax != xpg && cp[0] == '+')) - { - /* Next is the modifier. */ - syntax = cp[0] == '@' ? xpg : cen; - cp[0] = '\0'; - *modifier = ++cp; - - while (syntax == cen && cp[0] != '\0' && cp[0] != '+' - && cp[0] != ',' && cp[0] != '_') - ++cp; - - mask |= XPG_MODIFIER | CEN_AUDIENCE; - } - - if (syntax != xpg && (cp[0] == '+' || cp[0] == ',' || cp[0] == '_')) - { - syntax = cen; - - if (cp[0] == '+') - { - /* Next is special application (CEN syntax). */ - cp[0] = '\0'; - *special = ++cp; - - while (cp[0] != '\0' && cp[0] != ',' && cp[0] != '_') - ++cp; - - mask |= CEN_SPECIAL; - } - - if (cp[0] == ',') - { - /* Next is sponsor (CEN syntax). */ - cp[0] = '\0'; - *sponsor = ++cp; - - while (cp[0] != '\0' && cp[0] != '_') - ++cp; - - mask |= CEN_SPONSOR; - } - - if (cp[0] == '_') - { - /* Next is revision (CEN syntax). */ - cp[0] = '\0'; - *revision = ++cp; - - mask |= CEN_REVISION; - } - } - - /* For CEN syntax values it might be important to have the - separator character in the file name, not for XPG syntax. */ - if (syntax == xpg) - { - if (*territory != NULL && (*territory)[0] == '\0') - mask &= ~TERRITORY; - - if (*codeset != NULL && (*codeset)[0] == '\0') - mask &= ~XPG_CODESET; - - if (*modifier != NULL && (*modifier)[0] == '\0') - mask &= ~XPG_MODIFIER; - } - - return mask; -} diff --git a/texinfo/intl/finddomain.c b/texinfo/intl/finddomain.c deleted file mode 100644 index ec85d4de4d1..00000000000 --- a/texinfo/intl/finddomain.c +++ /dev/null @@ -1,189 +0,0 @@ -/* Handle list of needed message catalogs - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <ctype.h> -#include <errno.h> -#include <stdio.h> -#include <sys/types.h> - -#if defined STDC_HEADERS || defined _LIBC -# include <stdlib.h> -#else -# ifdef HAVE_MALLOC_H -# include <malloc.h> -# else -void free (); -# endif -#endif - -#if defined HAVE_STRING_H || defined _LIBC -# include <string.h> -#else -# include <strings.h> -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif -#if !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#if defined HAVE_UNISTD_H || defined _LIBC -# include <unistd.h> -#endif - -#include "gettext.h" -#include "gettextP.h" -#ifdef _LIBC -# include <libintl.h> -#else -# include "libgettext.h" -#endif - -/* @@ end of prolog @@ */ -/* List of already loaded domains. */ -static struct loaded_l10nfile *_nl_loaded_domains; - - -/* Return a data structure describing the message catalog described by - the DOMAINNAME and CATEGORY parameters with respect to the currently - established bindings. */ -struct loaded_l10nfile * -_nl_find_domain (dirname, locale, domainname) - const char *dirname; - char *locale; - const char *domainname; -{ - struct loaded_l10nfile *retval; - const char *language; - const char *modifier; - const char *territory; - const char *codeset; - const char *normalized_codeset; - const char *special; - const char *sponsor; - const char *revision; - const char *alias_value; - int mask; - - /* LOCALE can consist of up to four recognized parts for the XPG syntax: - - language[_territory[.codeset]][@modifier] - - and six parts for the CEN syntax: - - language[_territory][+audience][+special][,[sponsor][_revision]] - - Beside the first all of them are allowed to be missing. If the - full specified locale is not found, the less specific one are - looked for. The various part will be stripped of according to - the following order: - (1) revision - (2) sponsor - (3) special - (4) codeset - (5) normalized codeset - (6) territory - (7) audience/modifier - */ - - /* If we have already tested for this locale entry there has to - be one data set in the list of loaded domains. */ - retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, - strlen (dirname) + 1, 0, locale, NULL, NULL, - NULL, NULL, NULL, NULL, NULL, domainname, 0); - if (retval != NULL) - { - /* We know something about this locale. */ - int cnt; - - if (retval->decided == 0) - _nl_load_domain (retval); - - if (retval->data != NULL) - return retval; - - for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) - { - if (retval->successor[cnt]->decided == 0) - _nl_load_domain (retval->successor[cnt]); - - if (retval->successor[cnt]->data != NULL) - break; - } - return cnt >= 0 ? retval : NULL; - /* NOTREACHED */ - } - - /* See whether the locale value is an alias. If yes its value - *overwrites* the alias name. No test for the original value is - done. */ - alias_value = _nl_expand_alias (locale); - if (alias_value != NULL) - { - size_t len = strlen (alias_value) + 1; - locale = (char *) malloc (len); - if (locale == NULL) - return NULL; - - memcpy (locale, alias_value, len); - } - - /* Now we determine the single parts of the locale name. First - look for the language. Termination symbols are `_' and `@' if - we use XPG4 style, and `_', `+', and `,' if we use CEN syntax. */ - mask = _nl_explode_name (locale, &language, &modifier, &territory, - &codeset, &normalized_codeset, &special, - &sponsor, &revision); - - /* Create all possible locale entries which might be interested in - generalization. */ - retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, - strlen (dirname) + 1, mask, language, territory, - codeset, normalized_codeset, modifier, special, - sponsor, revision, domainname, 1); - if (retval == NULL) - /* This means we are out of core. */ - return NULL; - - if (retval->decided == 0) - _nl_load_domain (retval); - if (retval->data == NULL) - { - int cnt; - for (cnt = 0; retval->successor[cnt] != NULL; ++cnt) - { - if (retval->successor[cnt]->decided == 0) - _nl_load_domain (retval->successor[cnt]); - if (retval->successor[cnt]->data != NULL) - break; - } - } - - /* The room for an alias was dynamically allocated. Free it now. */ - if (alias_value != NULL) - free (locale); - - return retval; -} diff --git a/texinfo/intl/gettext.c b/texinfo/intl/gettext.c deleted file mode 100644 index 1336d21e7c9..00000000000 --- a/texinfo/intl/gettext.c +++ /dev/null @@ -1,70 +0,0 @@ -/* Implementation of gettext(3) function - Copyright (C) 1995, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#ifdef _LIBC -# define __need_NULL -# include <stddef.h> -#else -# ifdef STDC_HEADERS -# include <stdlib.h> /* Just for NULL. */ -# else -# ifdef HAVE_STRING_H -# include <string.h> -# else -# define NULL ((void *) 0) -# endif -# endif -#endif - -#ifdef _LIBC -# include <libintl.h> -#else -# include "libgettext.h" -#endif - -/* @@ end of prolog @@ */ - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define GETTEXT __gettext -# define DGETTEXT __dgettext -#else -# define GETTEXT gettext__ -# define DGETTEXT dgettext__ -#endif - -/* Look up MSGID in the current default message catalog for the current - LC_MESSAGES locale. If not found, returns MSGID itself (the default - text). */ -char * -GETTEXT (msgid) - const char *msgid; -{ - return DGETTEXT (NULL, msgid); -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__gettext, gettext); -#endif diff --git a/texinfo/intl/gettext.h b/texinfo/intl/gettext.h deleted file mode 100644 index 6b4b9e3316c..00000000000 --- a/texinfo/intl/gettext.h +++ /dev/null @@ -1,105 +0,0 @@ -/* Internal header for GNU gettext internationalization functions - Copyright (C) 1995, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifndef _GETTEXT_H -#define _GETTEXT_H 1 - -#include <stdio.h> - -#if HAVE_LIMITS_H || _LIBC -# include <limits.h> -#endif - -/* @@ end of prolog @@ */ - -/* The magic number of the GNU message catalog format. */ -#define _MAGIC 0x950412de -#define _MAGIC_SWAPPED 0xde120495 - -/* Revision number of the currently used .mo (binary) file format. */ -#define MO_REVISION_NUMBER 0 - -/* The following contortions are an attempt to use the C preprocessor - to determine an unsigned integral type that is 32 bits wide. An - alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but - doing that would require that the configure script compile and *run* - the resulting executable. Locally running cross-compiled executables - is usually not possible. */ - -#if __STDC__ -# define UINT_MAX_32_BITS 4294967295U -#else -# define UINT_MAX_32_BITS 0xFFFFFFFF -#endif - -/* If UINT_MAX isn't defined, assume it's a 32-bit type. - This should be valid for all systems GNU cares about because - that doesn't include 16-bit systems, and only modern systems - (that certainly have <limits.h>) have 64+-bit integral types. */ - -#ifndef UINT_MAX -# define UINT_MAX UINT_MAX_32_BITS -#endif - -#if UINT_MAX == UINT_MAX_32_BITS -typedef unsigned nls_uint32; -#else -# if USHRT_MAX == UINT_MAX_32_BITS -typedef unsigned short nls_uint32; -# else -# if ULONG_MAX == UINT_MAX_32_BITS -typedef unsigned long nls_uint32; -# else - /* The following line is intended to throw an error. Using #error is - not portable enough. */ - "Cannot determine unsigned 32-bit data type." -# endif -# endif -#endif - - -/* Header for binary .mo file format. */ -struct mo_file_header -{ - /* The magic number. */ - nls_uint32 magic; - /* The revision number of the file format. */ - nls_uint32 revision; - /* The number of strings pairs. */ - nls_uint32 nstrings; - /* Offset of table with start offsets of original strings. */ - nls_uint32 orig_tab_offset; - /* Offset of table with start offsets of translation strings. */ - nls_uint32 trans_tab_offset; - /* Size of hashing table. */ - nls_uint32 hash_tab_size; - /* Offset of first hashing entry. */ - nls_uint32 hash_tab_offset; -}; - -struct string_desc -{ - /* Length of addressed string. */ - nls_uint32 length; - /* Offset of string in file. */ - nls_uint32 offset; -}; - -/* @@ begin of epilog @@ */ - -#endif /* gettext.h */ diff --git a/texinfo/intl/gettextP.h b/texinfo/intl/gettextP.h deleted file mode 100644 index bb8d55235ad..00000000000 --- a/texinfo/intl/gettextP.h +++ /dev/null @@ -1,73 +0,0 @@ -/* Header describing internals of gettext library - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifndef _GETTEXTP_H -#define _GETTEXTP_H - -#include "loadinfo.h" - -/* @@ end of prolog @@ */ - -#ifndef PARAMS -# if __STDC__ -# define PARAMS(args) args -# else -# define PARAMS(args) () -# endif -#endif - -#ifndef W -# define W(flag, data) ((flag) ? SWAP (data) : (data)) -#endif - - -static nls_uint32 SWAP PARAMS ((nls_uint32 i)); - -static inline nls_uint32 -SWAP (i) - nls_uint32 i; -{ - return (i << 24) | ((i & 0xff00) << 8) | ((i >> 8) & 0xff00) | (i >> 24); -} - - -struct loaded_domain -{ - const char *data; - int must_swap; - nls_uint32 nstrings; - struct string_desc *orig_tab; - struct string_desc *trans_tab; - nls_uint32 hash_size; - nls_uint32 *hash_tab; -}; - -struct binding -{ - struct binding *next; - char *domainname; - char *dirname; -}; - -struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname, - char *__locale, - const char *__domainname)); -void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain)); - -/* @@ begin of epilog @@ */ - -#endif /* gettextP.h */ diff --git a/texinfo/intl/hash-string.h b/texinfo/intl/hash-string.h deleted file mode 100644 index e66e8417a97..00000000000 --- a/texinfo/intl/hash-string.h +++ /dev/null @@ -1,63 +0,0 @@ -/* Implements a string hashing function. - Copyright (C) 1995, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU Library General Public - License along with the GNU C Library; see the file COPYING.LIB. If not, - write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, - Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_VALUES_H -# include <values.h> -#endif - -/* @@ end of prolog @@ */ - -#ifndef PARAMS -# if __STDC__ -# define PARAMS(Args) Args -# else -# define PARAMS(Args) () -# endif -#endif - -/* We assume to have `unsigned long int' value with at least 32 bits. */ -#define HASHWORDBITS 32 - - -/* Defines the so called `hashpjw' function by P.J. Weinberger - [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools, - 1986, 1987 Bell Telephone Laboratories, Inc.] */ -static unsigned long hash_string PARAMS ((const char *__str_param)); - -static inline unsigned long -hash_string (str_param) - const char *str_param; -{ - unsigned long int hval, g; - const char *str = str_param; - - /* Compute the hash value for the given string. */ - hval = 0; - while (*str != '\0') - { - hval <<= 4; - hval += (unsigned long) *str++; - g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4)); - if (g != 0) - { - hval ^= g >> (HASHWORDBITS - 8); - hval ^= g; - } - } - return hval; -} diff --git a/texinfo/intl/intl-compat.c b/texinfo/intl/intl-compat.c deleted file mode 100644 index 503efa0fa9c..00000000000 --- a/texinfo/intl/intl-compat.c +++ /dev/null @@ -1,76 +0,0 @@ -/* intl-compat.c - Stub functions to call gettext functions from GNU gettext - Library. - Copyright (C) 1995 Software Foundation, Inc. - -This program is free software; you can redistribute it and/or modify -it under the terms of the GNU General Public License as published by -the Free Software Foundation; either version 2, or (at your option) -any later version. - -This program is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -GNU General Public License for more details. - -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libgettext.h" - -/* @@ end of prolog @@ */ - - -#undef gettext -#undef dgettext -#undef dcgettext -#undef textdomain -#undef bindtextdomain - - -char * -bindtextdomain (domainname, dirname) - const char *domainname; - const char *dirname; -{ - return bindtextdomain__ (domainname, dirname); -} - - -char * -dcgettext (domainname, msgid, category) - const char *domainname; - const char *msgid; - int category; -{ - return dcgettext__ (domainname, msgid, category); -} - - -char * -dgettext (domainname, msgid) - const char *domainname; - const char *msgid; -{ - return dgettext__ (domainname, msgid); -} - - -char * -gettext (msgid) - const char *msgid; -{ - return gettext__ (msgid); -} - - -char * -textdomain (domainname) - const char *domainname; -{ - return textdomain__ (domainname); -} diff --git a/texinfo/intl/l10nflist.c b/texinfo/intl/l10nflist.c deleted file mode 100644 index 4e2bc130950..00000000000 --- a/texinfo/intl/l10nflist.c +++ /dev/null @@ -1,409 +0,0 @@ -/* Handle list of needed message catalogs - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - - -#if defined HAVE_STRING_H || defined _LIBC -# ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -# endif -# include <string.h> -#else -# include <strings.h> -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif -#if !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#if defined _LIBC || defined HAVE_ARGZ_H -# include <argz.h> -#endif -#include <ctype.h> -#include <sys/types.h> - -#if defined STDC_HEADERS || defined _LIBC -# include <stdlib.h> -#endif - -#include "loadinfo.h" - -/* On some strange systems still no definition of NULL is found. Sigh! */ -#ifndef NULL -# if defined __STDC__ && __STDC__ -# define NULL ((void *) 0) -# else -# define NULL 0 -# endif -#endif - -/* @@ end of prolog @@ */ - -#ifdef _LIBC -/* Rename the non ANSI C functions. This is required by the standard - because some ANSI C functions will require linking with this object - file and the name space must not be polluted. */ -# define stpcpy(dest, src) __stpcpy(dest, src) -#else -# ifndef HAVE_STPCPY -static char *stpcpy PARAMS ((char *dest, const char *src)); -# endif -#endif - -/* Define function which are usually not available. */ - -#if !defined _LIBC && !defined HAVE___ARGZ_COUNT -/* Returns the number of strings in ARGZ. */ -static size_t argz_count__ PARAMS ((const char *argz, size_t len)); - -static size_t -argz_count__ (argz, len) - const char *argz; - size_t len; -{ - size_t count = 0; - while (len > 0) - { - size_t part_len = strlen (argz); - argz += part_len + 1; - len -= part_len + 1; - count++; - } - return count; -} -# undef __argz_count -# define __argz_count(argz, len) argz_count__ (argz, len) -#endif /* !_LIBC && !HAVE___ARGZ_COUNT */ - -#if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY -/* Make '\0' separated arg vector ARGZ printable by converting all the '\0's - except the last into the character SEP. */ -static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); - -static void -argz_stringify__ (argz, len, sep) - char *argz; - size_t len; - int sep; -{ - while (len > 0) - { - size_t part_len = strlen (argz); - argz += part_len; - len -= part_len + 1; - if (len > 0) - *argz++ = sep; - } -} -# undef __argz_stringify -# define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) -#endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ - -#if !defined _LIBC && !defined HAVE___ARGZ_NEXT -static char *argz_next__ PARAMS ((char *argz, size_t argz_len, - const char *entry)); - -static char * -argz_next__ (argz, argz_len, entry) - char *argz; - size_t argz_len; - const char *entry; -{ - if (entry) - { - if (entry < argz + argz_len) - entry = strchr (entry, '\0') + 1; - - return entry >= argz + argz_len ? NULL : (char *) entry; - } - else - if (argz_len > 0) - return argz; - else - return 0; -} -# undef __argz_next -# define __argz_next(argz, len, entry) argz_next__ (argz, len, entry) -#endif /* !_LIBC && !HAVE___ARGZ_NEXT */ - - -/* Return number of bits set in X. */ -static int pop PARAMS ((int x)); - -static inline int -pop (x) - int x; -{ - /* We assume that no more than 16 bits are used. */ - x = ((x & ~0x5555) >> 1) + (x & 0x5555); - x = ((x & ~0x3333) >> 2) + (x & 0x3333); - x = ((x >> 4) + x) & 0x0f0f; - x = ((x >> 8) + x) & 0xff; - - return x; -} - - -struct loaded_l10nfile * -_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, - territory, codeset, normalized_codeset, modifier, special, - sponsor, revision, filename, do_allocate) - struct loaded_l10nfile **l10nfile_list; - const char *dirlist; - size_t dirlist_len; - int mask; - const char *language; - const char *territory; - const char *codeset; - const char *normalized_codeset; - const char *modifier; - const char *special; - const char *sponsor; - const char *revision; - const char *filename; - int do_allocate; -{ - char *abs_filename; - struct loaded_l10nfile *last = NULL; - struct loaded_l10nfile *retval; - char *cp; - size_t entries; - int cnt; - - /* Allocate room for the full file name. */ - abs_filename = (char *) malloc (dirlist_len - + strlen (language) - + ((mask & TERRITORY) != 0 - ? strlen (territory) + 1 : 0) - + ((mask & XPG_CODESET) != 0 - ? strlen (codeset) + 1 : 0) - + ((mask & XPG_NORM_CODESET) != 0 - ? strlen (normalized_codeset) + 1 : 0) - + (((mask & XPG_MODIFIER) != 0 - || (mask & CEN_AUDIENCE) != 0) - ? strlen (modifier) + 1 : 0) - + ((mask & CEN_SPECIAL) != 0 - ? strlen (special) + 1 : 0) - + (((mask & CEN_SPONSOR) != 0 - || (mask & CEN_REVISION) != 0) - ? (1 + ((mask & CEN_SPONSOR) != 0 - ? strlen (sponsor) + 1 : 0) - + ((mask & CEN_REVISION) != 0 - ? strlen (revision) + 1 : 0)) : 0) - + 1 + strlen (filename) + 1); - - if (abs_filename == NULL) - return NULL; - - retval = NULL; - last = NULL; - - /* Construct file name. */ - memcpy (abs_filename, dirlist, dirlist_len); - __argz_stringify (abs_filename, dirlist_len, ':'); - cp = abs_filename + (dirlist_len - 1); - *cp++ = '/'; - cp = stpcpy (cp, language); - - if ((mask & TERRITORY) != 0) - { - *cp++ = '_'; - cp = stpcpy (cp, territory); - } - if ((mask & XPG_CODESET) != 0) - { - *cp++ = '.'; - cp = stpcpy (cp, codeset); - } - if ((mask & XPG_NORM_CODESET) != 0) - { - *cp++ = '.'; - cp = stpcpy (cp, normalized_codeset); - } - if ((mask & (XPG_MODIFIER | CEN_AUDIENCE)) != 0) - { - /* This component can be part of both syntaces but has different - leading characters. For CEN we use `+', else `@'. */ - *cp++ = (mask & CEN_AUDIENCE) != 0 ? '+' : '@'; - cp = stpcpy (cp, modifier); - } - if ((mask & CEN_SPECIAL) != 0) - { - *cp++ = '+'; - cp = stpcpy (cp, special); - } - if ((mask & (CEN_SPONSOR | CEN_REVISION)) != 0) - { - *cp++ = ','; - if ((mask & CEN_SPONSOR) != 0) - cp = stpcpy (cp, sponsor); - if ((mask & CEN_REVISION) != 0) - { - *cp++ = '_'; - cp = stpcpy (cp, revision); - } - } - - *cp++ = '/'; - stpcpy (cp, filename); - - /* Look in list of already loaded domains whether it is already - available. */ - last = NULL; - for (retval = *l10nfile_list; retval != NULL; retval = retval->next) - if (retval->filename != NULL) - { - int compare = strcmp (retval->filename, abs_filename); - if (compare == 0) - /* We found it! */ - break; - if (compare < 0) - { - /* It's not in the list. */ - retval = NULL; - break; - } - - last = retval; - } - - if (retval != NULL || do_allocate == 0) - { - free (abs_filename); - return retval; - } - - retval = (struct loaded_l10nfile *) - malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) - * (1 << pop (mask)) - * sizeof (struct loaded_l10nfile *))); - if (retval == NULL) - return NULL; - - retval->filename = abs_filename; - retval->decided = (__argz_count (dirlist, dirlist_len) != 1 - || ((mask & XPG_CODESET) != 0 - && (mask & XPG_NORM_CODESET) != 0)); - retval->data = NULL; - - if (last == NULL) - { - retval->next = *l10nfile_list; - *l10nfile_list = retval; - } - else - { - retval->next = last->next; - last->next = retval; - } - - entries = 0; - /* If the DIRLIST is a real list the RETVAL entry corresponds not to - a real file. So we have to use the DIRLIST separation mechanism - of the inner loop. */ - cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; - for (; cnt >= 0; --cnt) - if ((cnt & ~mask) == 0 - && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) - && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) - { - /* Iterate over all elements of the DIRLIST. */ - char *dir = NULL; - - while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) - != NULL) - retval->successor[entries++] - = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, - language, territory, codeset, - normalized_codeset, modifier, special, - sponsor, revision, filename, 1); - } - retval->successor[entries] = NULL; - - return retval; -} - -/* Normalize codeset name. There is no standard for the codeset - names. Normalization allows the user to use any of the common - names. */ -const char * -_nl_normalize_codeset (codeset, name_len) - const char *codeset; - size_t name_len; -{ - int len = 0; - int only_digit = 1; - char *retval; - char *wp; - size_t cnt; - - for (cnt = 0; cnt < name_len; ++cnt) - if (isalnum (codeset[cnt])) - { - ++len; - - if (isalpha (codeset[cnt])) - only_digit = 0; - } - - retval = (char *) malloc ((only_digit ? 3 : 0) + len + 1); - - if (retval != NULL) - { - if (only_digit) - wp = stpcpy (retval, "iso"); - else - wp = retval; - - for (cnt = 0; cnt < name_len; ++cnt) - if (isalpha (codeset[cnt])) - *wp++ = tolower (codeset[cnt]); - else if (isdigit (codeset[cnt])) - *wp++ = codeset[cnt]; - - *wp = '\0'; - } - - return (const char *) retval; -} - - -/* @@ begin of epilog @@ */ - -/* We don't want libintl.a to depend on any other library. So we - avoid the non-standard function stpcpy. In GNU C Library this - function is available, though. Also allow the symbol HAVE_STPCPY - to be defined. */ -#if !_LIBC && !HAVE_STPCPY -static char * -stpcpy (dest, src) - char *dest; - const char *src; -{ - while ((*dest++ = *src++) != '\0') - /* Do nothing. */ ; - return dest - 1; -} -#endif diff --git a/texinfo/intl/libgettext.h b/texinfo/intl/libgettext.h deleted file mode 100644 index 0d4de4d0ee1..00000000000 --- a/texinfo/intl/libgettext.h +++ /dev/null @@ -1,182 +0,0 @@ -/* Message catalogs for internationalization. - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -/* Because on some systems (e.g. Solaris) we sometimes have to include - the systems libintl.h as well as this file we have more complex - include protection above. But the systems header might perhaps also - define _LIBINTL_H and therefore we have to protect the definition here. */ - -#if !defined (_LIBINTL_H) || !defined (_LIBGETTEXT_H) -#if !defined (_LIBINTL_H) -# define _LIBINTL_H 1 -#endif -#define _LIBGETTEXT_H 1 - -/* We define an additional symbol to signal that we use the GNU - implementation of gettext. */ -#define __USE_GNU_GETTEXT 1 - -#include <sys/types.h> - -#if HAVE_LOCALE_H -# include <locale.h> -#endif - - -#ifdef __cplusplus -extern "C" { -#endif - -/* @@ end of prolog @@ */ - -#ifndef PARAMS -# if __STDC__ -# define PARAMS(args) args -# else -# define PARAMS(args) () -# endif -#endif - -#ifndef NULL -# if !defined __cplusplus || defined __GNUC__ -# define NULL ((void *) 0) -# else -# define NULL (0) -# endif -#endif - -#if !HAVE_LC_MESSAGES -/* This value determines the behaviour of the gettext() and dgettext() - function. But some system does not have this defined. Define it - to a default value. */ -# define LC_MESSAGES (-1) -#endif - - -/* Declarations for gettext-using-catgets interface. Derived from - Jim Meyering's libintl.h. */ -struct _msg_ent -{ - const char *_msg; - int _msg_number; -}; - - -#if HAVE_CATGETS -/* These two variables are defined in the automatically by po-to-tbl.sed - generated file `cat-id-tbl.c'. */ -extern const struct _msg_ent _msg_tbl[]; -extern int _msg_tbl_length; -#endif - - -/* For automatical extraction of messages sometimes no real - translation is needed. Instead the string itself is the result. */ -#define gettext_noop(Str) (Str) - -/* Look up MSGID in the current default message catalog for the current - LC_MESSAGES locale. If not found, returns MSGID itself (the default - text). */ -extern char *gettext PARAMS ((const char *__msgid)); -extern char *gettext__ PARAMS ((const char *__msgid)); - -/* Look up MSGID in the DOMAINNAME message catalog for the current - LC_MESSAGES locale. */ -extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid)); -extern char *dgettext__ PARAMS ((const char *__domainname, - const char *__msgid)); - -/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY - locale. */ -extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid, - int __category)); -extern char *dcgettext__ PARAMS ((const char *__domainname, - const char *__msgid, int __category)); - - -/* Set the current default message catalog to DOMAINNAME. - If DOMAINNAME is null, return the current default. - If DOMAINNAME is "", reset to the default of "messages". */ -extern char *textdomain PARAMS ((const char *__domainname)); -extern char *textdomain__ PARAMS ((const char *__domainname)); - -/* Specify that the DOMAINNAME message catalog will be found - in DIRNAME rather than in the system locale data base. */ -extern char *bindtextdomain PARAMS ((const char *__domainname, - const char *__dirname)); -extern char *bindtextdomain__ PARAMS ((const char *__domainname, - const char *__dirname)); - -#if ENABLE_NLS - -/* Solaris 2.3 has the gettext function but dcgettext is missing. - So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4 - has dcgettext. */ -# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT) - -# define gettext(Msgid) \ - dgettext (NULL, Msgid) - -# define dgettext(Domainname, Msgid) \ - dcgettext (Domainname, Msgid, LC_MESSAGES) - -# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7 -/* This global variable is defined in loadmsgcat.c. We need a sign, - whether a new catalog was loaded, which can be associated with all - translations. */ -extern int _nl_msg_cat_cntr; - -# define dcgettext(Domainname, Msgid, Category) \ - (__extension__ \ - ({ \ - char *__result; \ - if (__builtin_constant_p (Msgid)) \ - { \ - static char *__translation__; \ - static int __catalog_counter__; \ - if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \ - { \ - __translation__ = \ - dcgettext__ (Domainname, Msgid, Category); \ - __catalog_counter__ = _nl_msg_cat_cntr; \ - } \ - __result = __translation__; \ - } \ - else \ - __result = dcgettext__ (Domainname, Msgid, Category); \ - __result; \ - })) -# endif -# endif - -#else - -# define gettext(Msgid) (Msgid) -# define dgettext(Domainname, Msgid) (Msgid) -# define dcgettext(Domainname, Msgid, Category) (Msgid) -# define textdomain(Domainname) while (0) /* nothing */ -# define bindtextdomain(Domainname, Dirname) while (0) /* nothing */ - -#endif - -/* @@ begin of epilog @@ */ - -#ifdef __cplusplus -} -#endif - -#endif diff --git a/texinfo/intl/linux-msg.sed b/texinfo/intl/linux-msg.sed deleted file mode 100644 index 5918e720a9a..00000000000 --- a/texinfo/intl/linux-msg.sed +++ /dev/null @@ -1,100 +0,0 @@ -# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# -# The first directive in the .msg should be the definition of the -# message set number. We use always set number 1. -# -1 { - i\ -$set 1 # Automatically created by po2msg.sed - h - s/.*/0/ - x -} -# -# Mitch's old catalog format does not allow comments. -# -# We copy the original message as a comment into the .msg file. -# -/^msgid/ { - s/msgid[ ]*"// -# -# This does not work now with the new format. -# /"$/! { -# s/\\$// -# s/$/ ... (more lines following)"/ -# } - x -# The following nice solution is by -# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de> - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x - G - s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p -} -# -# The .msg file contains, other then the .po file, only the translations -# but each given a unique ID. Starting from 1 and incrementing by 1 for -# each message we assign them to the messages. -# It is important that the .po file used to generate the cat-id-tbl.c file -# (with po-to-tbl) is the same as the one used here. (At least the order -# of declarations must not be changed.) -# -/^msgstr/ { - s/msgstr[ ]*"\(.*\)"/# \1/ -# Clear substitution flag. - tb -# Append the next line. - :b - N -# Look whether second part is continuation line. - s/\(.*\n\)"\(.*\)"/\1\2/ -# Yes, then branch. - ta - P - D -# Note that D includes a jump to the start!! -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use D here. - s/.*\n\(.*\)/\1/ - tb -} -d diff --git a/texinfo/intl/loadinfo.h b/texinfo/intl/loadinfo.h deleted file mode 100644 index c67c2eb2e8e..00000000000 --- a/texinfo/intl/loadinfo.h +++ /dev/null @@ -1,58 +0,0 @@ -#ifndef PARAMS -# if __STDC__ -# define PARAMS(args) args -# else -# define PARAMS(args) () -# endif -#endif - -/* Encoding of locale name parts. */ -#define CEN_REVISION 1 -#define CEN_SPONSOR 2 -#define CEN_SPECIAL 4 -#define XPG_NORM_CODESET 8 -#define XPG_CODESET 16 -#define TERRITORY 32 -#define CEN_AUDIENCE 64 -#define XPG_MODIFIER 128 - -#define CEN_SPECIFIC (CEN_REVISION|CEN_SPONSOR|CEN_SPECIAL|CEN_AUDIENCE) -#define XPG_SPECIFIC (XPG_CODESET|XPG_NORM_CODESET|XPG_MODIFIER) - - -struct loaded_l10nfile -{ - const char *filename; - int decided; - - const void *data; - - struct loaded_l10nfile *next; - struct loaded_l10nfile *successor[1]; -}; - - -extern const char *_nl_normalize_codeset PARAMS ((const char *codeset, - size_t name_len)); - -extern struct loaded_l10nfile * -_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, - const char *dirlist, size_t dirlist_len, int mask, - const char *language, const char *territory, - const char *codeset, - const char *normalized_codeset, - const char *modifier, const char *special, - const char *sponsor, const char *revision, - const char *filename, int do_allocate)); - - -extern const char *_nl_expand_alias PARAMS ((const char *name)); - -extern int _nl_explode_name PARAMS ((char *name, const char **language, - const char **modifier, - const char **territory, - const char **codeset, - const char **normalized_codeset, - const char **special, - const char **sponsor, - const char **revision)); diff --git a/texinfo/intl/loadmsgcat.c b/texinfo/intl/loadmsgcat.c deleted file mode 100644 index 73e90a9190f..00000000000 --- a/texinfo/intl/loadmsgcat.c +++ /dev/null @@ -1,199 +0,0 @@ -/* Load needed message catalogs - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <fcntl.h> -#include <sys/types.h> -#include <sys/stat.h> - -#if defined STDC_HEADERS || defined _LIBC -# include <stdlib.h> -#endif - -#if defined HAVE_UNISTD_H || defined _LIBC -# include <unistd.h> -#endif - -#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC -# include <sys/mman.h> -#endif - -#include "gettext.h" -#include "gettextP.h" - -/* @@ end of prolog @@ */ - -#ifdef _LIBC -/* Rename the non ISO C functions. This is required by the standard - because some ISO C functions will require linking with this object - file and the name space must not be polluted. */ -# define fstat __fstat -# define open __open -# define close __close -# define read __read -# define mmap __mmap -# define munmap __munmap -#endif - -/* We need a sign, whether a new catalog was loaded, which can be associated - with all translations. This is important if the translations are - cached by one of GCC's features. */ -int _nl_msg_cat_cntr = 0; - - -/* Load the message catalogs specified by FILENAME. If it is no valid - message catalog do nothing. */ -void -_nl_load_domain (domain_file) - struct loaded_l10nfile *domain_file; -{ - int fd; - struct stat st; - struct mo_file_header *data = (struct mo_file_header *) -1; -#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ - || defined _LIBC - int use_mmap = 0; -#endif - struct loaded_domain *domain; - - domain_file->decided = 1; - domain_file->data = NULL; - - /* If the record does not represent a valid locale the FILENAME - might be NULL. This can happen when according to the given - specification the locale file name is different for XPG and CEN - syntax. */ - if (domain_file->filename == NULL) - return; - - /* Try to open the addressed file. */ - fd = open (domain_file->filename, O_RDONLY); - if (fd == -1) - return; - - /* We must know about the size of the file. */ - if (fstat (fd, &st) != 0 - && st.st_size < (off_t) sizeof (struct mo_file_header)) - { - /* Something went wrong. */ - close (fd); - return; - } - -#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ - || defined _LIBC - /* Now we are ready to load the file. If mmap() is available we try - this first. If not available or it failed we try to load it. */ - data = (struct mo_file_header *) mmap (NULL, st.st_size, PROT_READ, - MAP_PRIVATE, fd, 0); - - if (data != (struct mo_file_header *) -1) - { - /* mmap() call was successful. */ - close (fd); - use_mmap = 1; - } -#endif - - /* If the data is not yet available (i.e. mmap'ed) we try to load - it manually. */ - if (data == (struct mo_file_header *) -1) - { - off_t to_read; - char *read_ptr; - - data = (struct mo_file_header *) malloc (st.st_size); - if (data == NULL) - return; - - to_read = st.st_size; - read_ptr = (char *) data; - do - { - long int nb = (long int) read (fd, read_ptr, to_read); - if (nb == -1) - { - close (fd); - return; - } - - read_ptr += nb; - to_read -= nb; - } - while (to_read > 0); - - close (fd); - } - - /* Using the magic number we can test whether it really is a message - catalog file. */ - if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED) - { - /* The magic number is wrong: not a message catalog file. */ -#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ - || defined _LIBC - if (use_mmap) - munmap ((caddr_t) data, st.st_size); - else -#endif - free (data); - return; - } - - domain_file->data - = (struct loaded_domain *) malloc (sizeof (struct loaded_domain)); - if (domain_file->data == NULL) - return; - - domain = (struct loaded_domain *) domain_file->data; - domain->data = (char *) data; - domain->must_swap = data->magic != _MAGIC; - - /* Fill in the information about the available tables. */ - switch (W (domain->must_swap, data->revision)) - { - case 0: - domain->nstrings = W (domain->must_swap, data->nstrings); - domain->orig_tab = (struct string_desc *) - ((char *) data + W (domain->must_swap, data->orig_tab_offset)); - domain->trans_tab = (struct string_desc *) - ((char *) data + W (domain->must_swap, data->trans_tab_offset)); - domain->hash_size = W (domain->must_swap, data->hash_tab_size); - domain->hash_tab = (nls_uint32 *) - ((char *) data + W (domain->must_swap, data->hash_tab_offset)); - break; - default: - /* This is an illegal revision. */ -#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \ - || defined _LIBC - if (use_mmap) - munmap ((caddr_t) data, st.st_size); - else -#endif - free (data); - free (domain); - domain_file->data = NULL; - return; - } - - /* Show that one domain is changed. This might make some cached - translations invalid. */ - ++_nl_msg_cat_cntr; -} diff --git a/texinfo/intl/localealias.c b/texinfo/intl/localealias.c deleted file mode 100644 index 00d91941b9b..00000000000 --- a/texinfo/intl/localealias.c +++ /dev/null @@ -1,378 +0,0 @@ -/* Handle aliases for locale names - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#include <ctype.h> -#include <stdio.h> -#include <sys/types.h> - -#ifdef __GNUC__ -# define alloca __builtin_alloca -# define HAVE_ALLOCA 1 -#else -# if defined HAVE_ALLOCA_H || defined _LIBC -# include <alloca.h> -# else -# ifdef _AIX - #pragma alloca -# else -# ifndef alloca -char *alloca (); -# endif -# endif -# endif -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include <stdlib.h> -#else -char *getenv (); -# ifdef HAVE_MALLOC_H -# include <malloc.h> -# else -void free (); -# endif -#endif - -#if defined HAVE_STRING_H || defined _LIBC -# ifndef _GNU_SOURCE -# define _GNU_SOURCE 1 -# endif -# include <string.h> -#else -# include <strings.h> -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif -#if !HAVE_STRCHR && !defined _LIBC -# ifndef strchr -# define strchr index -# endif -#endif - -#include "gettext.h" -#include "gettextP.h" - -/* @@ end of prolog @@ */ - -#ifdef _LIBC -/* Rename the non ANSI C functions. This is required by the standard - because some ANSI C functions will require linking with this object - file and the name space must not be polluted. */ -# define strcasecmp __strcasecmp -#endif - - -/* For those loosing systems which don't have `alloca' we have to add - some additional code emulating it. */ -#ifdef HAVE_ALLOCA -/* Nothing has to be done. */ -# define ADD_BLOCK(list, address) /* nothing */ -# define FREE_BLOCKS(list) /* nothing */ -#else -struct block_list -{ - void *address; - struct block_list *next; -}; -# define ADD_BLOCK(list, addr) \ - do { \ - struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \ - /* If we cannot get a free block we cannot add the new element to \ - the list. */ \ - if (newp != NULL) { \ - newp->address = (addr); \ - newp->next = (list); \ - (list) = newp; \ - } \ - } while (0) -# define FREE_BLOCKS(list) \ - do { \ - while (list != NULL) { \ - struct block_list *old = list; \ - list = list->next; \ - free (old); \ - } \ - } while (0) -# undef alloca -# define alloca(size) (malloc (size)) -#endif /* have alloca */ - - -struct alias_map -{ - const char *alias; - const char *value; -}; - - -static struct alias_map *map; -static size_t nmap = 0; -static size_t maxmap = 0; - - -/* Prototypes for local functions. */ -static size_t read_alias_file PARAMS ((const char *fname, int fname_len)); -static void extend_alias_table PARAMS ((void)); -static int alias_compare PARAMS ((const struct alias_map *map1, - const struct alias_map *map2)); - - -const char * -_nl_expand_alias (name) - const char *name; -{ - static const char *locale_alias_path = LOCALE_ALIAS_PATH; - struct alias_map *retval; - size_t added; - - do - { - struct alias_map item; - - item.alias = name; - - if (nmap > 0) - retval = (struct alias_map *) bsearch (&item, map, nmap, - sizeof (struct alias_map), - (int (*) PARAMS ((const void *, - const void *)) - ) alias_compare); - else - retval = NULL; - - /* We really found an alias. Return the value. */ - if (retval != NULL) - return retval->value; - - /* Perhaps we can find another alias file. */ - added = 0; - while (added == 0 && locale_alias_path[0] != '\0') - { - const char *start; - - while (locale_alias_path[0] == ':') - ++locale_alias_path; - start = locale_alias_path; - - while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':') - ++locale_alias_path; - - if (start < locale_alias_path) - added = read_alias_file (start, locale_alias_path - start); - } - } - while (added != 0); - - return NULL; -} - - -static size_t -read_alias_file (fname, fname_len) - const char *fname; - int fname_len; -{ -#ifndef HAVE_ALLOCA - struct block_list *block_list = NULL; -#endif - FILE *fp; - char *full_fname; - size_t added; - static const char aliasfile[] = "/locale.alias"; - - full_fname = (char *) alloca (fname_len + sizeof aliasfile); - ADD_BLOCK (block_list, full_fname); - memcpy (full_fname, fname, fname_len); - memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); - - fp = fopen (full_fname, "r"); - if (fp == NULL) - { - FREE_BLOCKS (block_list); - return 0; - } - - added = 0; - while (!feof (fp)) - { - /* It is a reasonable approach to use a fix buffer here because - a) we are only interested in the first two fields - b) these fields must be usable as file names and so must not - be that long - */ - char buf[BUFSIZ]; - char *alias; - char *value; - char *cp; - - if (fgets (buf, BUFSIZ, fp) == NULL) - /* EOF reached. */ - break; - - cp = buf; - /* Ignore leading white space. */ - while (isspace (cp[0])) - ++cp; - - /* A leading '#' signals a comment line. */ - if (cp[0] != '\0' && cp[0] != '#') - { - alias = cp++; - while (cp[0] != '\0' && !isspace (cp[0])) - ++cp; - /* Terminate alias name. */ - if (cp[0] != '\0') - *cp++ = '\0'; - - /* Now look for the beginning of the value. */ - while (isspace (cp[0])) - ++cp; - - if (cp[0] != '\0') - { - char *tp; - size_t len; - - value = cp++; - while (cp[0] != '\0' && !isspace (cp[0])) - ++cp; - /* Terminate value. */ - if (cp[0] == '\n') - { - /* This has to be done to make the following test - for the end of line possible. We are looking for - the terminating '\n' which do not overwrite here. */ - *cp++ = '\0'; - *cp = '\n'; - } - else if (cp[0] != '\0') - *cp++ = '\0'; - - if (nmap >= maxmap) - extend_alias_table (); - - /* We cannot depend on strdup available in the libc. Sigh! */ - len = strlen (alias) + 1; - tp = (char *) malloc (len); - if (tp == NULL) - { - FREE_BLOCKS (block_list); - return added; - } - memcpy (tp, alias, len); - map[nmap].alias = tp; - - len = strlen (value) + 1; - tp = (char *) malloc (len); - if (tp == NULL) - { - FREE_BLOCKS (block_list); - return added; - } - memcpy (tp, value, len); - map[nmap].value = tp; - - ++nmap; - ++added; - } - } - - /* Possibly not the whole line fits into the buffer. Ignore - the rest of the line. */ - while (strchr (cp, '\n') == NULL) - { - cp = buf; - if (fgets (buf, BUFSIZ, fp) == NULL) - /* Make sure the inner loop will be left. The outer loop - will exit at the `feof' test. */ - *cp = '\n'; - } - } - - /* Should we test for ferror()? I think we have to silently ignore - errors. --drepper */ - fclose (fp); - - if (added > 0) - qsort (map, nmap, sizeof (struct alias_map), - (int (*) PARAMS ((const void *, const void *))) alias_compare); - - FREE_BLOCKS (block_list); - return added; -} - - -static void -extend_alias_table () -{ - size_t new_size; - struct alias_map *new_map; - - new_size = maxmap == 0 ? 100 : 2 * maxmap; - new_map = (struct alias_map *) malloc (new_size - * sizeof (struct alias_map)); - if (new_map == NULL) - /* Simply don't extend: we don't have any more core. */ - return; - - memcpy (new_map, map, nmap * sizeof (struct alias_map)); - - if (maxmap != 0) - free (map); - - map = new_map; - maxmap = new_size; -} - - -static int -alias_compare (map1, map2) - const struct alias_map *map1; - const struct alias_map *map2; -{ -#if defined _LIBC || defined HAVE_STRCASECMP - return strcasecmp (map1->alias, map2->alias); -#else - const unsigned char *p1 = (const unsigned char *) map1->alias; - const unsigned char *p2 = (const unsigned char *) map2->alias; - unsigned char c1, c2; - - if (p1 == p2) - return 0; - - do - { - /* I know this seems to be odd but the tolower() function in - some systems libc cannot handle nonalpha characters. */ - c1 = isupper (*p1) ? tolower (*p1) : *p1; - c2 = isupper (*p2) ? tolower (*p2) : *p2; - if (c1 == '\0') - break; - ++p1; - ++p2; - } - while (c1 == c2); - - return c1 - c2; -#endif -} diff --git a/texinfo/intl/po2tbl.sed.in b/texinfo/intl/po2tbl.sed.in deleted file mode 100644 index b3bcca4d730..00000000000 --- a/texinfo/intl/po2tbl.sed.in +++ /dev/null @@ -1,102 +0,0 @@ -# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -1 { - i\ -/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\ -\ -#if HAVE_CONFIG_H\ -# include <config.h>\ -#endif\ -\ -#include "libgettext.h"\ -\ -const struct _msg_ent _msg_tbl[] = { - h - s/.*/0/ - x -} -# -# Write msgid entries in C array form. -# -/^msgid/ { - s/msgid[ ]*\(".*"\)/ {\1/ - tb -# Append the next line - :b - N -# Look whether second part is continuation line. - s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/ -# Yes, then branch. - ta -# Because we assume that the input file correctly formed the line -# just read cannot be again be a msgid line. So it's safe to ignore -# it. - s/\(.*\)\n.*/\1/ - bc -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use D here. - s/.*\n\(.*\)/\1/ -# Some buggy seds do not clear the `successful substitution since last ``t''' -# flag on `N', so we do a `t' here to clear it. - tb -# Not reached - :c - x -# The following nice solution is by -# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de> - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x - G - s/\(.*\)\n\([0-9]*\)/\1, \2},/ - s/\(.*\)"$/\1/ - p -} -# -# Last line. -# -$ { - i\ -};\ - - g - s/0*\(.*\)/int _msg_tbl_length = \1;/p -} -d diff --git a/texinfo/intl/textdomain.c b/texinfo/intl/textdomain.c deleted file mode 100644 index 55d93406a8a..00000000000 --- a/texinfo/intl/textdomain.c +++ /dev/null @@ -1,106 +0,0 @@ -/* Implementation of the textdomain(3) function - Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc. - Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2, or (at your option) - any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software Foundation, - Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ - -#ifdef HAVE_CONFIG_H -# include <config.h> -#endif - -#if defined STDC_HEADERS || defined _LIBC -# include <stdlib.h> -#endif - -#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC -# include <string.h> -#else -# include <strings.h> -# ifndef memcpy -# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num) -# endif -#endif - -#ifdef _LIBC -# include <libintl.h> -#else -# include "libgettext.h" -#endif - -/* @@ end of prolog @@ */ - -/* Name of the default text domain. */ -extern const char _nl_default_default_domain[]; - -/* Default text domain in which entries for gettext(3) are to be found. */ -extern const char *_nl_current_default_domain; - - -/* Names for the libintl functions are a problem. They must not clash - with existing names and they should follow ANSI C. But this source - code is also used in GNU C Library where the names have a __ - prefix. So we have to make a difference here. */ -#ifdef _LIBC -# define TEXTDOMAIN __textdomain -# define strdup(str) __strdup (str) -#else -# define TEXTDOMAIN textdomain__ -#endif - -/* Set the current default message catalog to DOMAINNAME. - If DOMAINNAME is null, return the current default. - If DOMAINNAME is "", reset to the default of "messages". */ -char * -TEXTDOMAIN (domainname) - const char *domainname; -{ - char *old; - - /* A NULL pointer requests the current setting. */ - if (domainname == NULL) - return (char *) _nl_current_default_domain; - - old = (char *) _nl_current_default_domain; - - /* If domain name is the null string set to default domain "messages". */ - if (domainname[0] == '\0' - || strcmp (domainname, _nl_default_default_domain) == 0) - _nl_current_default_domain = _nl_default_default_domain; - else - { - /* If the following malloc fails `_nl_current_default_domain' - will be NULL. This value will be returned and so signals we - are out of core. */ -#if defined _LIBC || defined HAVE_STRDUP - _nl_current_default_domain = strdup (domainname); -#else - size_t len = strlen (domainname) + 1; - char *cp = (char *) malloc (len); - if (cp != NULL) - memcpy (cp, domainname, len); - _nl_current_default_domain = cp; -#endif - } - - if (old != _nl_default_default_domain) - free (old); - - return (char *) _nl_current_default_domain; -} - -#ifdef _LIBC -/* Alias for function name in GNU C Library. */ -weak_alias (__textdomain, textdomain); -#endif diff --git a/texinfo/intl/xopen-msg.sed b/texinfo/intl/xopen-msg.sed deleted file mode 100644 index b19c0bbd0ec..00000000000 --- a/texinfo/intl/xopen-msg.sed +++ /dev/null @@ -1,104 +0,0 @@ -# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file -# Copyright (C) 1995 Free Software Foundation, Inc. -# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995. -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -# -# -# The first directive in the .msg should be the definition of the -# message set number. We use always set number 1. -# -1 { - i\ -$set 1 # Automatically created by po2msg.sed - h - s/.*/0/ - x -} -# -# We copy all comments into the .msg file. Perhaps they can help. -# -/^#/ s/^#[ ]*/$ /p -# -# We copy the original message as a comment into the .msg file. -# -/^msgid/ { -# Does not work now -# /"$/! { -# s/\\$// -# s/$/ ... (more lines following)"/ -# } - s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/ - p -} -# -# The .msg file contains, other then the .po file, only the translations -# but each given a unique ID. Starting from 1 and incrementing by 1 for -# each message we assign them to the messages. -# It is important that the .po file used to generate the cat-id-tbl.c file -# (with po-to-tbl) is the same as the one used here. (At least the order -# of declarations must not be changed.) -# -/^msgstr/ { - s/msgstr[ ]*"\(.*\)"/\1/ - x -# The following nice solution is by -# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de> - td -# Increment a decimal number in pattern space. -# First hide trailing `9' digits. - :d - s/9\(_*\)$/_\1/ - td -# Assure at least one digit is available. - s/^\(_*\)$/0\1/ -# Increment the last digit. - s/8\(_*\)$/9\1/ - s/7\(_*\)$/8\1/ - s/6\(_*\)$/7\1/ - s/5\(_*\)$/6\1/ - s/4\(_*\)$/5\1/ - s/3\(_*\)$/4\1/ - s/2\(_*\)$/3\1/ - s/1\(_*\)$/2\1/ - s/0\(_*\)$/1\1/ -# Convert the hidden `9' digits to `0's. - s/_/0/g - x -# Bring the line in the format `<number> <message>' - G - s/^[^\n]*$/& / - s/\(.*\)\n\([0-9]*\)/\2 \1/ -# Clear flag from last substitution. - tb -# Append the next line. - :b - N -# Look whether second part is a continuation line. - s/\(.*\n\)"\(.*\)"/\1\2/ -# Yes, then branch. - ta - P - D -# Note that `D' includes a jump to the start!! -# We found a continuation line. But before printing insert '\'. - :a - s/\(.*\)\(\n.*\)/\1\\\2/ - P -# We cannot use the sed command `D' here - s/.*\n\(.*\)/\1/ - tb -} -d diff --git a/texinfo/makeinfo/macros/example.texi b/texinfo/makeinfo/macros/example.texi deleted file mode 100644 index d3554ff3ddc..00000000000 --- a/texinfo/makeinfo/macros/example.texi +++ /dev/null @@ -1,224 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@comment %**start of header -@setfilename example.info -@set VERSION 1.58 -@paragraphindent none -@comment %**end of header - -@include simpledoc.texi - -@document {@makeinfo{}, Brian J. Fox, -This file is an extract from the @cite{@texinfo{}} manual.@* -It documents @makeinfo{}\, a program that converts @texinfo{} files into -Info files. -} - -@menu -* What is @makeinfo{}?:: -* Controlling Paragraph Formats:: -* Command Line Options:: -* Pointer Validation:: -@end menu - -@section What is @makeinfo{}? - -@iftex -This file documents the use of the @code{makeinfo} program, versions -@value{VERSION} and later. It is an extract from the @cite{TeXinfo} manual. -@end iftex - -@makeinfo{} is a program for converting @dfn{@texinfo{}} files into -@dfn{@Info{}} files. @texinfo{} is a documentation system that uses a -single source file to produce both on-line information and printed output. - -You can read the on-line information using @Info{}; type @code{info} to -learn about @Info{}. -@ifinfo -@xref{Top, Texinfo, Overview of Texinfo, texinfo, Texinfo}, -@end ifinfo -@iftex -See the @cite{TeXinfo} manual, -@end iftex -to learn about the TeXinfo documentation system. - -@section Controlling Paragraph Formats - -In general, @makeinfo{} @dfn{fills} the paragraphs that it outputs -to an @Info{} file. Filling is the process of breaking and connecting -lines so that lines are the same length as or shorter than the number -specified as the fill column. Lines are broken between words. With -@makeinfo{}, you can control: - -@itemize @bullet -@item -The width of each paragraph (the @dfn{fill-column}). -@item -The amount of indentation that the first line of -each paragraph receives (the @dfn{paragraph-indentation}). -@end itemize - -@section Command Line Options - -The following command line options are available for @makeinfo{}. - -@need 100 -@table @code -@item -D @var{var} -Cause @var{var} to be defined. This is equivalent to -@code{@@set @var{var}} in the Texinfo file. - -@need 150 -@item --error-limit @var{limit} -Set the maximum number of errors that @makeinfo{} will report -before exiting (on the assumption that continuing would be useless). -The default number of errors that can be reported before -@makeinfo{} gives up is 100.@refill - -@need 150 -@item --fill-column @var{width} -Specify the maximum number of columns in a line; this is the right-hand -edge of a line. Paragraphs that are filled will be filled to this -width. The default value for @code{fill-column} is 72. - -@item --footnote-style @var{style} -Set the footnote style to @var{style}, either @samp{end} for the end -node style or @samp{separate} for the separate node style. The value -set by this option overrides the value set in a Texinfo file by an -@code{@@footnotestyle} command. When the footnote style is -@samp{separate}, @makeinfo{} makes a new node containing the -footnotes found in the current node. When the footnote style is -@samp{end}, @makeinfo{} places the footnote references at the end -of the current node. - -@need 150 -@item -I @var{dir} -Add @code{dir} to the directory search list for finding files that are -included using the @code{@@include} command. By default, -@makeinfo{} searches only the current directory. - -@need 150 -@item --no-headers -Do not include menus or node lines in the output. This results in an -@sc{ascii} file that you cannot read in Info since it does not contain -the requisite nodes or menus; but you can print such a file in a -single, typewriter-like font and produce acceptable output. - -@need 150 -@item --no-split -Suppress the splitting stage of @makeinfo{}. Normally, large -output files (where the size is greater than 70k bytes) are split into -smaller subfiles, each one approximately 50k bytes. If you specify -@samp{--no-split}, @makeinfo{} will not split up the output -file. - -@need 100 -@item --no-pointer-validate -@item --no-validate -Suppress the pointer-validation phase of @makeinfo{}. Normally, -after a Texinfo file is processed, some consistency checks are made to -ensure that cross references can be resolved, etc. -@xref{Pointer Validation}. - -@need 150 -@item --no-warn -Suppress the output of warning messages. This does @emph{not} -suppress the output of error messages, only warnings. You might -want this if the file you are creating has examples of Texinfo cross -references within it, and the nodes that are referenced do not actually -exist. - -@item --no-number-footnotes -Supress automatic footnote numbering. By default, @makeinfo{} -numbers each footnote sequentially in a single node, resetting the -current footnote number to 1 at the start of each node. - -@need 150 -@item --output @var{file} -@itemx -o @var{file} -Specify that the output should be directed to @var{file} and not to the -file name specified in the @code{@@setfilename} command found in the Texinfo -source. @var{file} can be the special token @samp{-}, which specifies -standard output. - -@need 150 -@item --paragraph-indent @var{indent} -Set the paragraph indentation style to @var{indent}. The value set by -this option overrides the value set in a Texinfo file by an -@code{@@paragraphindent} command. The value of @var{indent} is -interpreted as follows: - -@itemize @bullet -@item -If the value of @var{indent} is @samp{asis}, do not change the -existing indentation at the starts of paragraphs. - -@item -If the value of @var{indent} is zero, delete any existing -indentation. - -@item -If the value of @var{indent} is greater than zero, indent each -paragraph by that number of spaces. -@end itemize - -@need 100 -@item --reference-limit @var{limit} -Set the value of the number of references to a node that -@makeinfo{} will make without reporting a warning. If a node has more -than this number of references in it, @makeinfo{} will make the -references but also report a warning. - -@need 150 -@item -U @var{var} -Cause @var{var} to be undefined. This is equivalent to -@code{@@clear @var{var}} in the Texinfo file. - -@need 100 -@item --verbose -Cause @makeinfo{} to display messages saying what it is doing. -Normally, @makeinfo{} only outputs messages if there are errors or -warnings. - -@need 100 -@item --version -Report the version number of this copy of @makeinfo{}. -@end table - -@section Pointer Validation -@cindex Pointer validation with @makeinfo{} -@cindex Validation of pointers - -If you do not suppress pointer-validation (by using the -@samp{--no-pointer-validation} option), @makeinfo{} -will check the validity of the final Info file. Mostly, -this means ensuring that nodes you have referenced -really exist. Here is a complete list of what is -checked: - -@enumerate -@item -If a `Next', `Previous', or `Up' node reference is a reference to a -node in the current file and is not an external reference such as to -@file{(dir)}, then the referenced node must exist. - -@item -In every node, if the `Previous' node is different from the `Up' node, -then the `Previous' node must also be pointed to by a `Next' node. - -@item -Every node except the `Top' node must have an `Up' pointer. - -@item -The node referenced by an `Up' pointer must contain a reference to the -current node in some manner other than through a `Next' reference. -This includes menu entries and cross references. - -@item -If the `Next' reference of a node is not the same as the `Next' reference -of the `Up' reference, then the node referenced by the `Next' pointer -must have a `Previous' pointer that points back to the current node. -This rule allows the last node in a section to point to the first node -of the next chapter. -@end enumerate - -@bye diff --git a/texinfo/makeinfo/macros/html.texi b/texinfo/makeinfo/macros/html.texi deleted file mode 100644 index 60760825c68..00000000000 --- a/texinfo/makeinfo/macros/html.texi +++ /dev/null @@ -1,269 +0,0 @@ -@c html.texi: -*- Texinfo -*- Macros which support HTML output. - -@c Copyright (c) 1995 Brian Fox (bfox@ai.mit.edu) -@c Author: Brian J. Fox (bfox@ai.mit.edu) Sat Apr 1 20:30:54 1995. -@c -@c I didn't want to write this myself, because I wanted some HTML wizard -@c to get everything exactly right. However, rms continues to believe -@c that the macro system is not a good idea. I couldn't disagree more, -@c so I am writing this as an example of how useful such macros can be. - -@macro html -@set html -<html> -@end macro - -@c -@c The first step is to define the macros which really only have meaning -@c when producing output for HTML. - -@c -@c @anchor{Brian Fox, http://www.ua.com/users/bfox/} -@c -@macro anchor{text, link} -@ifset html -<a href="\link\">\text\</a> -@end ifset -@ifclear html -\text\ -@end ifclear -@end macro - -@macro pre{} -@ifset html -<pre> -@end ifset -@end macro - -@macro endpre{} -@ifset html -</pre> -@end ifset -@end macro - -@macro TeX -@ifset html -<i>T</i>e<i>X</i> -@end ifset -@ifclear html -@TeX{} -@end ifclear -@end macro - -@macro paragraph{} -@ifset html -<p> -@end ifset -@end macro - -@c -@c @email{bfox@@ai.mit.edu} -@c -@macro email{address} -@anchor{mailto:\address\, \address\} -@end macro - -@c -@c Redefine the TeXinfo commands which have direct HTML counterparts. -@c - -@macro html-define-0arg{command, html-insertion} -@macro \command\ -@ifset html -\html-insertion\ -@end ifset -@ifclear html -@\command\ -@end ifclear -@end macro -@end macro - -@macro html-define-1arg{command, html-insertion} -@macro \command\{arg} -@ifset html -\html-insertion\ -@end ifset -@ifclear html -@\command\{\arg\} -@end ifclear -@end macro -@end macro - -@macro html-define-line{command, html-insertion} -@macro \command\{line} -@ifset html -\html-insertion\ -@end ifset -@ifclear html -@\command\ \line\ -@end ifclear -@end macro -@end macro - -@html-define-0arg{*, <br>} -@html-define-1arg{b, <b>\\arg\\</b>} -@html-define-1arg{code, <tt><b>\\arg\\</b></tt>} -@html-define-line{itemize, <ul>} -@html-define-line{item,<p><li>} -@html-define-line{heading,<h1>\\line\\</h1>} -@html-define-0arg{bye, </html>} - -@c -@c Define into nothing the macros which do nothing in html. -@c -@html-define-line{group,} - -@c -@c Define a macro which is used to define other macros. This one makes -@c a macro which creates an HTML header line. No sectioning commands -@c are used. This takes advantage of the non-recursion feature of -@c macro execution. -@macro node_define{orig-name, header-style} -@macro \orig-name\{title} -@ifset html -@node \title\ -<a name="\title\"><\header-style\>\title\</\header-style\></a> -@end ifset -@ifclear html -@\orig-name\ \title\ -@end ifclear -@end macro -@end macro - -@c -@c The same as NODE_DEFINE, but italicized. -@macro inode_define{orig-name, header-style} -@macro \orig-name\{title} -@ifset html -@node \title\ -<a name="\title\"><\header-style\><i>\title\</i></\header-style\></a> -@end ifset -@ifclear html -@\orig-name\ \title\ -@end ifclear -@end macro -@end macro - -@c Ignore @node commands. -@html-define-line{node,} - -@c Here is a special one for "@top". -@macro top{title} -@end macro - -@c Now actually define a new set of sectioning commands. -@node_define {appendix, h1} -@node_define {appendixsec, h2} -@node_define {appendixsubsec, h3} -@node_define {appendixsubsubsec, h4} -@node_define {chapter, h1} -@node_define {section, h2} -@node_define {subsection, h3} -@node_define {subsubsec, h4} -@node_define {unnumbered, h1} -@node_define {unnumberedsec, h2} -@node_define {unnumberedsubsec, h3} -@node_define {unnumberedsubsubsec, h4} - -@c The italicized analogues. -@inode_define {iappendix, h1} -@inode_define {iappendixsec, h2} -@inode_define {iappendixsubsec, h3} -@inode_define {iappendixsubsubsec, h4} -@inode_define {ichapter, h1} -@inode_define {isection, h2} -@inode_define {isubsection, h3} -@inode_define {isubsubsec, h4} -@inode_define {iunnumbered, h1} -@inode_define {iunnumberedsec, h2} -@inode_define {iunnumberedsubsec, h3} -@inode_define {iunnumberedsubsubsec, h4} - -@c Manual starter: -@c -@c Pass arguments of TITLE, AUTHOR, and a short DESCRIPTION. -@c Immediately following, insert the Top node's menu. -@c -@c Typical usage: -@c -@c @document{Makeinfo, Brian J. Fox, This file documents the use of the -@c @code{makeinfo} program\, versions 1.61 and later.} -@c -@c @menu -@c * What is @makeinfo{}?:: -@c @end menu -@macro document{title, author, description} -@ifinfo -\description\ - -Copyright @copyright{} 1995 \author\ -Copyright @copyright{} 1995 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to process this file through TeX and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the copyright holders. -@end ifinfo - -@titlepage -@title \title\ -@author \author\ - -@page -@vskip 0pt plus 1filll -Copyright @copyright{} 1995 \author\ -Copyright @copyright{} 1995 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the copyright holders. -@end titlepage - -@top{\title\} - -\description\ -@end macro - -@html-define-line{end, -@ifeq{"\\line\\"\, "ifinfo"\, @end ifinfo} -@ifeq{"\\line\\"\, "ifset"\, @end ifset} -@ifeq{"\\line\\"\, "ifclear"\, @end ifclear} -@ifeq{"\\line\\"\, "cartouche"\, @end cartouche} -@ifeq{"\\line\\"\, "menu"\, @end menu} -@ifeq{"\\line\\"\, "itemize"\, </ul>} -@ifeq{"\\line\\"\, "enumerate"\, </ul>} -@ifeq{"\\line\\"\, "table"\, </ul>} -@ifeq{"\\line\\"\, "ftable"\, </ul>} -@ifeq{"\\line\\"\, "vtable"\, </ul>} -@ifeq{"\\line\\"\, "menu"\, xxx} -@ifeq{"\\line\\"\, "quotation"\, </pre>} -@ifeq{"\\line\\"\, "example"\, </tt></pre>} -@ifeq{"\\line\\"\, "smallexample"\, </tt></pre>} -@ifeq{"\\line\\"\, "lisp"\, </tt></pre>} -@ifeq{"\\line\\"\, "format"\, </tt></pre>} -@ifeq{"\\line\\"\, "display"\, </tt></pre>} -@ifeq{"\\line\\"\, "group"}} diff --git a/texinfo/makeinfo/macros/multifmt.texi b/texinfo/makeinfo/macros/multifmt.texi deleted file mode 100644 index 0f2eb32a585..00000000000 --- a/texinfo/makeinfo/macros/multifmt.texi +++ /dev/null @@ -1,41 +0,0 @@ -@c multiformat.texi: -*- Texinfo -*- \input texinfo.tex - -@c Copyright (c) 1995 Universal Access, Inc -@c Author: Brian J. Fox (bfox@ua.com) Sun Apr 2 07:56:23 1995. -@setfilename multiformat.info - -@include html.texi - -@ifset html -@html -@end ifset - -@node First Node, First Section, (dir), (dir) -@chapter First Chapter -Here is some text that belongs in the first chapter. Nothing very -exciting happens here, but this is enough text to span a couple of -lines, and we feel that is important. -@paragraph - -This is the second paragraph of the first chapter. Note that the -formatting commands in @code{HTML} seem to do the right thing, as do the -commands when invoked in @code{Texinfo} mode and in @TeX{}. - -@node First Section, , First Node, First Node -@isection First Section - -Here is some text in the first section of the first chapter. We are -trying very hard to examine the output here to see exactly how proper it -is. If I wasn't so tired, we could probably see it already. -@paragraph - -Here is a list of items: -@paragraph - -@itemize @bullet -@item Here is the first item. -@item Here is the second item. -@end itemize - -@bye - diff --git a/texinfo/makeinfo/macros/res-samp.texi b/texinfo/makeinfo/macros/res-samp.texi deleted file mode 100644 index 5b4e869e0c3..00000000000 --- a/texinfo/makeinfo/macros/res-samp.texi +++ /dev/null @@ -1,32 +0,0 @@ -\input texinfo.tex -@setfilename resume-example.info - -@include resume.texi - -@name Brian J. Fox -@email bfox@@ai.mit.edu -@street 116 Barranca Ave, Ste. B -@city Santa Barbara -@state CA -@zip 93109 -@phone (805) 564-2192 - -@resume - -@block{EDUCATION} -@entry{ -12/11/59, -12/11/63, -My Mom's House, -Learning at home with my mother., -This was the most learning I ever did.} - -@entry{12/11/63, 12/11/77, Brookline\, MA, Learning in the public school system.} -@entry{12/11/78, 12/11/81, Santa Barbara\, CA, Learning in life -experience\, and three months at Santa Barbara City College.} - -@block{WORK EXPERIENCE} -@entry{12/11/59, 12/11/75, Mom's house, Various and sundry tasks\, -including washing dishes and clothes\, and toilet training.} -@entry{3 months ago, present, Terrapin\, Inc., hacking up Unix systems\, breaking @code{LOGO} worlds\, terrorizing surrounding neighborhood.} -@bye diff --git a/texinfo/makeinfo/macros/resume.texi b/texinfo/makeinfo/macros/resume.texi deleted file mode 100644 index a4dc5d04be9..00000000000 --- a/texinfo/makeinfo/macros/resume.texi +++ /dev/null @@ -1,64 +0,0 @@ -@c -@c Reusme writing macros. Produce a very specific format. -@c - -@c A macro which creates a macro. The resultant macro can be called to -@c set a variable which has the same name as the macro. Use -@c @value{name} to get the value set in @name{}. -@macro make-var-macro{macro-name} -@macro \macro-name\{value} -@quote-arg -@set \macro-name\ \value\ -@end macro -@end macro - -@make-var-macro{name} -@make-var-macro{street} -@make-var-macro{city} -@make-var-macro{state} -@make-var-macro{zip} -@make-var-macro{phone} -@make-var-macro{email} - -@c Give all of the above variable/macros a null value to start. -@name -@street -@city -@state -@zip -@phone -@email - -@c A typical heading for a resume block is a non-indented line. -@macro block{title} -@paragraphindent none -@comment @noindent -@heading \title\ -@end macro - -@c A typical entry in a resume has a from-date, a to-date, a location, -@c a job title, and a longer descrition body. - -@macro entry{from-date, to-date, where, what, body} -@paragraphindent 8 -@b{\where\: \what\ (\from-date\ --- \to-date\)} -@paragraphindent 3 - -\body\ -@paragraphindent none -@end macro - -@macro address{} -@value{name}@* -@value{street}@* -@value{city}, @value{state}@* -@value{zip}@* -@value{phone} -@end macro - -@macro resume{} -@center @value{name}@* -@center @value{street}@* -@center @value{city}, @value{state} @value{zip}@* -@center @value{email} -@end macro diff --git a/texinfo/makeinfo/macros/simpledoc.texi b/texinfo/makeinfo/macros/simpledoc.texi deleted file mode 100644 index 576cb9b8e41..00000000000 --- a/texinfo/makeinfo/macros/simpledoc.texi +++ /dev/null @@ -1,135 +0,0 @@ - -@comment Here are some useful examples of the macro facility. - -@c Simply insert the right version of the texinfo name. -@macro texinfo{} -TeXinfo -@end macro - -@c Define a macro which expands to a pretty version of the name of the -@c Makeinfo program. -@macro makeinfo{} -@code{Makeinfo} -@end macro - -@c Simple insert the right version of the Info name. -@macro Info{} -@code{Info} -@end macro - -@c Define a macro which is used to define other macros. This one makes -@c a macro which creates a node and gives it a sectioning command. Note -@c that the created macro uses the original definition within the -@c expansion text. This takes advantage of the non-recursion feature of -@c macro execution. -@macro node_define{orig-name} -@macro \orig-name\{title} -@node \title\ -@\orig-name\ \title\ -@end macro -@end macro - -@c Here is a special one for "@top", causing the node name to be "Top", -@c but leaving the section name as the specified title. -@macro top{title} -@node Top -@top \title\ -@end macro - -@c Now actually define a new set of sectioning commands. -@node_define {appendix} -@node_define {appendixsec} -@node_define {appendixsubsec} -@node_define {appendixsubsubsec} -@node_define {chapter} -@node_define {section} -@node_define {subsection} -@node_define {subsubsec} -@node_define {unnumbered} -@node_define {unnumberedsec} -@node_define {unnumberedsubsec} -@node_define {unnumberedsubsubsec} - -@c The italicized analogues. -@node_define {iappendix} -@node_define {iappendixsec} -@node_define {iappendixsubsec} -@node_define {iappendixsubsubsec} -@node_define {ichapter} -@node_define {isection} -@node_define {isubsection} -@node_define {isubsubsec} -@node_define {iunnumbered} -@node_define {iunnumberedsec} -@node_define {iunnumberedsubsec} -@node_define {iunnumberedsubsubsec} - -@c Manual starter: -@c -@c Pass arguments of TITLE, AUTHOR, and a short DESCRIPTION. -@c Immediately following, insert the Top node's menu. -@c -@c Typical usage: -@c -@c @document{Makeinfo, Brian J. Fox, This file documents the use of the -@c @code{makeinfo} program\, versions 1.58 and later.} -@c -@c @menu -@c * What is @makeinfo{}?:: -@c @end menu - -@macro document{title, author, description} -@ifinfo -\description\ - -Copyright @copyright{} 1994 \author\ -Copyright @copyright{} 1994 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to process this file through TeX and print the -results, provided the printed document carries copying permission -notice identical to this one except for the removal of this paragraph -(this paragraph not being relevant to the printed manual). - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the copyright holders. -@end ifinfo - -@titlepage -@title \title\ -@author \author\ - -@page -@vskip 0pt plus 1filll -Copyright @copyright{} 1994 \author\ -Copyright @copyright{} 1994 Free Software Foundation, Inc. - -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. - -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the entire -resulting derived work is distributed under the terms of a permission -notice identical to this one. - -Permission is granted to copy and distribute translations of this manual -into another language, under the above conditions for modified versions, -except that this permission notice may be stated in a translation approved -by the copyright holders. -@end titlepage - -@top{\title\} - -\description\ -@end macro diff --git a/texinfo/po/ChangeLog b/texinfo/po/ChangeLog deleted file mode 100644 index e69de29bb2d..00000000000 --- a/texinfo/po/ChangeLog +++ /dev/null diff --git a/texinfo/po/Makefile.in.in b/texinfo/po/Makefile.in.in deleted file mode 100644 index 2bcfa31b94b..00000000000 --- a/texinfo/po/Makefile.in.in +++ /dev/null @@ -1,247 +0,0 @@ -# Makefile for program source directory in GNU NLS utilities package. -# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu> -# -# This file can be copied and used freely without restrictions. It can -# be used in projects which are not available under the GNU Public License -# but which still want to provide support for the GNU gettext functionality. -# Please note that the actual code is *not* freely available. - -PACKAGE = @PACKAGE@ -VERSION = @VERSION@ - -SHELL = /bin/sh -@SET_MAKE@ - -srcdir = @srcdir@ -top_srcdir = @top_srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ -exec_prefix = @exec_prefix@ -datadir = $(prefix)/@DATADIRNAME@ -localedir = $(datadir)/locale -gnulocaledir = $(prefix)/share/locale -gettextsrcdir = $(prefix)/share/gettext/po -subdir = po - -INSTALL = @INSTALL@ -INSTALL_DATA = @INSTALL_DATA@ -MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@ - -CC = @CC@ -GENCAT = @GENCAT@ -GMSGFMT = PATH=../src:$$PATH @GMSGFMT@ -MSGFMT = @MSGFMT@ -XGETTEXT = PATH=../src:$$PATH @XGETTEXT@ -MSGMERGE = PATH=../src:$$PATH msgmerge - -DEFS = @DEFS@ -CFLAGS = @CFLAGS@ -CPPFLAGS = @CPPFLAGS@ - -INCLUDES = -I.. -I$(top_srcdir)/intl - -COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - -SOURCES = cat-id-tbl.c -POFILES = @POFILES@ -GMOFILES = @GMOFILES@ -DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ -stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES) - -POTFILES = \ - -CATALOGS = @CATALOGS@ -CATOBJEXT = @CATOBJEXT@ -INSTOBJEXT = @INSTOBJEXT@ - -.SUFFIXES: -.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat - -.c.o: - $(COMPILE) $< - -.po.pox: - $(MAKE) $(PACKAGE).pot - $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox - -.po.mo: - $(MSGFMT) -o $@ $< - -.po.gmo: - file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ - && rm -f $$file && $(GMSGFMT) -o $$file $< - -.po.cat: - sed -f ../intl/po2msg.sed < $< > $*.msg \ - && rm -f $@ && $(GENCAT) $@ $*.msg - - -all: all-@USE_NLS@ - -all-yes: cat-id-tbl.c $(CATALOGS) -all-no: - -$(srcdir)/$(PACKAGE).pot: $(POTFILES) - $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ - --add-comments --keyword=_ --keyword=N_ \ - --files-from=$(srcdir)/POTFILES.in - rm -f $(srcdir)/$(PACKAGE).pot - mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot - -$(srcdir)/cat-id-tbl.c: stamp-cat-id; @: -$(srcdir)/stamp-cat-id: $(PACKAGE).pot - rm -f cat-id-tbl.tmp - sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \ - | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp - if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \ - rm cat-id-tbl.tmp; \ - else \ - echo cat-id-tbl.c changed; \ - rm -f $(srcdir)/cat-id-tbl.c; \ - mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \ - fi - cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id - - -install: install-exec install-data -install-exec: -install-data: install-data-@USE_NLS@ -install-data-no: all -install-data-yes: all - if test -r $(MKINSTALLDIRS); then \ - $(MKINSTALLDIRS) $(datadir); \ - else \ - $(top_srcdir)/mkinstalldirs $(datadir); \ - fi - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - case "$$cat" in \ - *.gmo) destdir=$(gnulocaledir);; \ - *) destdir=$(localedir);; \ - esac; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - dir=$$destdir/$$lang/LC_MESSAGES; \ - if test -r $(MKINSTALLDIRS); then \ - $(MKINSTALLDIRS) $$dir; \ - else \ - $(top_srcdir)/mkinstalldirs $$dir; \ - fi; \ - if test -r $$cat; then \ - $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ - echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \ - else \ - $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \ - echo "installing $(srcdir)/$$cat as" \ - "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \ - fi; \ - if test -r $$cat.m; then \ - $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ - echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ - else \ - if test -r $(srcdir)/$$cat.m ; then \ - $(INSTALL_DATA) $(srcdir)/$$cat.m \ - $$dir/$(PACKAGE)$(INSTOBJEXT).m; \ - echo "installing $(srcdir)/$$cat as" \ - "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \ - else \ - true; \ - fi; \ - fi; \ - done - if test "$(PACKAGE)" = "gettext"; then \ - if test -r $(MKINSTALLDIRS); then \ - $(MKINSTALLDIRS) $(gettextsrcdir); \ - else \ - $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \ - fi; \ - $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ - $(gettextsrcdir)/Makefile.in.in; \ - else \ - : ; \ - fi - -# Define this as empty until I found a useful application. -installcheck: - -uninstall: - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ - rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ - rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \ - rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \ - done - rm -f $(gettextsrcdir)/po-Makefile.in.in - -check: all - -cat-id-tbl.o: ../intl/libgettext.h - -dvi info tags TAGS ID: - -mostlyclean: - rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp - rm -fr *.o - -clean: mostlyclean - -distclean: clean - rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m - -maintainer-clean: distclean - @echo "This command is intended for maintainers to use;" - @echo "it deletes files that may require special tools to rebuild." - rm -f $(GMOFILES) - -distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -dist distdir: update-po $(DISTFILES) - dists="$(DISTFILES)"; \ - for file in $$dists; do \ - ln $(srcdir)/$$file $(distdir) 2> /dev/null \ - || cp -p $(srcdir)/$$file $(distdir); \ - done - -update-po: Makefile - $(MAKE) $(PACKAGE).pot - PATH=`pwd`/../src:$$PATH; \ - cd $(srcdir); \ - catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ - lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \ - mv $$lang.po $$lang.old.po; \ - echo "$$lang:"; \ - if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \ - rm -f $$lang.old.po; \ - else \ - echo "msgmerge for $$cat failed!"; \ - rm -f $$lang.po; \ - mv $$lang.old.po $$lang.po; \ - fi; \ - done - -POTFILES: POTFILES.in - ( if test 'x$(srcdir)' != 'x.'; then \ - posrcprefix='$(top_srcdir)/'; \ - else \ - posrcprefix="../"; \ - fi; \ - rm -f $@-t $@ \ - && (sed -e '/^#/d' -e '/^[ ]*$$/d' \ - -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \ - | sed -e '$$s/\\$$//') > $@-t \ - && chmod a-w $@-t \ - && mv $@-t $@ ) - -Makefile: Makefile.in.in ../config.status POTFILES - cd .. \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -# Tell versions [3.59,3.63) of GNU make not to export all variables. -# Otherwise a system limit (for SysV at least) may be exceeded. -.NOEXPORT: diff --git a/texinfo/po/POTFILES.in b/texinfo/po/POTFILES.in deleted file mode 100644 index 8debb07e931..00000000000 --- a/texinfo/po/POTFILES.in +++ /dev/null @@ -1,22 +0,0 @@ -# List of source files containing translatable strings. -# The last line must not be a comment. - -info/echo-area.c -info/footnotes.c -info/footnotes.h -info/indices.c -info/info.c -info/info.h -info/infodoc.c -info/m-x.c -info/makedoc.c -info/nodemenu.c -info/session.c -info/tilde.c -info/variables.c -info/window.c -lib/getopt.c -makeinfo/makeinfo.c -makeinfo/multi.c -util/install-info.c -util/texindex.c diff --git a/texinfo/po/cat-id-tbl.c b/texinfo/po/cat-id-tbl.c deleted file mode 100644 index f40dc22b199..00000000000 --- a/texinfo/po/cat-id-tbl.c +++ /dev/null @@ -1,502 +0,0 @@ -/* Automatically generated by po2tbl.sed from texinfo.pot. */ - -#if HAVE_CONFIG_H -# include <config.h> -#endif - -#include "libgettext.h" - -const struct _msg_ent _msg_tbl[] = { - {"", 1}, - {"Move down to the next line", 2}, - {"Move up to the previous line", 3}, - {"Move to the end of the line", 4}, - {"Move to the start of the line", 5}, - {"Move forward a character", 6}, - {"Move backward a character", 7}, - {"Move forward a word", 8}, - {"Move backward a word", 9}, - {"Move forwards or down through node structure", 10}, - {"Move backwards or up through node structure", 11}, - {"Scroll forward in this window", 12}, - {"Scroll backward in this window", 13}, - {"Move to the start of this node", 14}, - {"Move to the end of this node", 15}, - {"Select the next window", 16}, - {"Select the previous window", 17}, - {"Split the current window", 18}, - {"Delete the current window", 19}, - {"Delete all other windows", 20}, - {"Scroll the other window", 21}, - {"Grow (or shrink) this window", 22}, - {"Divide the available screen space among the visible windows", 23}, - {"Toggle the state of line wrapping in the current window", 24}, - {"Select the `Next' node", 25}, - {"Select the `Prev' node", 26}, - {"Select the `Up' node", 27}, - {"Select the last node in this file", 28}, - {"Select the first node in this file", 29}, - {"Select the most recently selected node", 30}, - {"Select the last item in this node's menu", 31}, - {"Select this menu item", 32}, - {"Read a menu item and select its node", 33}, - {"Read a footnote or cross reference and select its node", 34}, - {"Move to the start of this node's menu", 35}, - {"Visit as many menu items at once as possible", 36}, - {"Read a node name and select it", 37}, - {"Read a manpage reference and select it", 38}, - {"Select the node `Top' in this file", 39}, - {"Select the node `(dir)'", 40}, - {"Kill this node", 41}, - {"Read the name of a file and select it", 42}, - {"Pipe the contents of this node through INFO_PRINT_COMMAND", 43}, - {"Read a string and search for it", 44}, - {"Search interactively for a string as you type it", 45}, - {"Move to the previous cross reference", 46}, - {"Move to the next cross reference", 47}, - {"Select reference or menu item appearing on this line", 48}, - {"Cancel current operation", 49}, - {"Move to the cursor to a specific line of the window", 50}, - {"Redraw the display", 51}, - {"Quit using Info", 52}, - {"Add this digit to the current numeric argument", 53}, - {"universal-argument", 54}, - {"Start (or multiply by 4) the current numeric argument", 55}, - {"Internally used by \\[universal-argument]", 56}, - {"Move to the start of this line", 57}, - {"Move to the end of this line", 58}, - {"Delete the character under the cursor", 59}, - {"Delete the character behind the cursor", 60}, - {"Cancel or quit operation", 61}, - {"Accept (or force completion of) this line", 62}, - {"Insert next character verbatim", 63}, - {"Insert this character", 64}, - {"Insert a TAB character", 65}, - {"Transpose characters at point", 66}, - {"Yank back the contents of the last kill", 67}, - {"Yank back a previous kill", 68}, - {"Kill to the end of the line", 69}, - {"Kill to the beginning of the line", 70}, - {"Kill the word following the cursor", 71}, - {"Kill the word preceding the cursor", 72}, - {"List possible completions", 73}, - {"Insert completion", 74}, - {"Scroll the completions window", 75}, - {"Display help message", 76}, - {"Visit Info node `(info)Help'", 77}, - {"Print documentation for KEY", 78}, - {"Show what to type to execute a given command", 79}, - {"Read the name of an Info command and describe it", 80}, - {"Read a command name in the echo area and execute it", 81}, - {"Set the height of the displayed window", 82}, - {"Look up a string in the index for this file", 83}, - {"\ -Go to the next matching index item from the last `\\[index-search]' command", 84}, - {"Grovel all known info file's indices for a string and build a menu", 85}, - {"Make a window containing a menu of all of the currently visited nodes", 86}, - {"Select a node which has been previously visited in a visible window", 87}, - {"Show the footnotes associated with this node in another window", 88}, - {"Explain the use of a variable", 89}, - {"Set the value of an Info variable", 90}, - {"Kill ring is empty", 91}, - {"Not complete", 92}, - {"No completions", 93}, - {"Sole completion", 94}, - {"There %s %d ", 95}, - {"is", 96}, - {"are", 97}, - {"completion%s:\n", 98}, - {"Building completions...", 99}, - {"Footnotes could not be displayed", 100}, - {"Finding index entries...", 101}, - {"No indices found.", 102}, - {"Index entry: ", 103}, - {"No previous index search string.", 104}, - {"No index entries.", 105}, - {"No %sindex entries containing \"%s\".", 106}, - {"more ", 107}, - {"CAN'T SEE THIS", 108}, - {"Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)", 109}, - {"Scanning indices of \"%s\"...", 110}, - {"Index apropos: ", 111}, - {"\ -\n\ -* Menu: Nodes whoses indices contain \"%s\":\n", 112}, - {"no entries found\n", 113}, - {"There is no menu in this node.", 114}, - {"There is no menu item \"%s\" in this node.", 115}, - {"Unable to find the node referenced by \"%s\".", 116}, - {"\ -Usage: info [-d dir-path] [-f info-file] [-o output-file] [-n node-name]...", 117}, - {"\ - [--directory dir-path] [--file info-file] [--node node-name]...", 118}, - {" [--help] [--output output-file] [--subnodes] [--version]", 119}, - {" [--dribble dribble-file] [--restore from-file]", 120}, - {" [menu-selection ...]", 121}, - {"\ -Here is a quick description of Info's options. For a more complete\n\ -description of how to use Info, type `info info options'.\n\ -\n\ - --directory DIR Add DIR to INFOPATH.\n\ - --dribble FILENAME Remember user keystrokes in FILENAME.\n\ - --file FILENAME Specify Info file to visit.\n\ - --node NODENAME Specify nodes in first visited Info file.\n\ - --output FILENAME Output selected nodes to FILENAME.\n\ - --restore FILENAME Read initial keystrokes from FILENAME.\n\ - --subnodes Recursively output menu items.\n\ - --help Get this help message.\n\ - --version Display Info's version information.\n\ -\n\ -Remaining arguments to Info are treated as the names of menu\n\ -items in the initial node visited. You can easily move to the\n\ -node of your choice by specifying the menu names which describe\n\ -the path to that node. For example, `info emacs buffers'.\n\ -\n\ -Email bug reports to bug-texinfo@prep.ai.mit.edu.", 122}, - {"Basic Commands in Info Windows", 123}, - {"\ -The following commands can only be invoked via M-x:\n\ -\n", 124}, - {"--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n", 125}, - {"Describe key: %s", 126}, - {"ESC %s is undefined.", 127}, - {"%s is undefined.", 128}, - {"%s is defined to %s.", 129}, - {"Where is command: ", 130}, - {"`%s' is not on any keys", 131}, - {"%s can only be invoked via %s.", 132}, - {"%s can be invoked via %s.", 133}, - {"There is no function named `%s'", 134}, - {"Describe command: ", 135}, - {"Cannot execute an `echo-area' command here.", 136}, - {"Set screen height to (%d): ", 137}, - {"\ - Source files groveled to make this file include:\n\ -\n", 138}, - {"Couldn't manipulate the file %s.\n", 139}, - {"\ -\n\ -* Menu:\n\ - (File)Node Lines Size Containing File\n\ - ---------- ----- ---- ---------------", 140}, - {"\ -Here is the menu of nodes you have recently visited.\n\ -Select one from this menu, or use `\\[history-node]' in another window.\n", 141}, - {"Select visited node: ", 142}, - {"The reference disappeared! (%s).", 143}, - {"\ -Welcome to Info version %s. \"\\[get-help-window]\" for help, \ -\"\\[menu-item]\" for menu item.", 144}, - {" times", 145}, - {"%d times", 146}, - {"No \"Next\" pointer for this node.", 147}, - {"Following \"Next\" node...", 148}, - {"Next", 149}, - {"Selecting first menu item...", 150}, - {"Selecting \"Next\" node...", 151}, - {"Up", 152}, - {"No more nodes.", 153}, - {"No \"Prev\" for this node.", 154}, - {"Moving \"Prev\" in this window.", 155}, - {"Prev", 156}, - {"No \"Prev\" or \"Up\" for this node.", 157}, - {"Moving \"Up\" in this window.", 158}, - {"Moving to \"Prev\"'s last menu item.", 159}, - {"Cannot delete a permanent window", 160}, - {"This window has no additional nodes", 161}, - {"There aren't %d items in this menu.", 162}, - {"Menu item (%s): ", 163}, - {"Menu item: ", 164}, - {"Follow xref (%s): ", 165}, - {"Follow xref: ", 166}, - {"Goto Node: ", 167}, - {"Get Manpage: ", 168}, - {"Top", 169}, - {"Kill node (%s): ", 170}, - {"Cannot kill node `%s'", 171}, - {"Cannot kill the last node", 172}, - {"Find file: ", 173}, - {"Cannot find \"%s\".", 174}, - {"Could not create output file \"%s\".", 175}, - {"Done.", 176}, - {"Writing node \"(%s)%s\"...", 177}, - {"Writing node \"%s\"...", 178}, - {"Cannot open pipe to \"%s\".", 179}, - {"Printing node \"(%s)%s\"...", 180}, - {"Printing node \"%s\"...", 181}, - {"Searching subfile \"%s\"...", 182}, - {"%s for string [%s]: ", 183}, - {"Search backward", 184}, - {"Search", 185}, - {"Search failed.", 186}, - {"I-search backward: ", 187}, - {"I-search: ", 188}, - {"Failing ", 189}, - {"No cross references in this node.", 190}, - {"Quit", 191}, - {"Unknown command (%s).", 192}, - {"\"\" is invalid", 193}, - {"\"%s\" is invalid", 194}, - {"When \"On\", footnotes appear and disappear automatically", 195}, - {"When \"On\", creating or deleting a window resizes other windows", 196}, - {"When \"On\", flash the screen instead of ringing the bell", 197}, - {"When \"On\", errors cause the bell to ring", 198}, - {"When \"On\", Info garbage collects files which had to be uncompressed", 199}, - {"When \"On\", the portion of the matched search string is highlighted", 200}, - {"Controls what happens when scrolling is requested at the end of a node", 201}, - {"The number lines to scroll when the cursor moves out of the window", 202}, - {"When \"On\", Info accepts and displays ISO Latin characters", 203}, - {"Describe variable: ", 204}, - {"Set variable: ", 205}, - {"Set %s to value (%d): ", 206}, - {"Set %s to value (%s): ", 207}, - {"--*** Tags out of Date ***", 208}, - {"-----Info: (), lines ----, ", 209}, - {"-%s---Info: %s, %d lines --%s--", 210}, - {"-%s%s-Info: (%s)%s, %d lines --%s--", 211}, - {" Subfile: %s", 212}, - {"%s:%d: warning: ", 213}, - {"Too many errors! Gave up.\n", 214}, - {"%s: %s arg must be numeric, not `%s'.\n", 215}, - {"Couldn't open macro expansion output `%s'", 216}, - {"Cannot specify more than one macro expansion output", 217}, - {"%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n", 218}, - {"%s: --footnote-style arg must be `separate' or `end', not `%s'.\n", 219}, - {"\ -Copyright (C) 1996 Free Software Foundation, Inc.\n\ -There is NO warranty. You may redistribute this software\n\ -under the terms of the GNU General Public License.\n\ -For more information about these matters, see the files named COPYING.", 220}, - {"%s: missing file argument.\n", 221}, - {"makeinfo (GNU %s %s) %d.%d\n", 222}, - {"Try `%s --help' for more information.\n", 223}, - {"\ -Usage: %s [OPTION]... TEXINFO-FILE...\n\ -\n\ -Translate Texinfo source documentation to a format suitable for reading\n\ -with GNU Info.\n\ -\n\ -Options:\n\ --D VAR define a variable, as with @set.\n\ --E MACRO-OFILE process macros only, output texinfo source.\n\ --I DIR append DIR to the @include directory search path.\n\ --P DIR prepend DIR to the @include directory search path.\n\ --U VAR undefine a variable, as with @clear.\n\ ---error-limit NUM quit after NUM errors (default %d).\n\ ---fill-column NUM break lines at NUM characters (default %d).\n\ ---footnote-style STYLE output footnotes according to STYLE:\n\ - `separate' to place footnotes in their own node,\n\ - `end' to place the footnotes at the end of\n\ - the node in which they are defined (the default).\n\ ---force preserve output even if errors.\n\ ---help display this help and exit.\n\ ---no-validate suppress node cross-reference validation.\n\ ---no-warn suppress warnings (but not errors).\n\ ---no-split suppress splitting of large files.\n\ ---no-headers suppress node separators and Node: Foo headers.\n\ ---output FILE, -o FILE output to FILE, and ignore any @setfilename.\n\ ---paragraph-indent VAL indent paragraphs with VAL spaces (default %d).\n\ - if VAL is `none', do not indent; if VAL is `asis',\n\ - preserve any existing indentation.\n\ ---reference-limit NUM complain about at most NUM references (default %d).\n\ ---verbose report about what is being done.\n\ ---version display version information and exit.\n\ -\n\ -Email bug reports to bug-texinfo@prep.ai.mit.edu.\n", 224}, - {"%s: getwd: %s, %s\n", 225}, - {"Expected `%s'", 226}, - {"No `%s' found in `%s'", 227}, - {"%s: Skipping macro expansion to stdout as Info output is going there.\n", 228}, - {"Making %s file `%s' from `%s'.\n", 229}, - {"This is Info file %s, produced by Makeinfo version %d.%d", 230}, - {" from the input file %s.\n", 231}, - {"\ -%s: Removing macro output file `%s' due to errors; use --force to preserve.\n", 232}, - {"%s: Removing output file `%s' due to errors; use --force to preserve.\n", 233}, - {"Misplaced %c", 234}, - {"Unknown command `%s'", 235}, - {"NO_NAME!", 236}, - {"%c%s expected `{...}'", 237}, - {"Unmatched }", 238}, - {"%c%s missing close brace", 239}, - {"Broken-Type in insertion_type_pname", 240}, - {"Enumeration stack overflow", 241}, - {"lettering overflow, restarting at %c", 242}, - {"* Menu:\n", 243}, - {"%s requires an argument: the formatter for %citem", 244}, - {"`%cend' expected `%s', but saw `%s'", 245}, - {"No matching `%cend %s'", 246}, - {"How did @%s end up in cm_special_char?\n", 247}, - {"%c%s expects `i' or `j' as argument, not `%c'", 248}, - {"%c%s expects a single character `i' or `j' as argument", 249}, - {"January", 250}, - {"February", 251}, - {"March", 252}, - {"April", 253}, - {"May", 254}, - {"June", 255}, - {"July", 256}, - {"August", 257}, - {"September", 258}, - {"October", 259}, - {"November", 260}, - {"December", 261}, - {"%d %s %d", 262}, - {"%c%s expects a single character as an argument", 263}, - {"%c%s is obsolete", 264}, - {"There already is a node having %ctop as a section", 265}, - {"Here is the %ctop node", 266}, - {"%ctop used before %cnode, defaulting to %s", 267}, - {"%c%s is obsolete; use %c%s instead", 268}, - {"Node `%s' multiply defined (line %d is first definition at)", 269}, - {"Formatting node %s...\n", 270}, - {"Node `%s' requires a sectioning command (e.g. %c%s)", 271}, - {"Node `%s''s Next field not pointed back to", 272}, - {"This node (`%s') is the one with the bad `Prev'", 273}, - {"Node `%s's Prev field not pointed back to", 274}, - {"This node (`%s') has the bad Next", 275}, - {"Node `%s' missing Up field", 276}, - {"`%s' has an Up field of `%s', but `%s' has no menu item for `%s'", 277}, - {"node `%s' has been referenced %d times", 278}, - {"unreferenced node `%s'", 279}, - {"%s reference to nonexistent node `%s'", 280}, - {"%cmenu seen before first node", 281}, - {"creating `Top' node", 282}, - {"`.' or `,' must follow cross reference, not %c", 283}, - {"@image file `%s' unreadable: %s", 284}, - {"@image missing filename argument", 285}, - {"%s requires letter or digit", 286}, - {"Unmatched `%c%s'", 287}, - {"`%c%s' needs something after it", 288}, - {"Bad argument to `%s', `%s', using `%s'", 289}, - {"{No Value For \"%s\"}", 290}, - {"%c%s requires a name", 291}, - {"Reached eof before matching @end %s", 292}, - {"The `%c%s' command is meaningless within a `@%s' block", 293}, - {"%citemx is not meaningful inside of a `%s' block", 294}, - {"%c%s found outside of an insertion block", 295}, - {"Missing `}' in %cdef arg", 296}, - {"Function", 297}, - {"Macro", 298}, - {"Special Form", 299}, - {"Variable", 300}, - {"User Option", 301}, - {"Instance Variable", 302}, - {"Method", 303}, - {"Must be in a `%s' insertion in order to use `%s'x", 304}, - {"%csp requires a positive numeric argument", 305}, - {"asis", 306}, - {"none", 307}, - {"Bad argument to %c%s", 308}, - {"Unknown index `%s'", 309}, - {"Index `%s' already exists", 310}, - {"Unknown index `%s' and/or `%s' in @synindex", 311}, - {"Unknown index `%s' in @printindex", 312}, - {"\ -* Menu:\n\ -\n", 313}, - {"`%c%s' needs an argument `{...}', not just `%s'", 314}, - {"No closing brace for footnote `%s'", 315}, - {"Footnote defined without parent node", 316}, - {"-Footnotes", 317}, - {"\ ----------- Footnotes ----------\n\ -\n", 318}, - {"macro `%s' previously defined", 319}, - {"here is the previous definition of `%s'", 320}, - {"Macro `%s' called with too many args", 321}, - {"%cend macro not found", 322}, - {"%cquote-arg only useful when the macro takes a single argument", 323}, - {"ignoring stray text `%s' after @multitable", 324}, - {"Too many columns in multitable item (max %d)", 325}, - {"multitable item not in active multitable", 326}, - {"Cannot select column #%d in multitable", 327}, - {"ignoring @tab outside of multitable", 328}, - {"** Multicolumn output from last row:\n", 329}, - {"* column #%d: output = %s\n", 330}, - {"virtual memory exhausted", 331}, - {"%s: warning: ", 332}, - {" for %s", 333}, - {"\tTry `%s --help' for a complete list of options.\n", 334}, - {"\ -%s [OPTION]... [INFO-FILE [DIR-FILE]]\n\ - Install INFO-FILE in the Info directory file DIR-FILE.\n\ -\n\ -Options:\n\ ---delete Delete existing entries in INFO-FILE;\n\ - don't insert any new entries.\n\ ---dir-file=NAME Specify file name of Info directory file.\n\ - This is equivalent to using the DIR-FILE argument.\n\ ---entry=TEXT Insert TEXT as an Info directory entry.\n\ - TEXT should have the form of an Info menu item line\n\ - plus zero or more extra lines starting with whitespace.\n\ - If you specify more than one entry, they are all added.\n\ - If you don't specify any entries, they are determined\n\ - from information in the Info file itself.\n\ ---help Display this help and exit.\n\ ---info-file=FILE Specify Info file to install in the directory.\n\ - This is equivalent to using the INFO-FILE argument.\n\ ---info-dir=DIR Same as --dir-file=DIR/dir.\n\ ---item=TEXT Same as --entry TEXT.\n\ - An Info directory entry is actually a menu item.\n\ ---quiet Suppress warnings.\n\ ---remove Same as --delete.\n\ ---section=SEC Put this file's entries in section SEC of the directory.\n\ - If you specify more than one section, all the entries\n\ - are added in each of the sections.\n\ - If you don't specify any sections, they are determined\n\ - from information in the Info file itself.\n\ ---version Display version information and exit.\n\ -\n\ -Email bug reports to bug-texinfo@prep.ai.mit.edu.\n", 335}, - {"\ -This is the file .../info/dir, which contains the\n\ -topmost node of the Info hierarchy, called (dir)Top.\n\ -The first time you invoke Info you start off looking at this node.\n\ -\n\ -File: dir Node: Top This is the top of the INFO tree\n\ -\n\ - This (the Directory node) gives a menu of major topics.\n\ - Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n\ - \"h\" gives a primer for first-timers,\n\ - \"mEmacs<Return>\" visits the Emacs manual, etc.\n\ -\n\ - In Emacs, you can click mouse button 2 on a menu item or cross reference\n\ - to select it.\n\ -\n\ -* Menu:\n", 336}, - {"%s: could not read (%s) and could not create (%s)\n", 337}, - {"%s: Specify the Info directory only once.\n", 338}, - {"%s: Specify the Info file only once.\n", 339}, - {"install-info (GNU %s) %s\n", 340}, - {"excess command line argument `%s'", 341}, - {"No input file specified; try --help for more information.", 342}, - {"No dir file specified; try --help for more information.", 343}, - {"START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY", 344}, - {"END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY", 345}, - {"no info dir entry in `%s'", 346}, - {"menu item `%s' already exists, for file `%s'", 347}, - {"no entries found for `%s'; nothing deleted", 348}, - {"keep temporary files around after processing", 349}, - {"do not keep temporary files around after processing (default)", 350}, - {"send output to FILE", 351}, - {"display version information and exit", 352}, - {"display this help and exit", 353}, - {"Usage: %s [OPTION]... FILE...\n", 354}, - {"Generate a sorted index for each TeX output FILE.\n", 355}, - {"Usually FILE... is `foo.??' for a document `foo.texi'.\n", 356}, - {"\ -\n\ -Options:\n", 357}, - {"\ -\n\ -Email bug reports to bug-texinfo@prep.ai.mit.edu.", 358}, - {"texindex (GNU %s %s) 2.1\n", 359}, - {"%s: not a texinfo index file", 360}, - {"failure reopening %s", 361}, - {"entry %s follows an entry with a secondary name", 362}, - {"%s; for file `%s'.\n", 363}, - {"Virtual memory exhausted in %s ()! Needed %d bytes.", 364}, -}; - -int _msg_tbl_length = 364; diff --git a/texinfo/po/de.gmo b/texinfo/po/de.gmo Binary files differdeleted file mode 100644 index b99834b5e5c..00000000000 --- a/texinfo/po/de.gmo +++ /dev/null diff --git a/texinfo/po/de.po b/texinfo/po/de.po deleted file mode 100644 index 081cce67a6a..00000000000 --- a/texinfo/po/de.po +++ /dev/null @@ -1,2089 +0,0 @@ -# German messages for GNU Texinfo -# Copyright © 1996, 1997, 1998 Free Software Foundation, Inc. -# Karl Eichwalder <ke@ke.Central.DE>, 1996. -# Karl Eichwalder <ke@SuSE.DE>, 1997,1998. -# -# 1998-02-28 14:29:49 MET -# Revised for 3.11b -# I refuse to translate getopt.c strings -# -ke- -# -msgid "" -msgstr "" -"Project-Id-Version: texinfo 3.11\n" -"POT-Creation-Date: 1998-03-03 13:32-0500\n" -"PO-Revision-Date: 1998-02-28 14:32+01:00\n" -"Last-Translator: Karl Eichwalder <ke@SuSE.DE>\n" -"Language-Team: German <de@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8-bit\n" - -#. **************************************************************** -#. -#. Echo Area Movement Commands -#. -#. **************************************************************** -#: info/echo-area.c:283 info/session.c:698 -msgid "Move forward a character" -msgstr "Ein Zeichen vorwärts bewegen" - -#. Move point backward in the node. -#: info/echo-area.c:295 info/session.c:714 -msgid "Move backward a character" -msgstr "Ein Zeichen rückwärts bewegen" - -#: info/echo-area.c:307 -msgid "Move to the start of this line" -msgstr "Zum Anfang dieser Zeile bewegen" - -#: info/echo-area.c:312 -msgid "Move to the end of this line" -msgstr "Zum Ende dieser Zeile bewegen" - -#. Move forward a word in the input line. -#: info/echo-area.c:320 info/session.c:732 -msgid "Move forward a word" -msgstr "Ein Wort vorwärts bewegen" - -#: info/echo-area.c:360 info/session.c:781 -msgid "Move backward a word" -msgstr "Ein Wort rückwärts bewegen" - -#: info/echo-area.c:400 -msgid "Delete the character under the cursor" -msgstr "Das Zeichen unter dem Cursor löschen" - -# checkit -#: info/echo-area.c:430 -msgid "Delete the character behind the cursor" -msgstr "Das Zeichen hinter dem Cursor löschen" - -#: info/echo-area.c:451 -msgid "Cancel or quit operation" -msgstr "Operation abbrechen oder beenden" - -#: info/echo-area.c:466 -msgid "Accept (or force completion of) this line" -msgstr "Akzeptiere diese Zeile (oder erzwinge ihre Vervollständigung)" - -#: info/echo-area.c:471 -msgid "Insert next character verbatim" -msgstr "Das nächste Zeichen wörtlich eingeben" - -#: info/echo-area.c:479 -msgid "Insert this character" -msgstr "Dieses Zeichen eingeben" - -# checkit -#: info/echo-area.c:497 -msgid "Insert a TAB character" -msgstr "Ein TAB-Zeichen eingeben" - -#. Transpose the characters at point. If point is at the end of the line, -#. then transpose the characters before point. -#: info/echo-area.c:504 -msgid "Transpose characters at point" -msgstr "Zeichen am Point umstellen" - -#: info/echo-area.c:555 -msgid "Yank back the contents of the last kill" -msgstr "Füge den Inhalt des letzten Killens ein" - -# IMO muss "kill" auch im Folgenden wörtlich üs werden -ke- -#: info/echo-area.c:562 -msgid "Kill ring is empty" -msgstr "Der Kill-Ring ist leer" - -#. If the last command was yank, or yank_pop, and the text just before -#. point is identical to the current kill item, then delete that text -#. from the line, rotate the index down, and yank back some other text. -#: info/echo-area.c:575 -msgid "Yank back a previous kill" -msgstr "Füge ein vorangehendes Killen ein" - -#. Delete the text from point to end of line. -#: info/echo-area.c:608 -msgid "Kill to the end of the line" -msgstr "Bis zum Ende der Zeile killen" - -#: info/echo-area.c:621 -msgid "Kill to the beginning of the line" -msgstr "Bis zum Anfang der Zeile killen" - -#. Delete from point to the end of the current word. -#: info/echo-area.c:633 -msgid "Kill the word following the cursor" -msgstr "Das dem Cursor folgende Wort killen" - -#: info/echo-area.c:652 -msgid "Kill the word preceding the cursor" -msgstr "Das dem Cursor vorangehende Wort killen" - -# checkit -#: info/echo-area.c:871 -msgid "Not complete" -msgstr "Nicht vollständig" - -#: info/echo-area.c:916 -msgid "List possible completions" -msgstr "Mögliche Vervollständigungen listen" - -#: info/echo-area.c:929 -msgid "No completions" -msgstr "Keine Vervollständigungen" - -#: info/echo-area.c:933 -msgid "Sole completion" -msgstr "Einzige Vervollständigung" - -#: info/echo-area.c:942 -msgid "One completion:\n" -msgstr "Eine Vervollständigung:\n" - -#: info/echo-area.c:943 -#, c-format -msgid "%d completions:\n" -msgstr "%d Vervollständigungen:\n" - -#: info/echo-area.c:1088 -msgid "Insert completion" -msgstr "Vervollständigung einfügen" - -#: info/echo-area.c:1221 -msgid "Building completions..." -msgstr "Bilde Vervollständigungen..." - -# checkit -#. Scroll the "other" window. If there is a window showing completions, scroll -#. that one, otherwise scroll the window which was active on entering the read -#. function. -#: info/echo-area.c:1319 -msgid "Scroll the completions window" -msgstr "Vervollständigungs-Fenster »scrollen«" - -#: info/footnotes.c:206 -msgid "Footnotes could not be displayed" -msgstr "Fußnoten können nicht angezeigt werden" - -#: info/footnotes.c:232 -msgid "Show the footnotes associated with this node in another window" -msgstr "Zeige die mit diesem Node verbundenen Fußnoten im anderen Fenster" - -#: info/indices.c:175 -msgid "Look up a string in the index for this file" -msgstr "Sieh eine Zeichenkette im Index dieser Datei nach" - -#: info/indices.c:205 -msgid "Finding index entries..." -msgstr "Suche Index-Einträge..." - -# checkit -# oder sind "Einträge" gemeint? -ke- -#: info/indices.c:212 -msgid "No indices found." -msgstr "Keine Indices gefunden." - -#: info/indices.c:222 -msgid "Index entry: " -msgstr "Index-Eintrag: " - -#: info/indices.c:332 -msgid "" -"Go to the next matching index item from the last `\\[index-search]' command" -msgstr "" -"Geh zum nächsten übereinstimmenden Index-Eintrag vom letzten " -"»\\[index-search]«-Befehl" - -#: info/indices.c:342 -msgid "No previous index search string." -msgstr "Keine vorangehende zu suchende Index-Zeichenkette." - -#: info/indices.c:349 -msgid "No index entries." -msgstr "Keine Index-Einträge." - -# checkit -# kann im Deutschen nachgebildet werden, aber... -ke- -#: info/indices.c:382 -#, c-format -msgid "No %sindex entries containing \"%s\"." -msgstr "Keine %sIndex-Einträge beinhalten »%s«." - -#: info/indices.c:383 -msgid "more " -msgstr "weiteren " - -#: info/indices.c:393 -msgid "CAN'T SEE THIS" -msgstr "DIES IST NICHT ZU SEHEN" - -#: info/indices.c:429 -#, c-format -msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)" -msgstr "" -"»%s« in %s gefunden. (»\\[next-index-match]« versucht nächsten Eintrag zu " -"finden.)" - -#: info/indices.c:533 -#, c-format -msgid "Scanning indices of \"%s\"..." -msgstr "Index von »%s« wird durchsucht..." - -#: info/indices.c:616 -msgid "Grovel all known info file's indices for a string and build a menu" -msgstr "" -"Durchsuche durch alle bekannten Info-Datei-Indices nach einer Zeichenkette " -"und bilde ein Menü" - -#: info/indices.c:620 -msgid "Index apropos: " -msgstr "Index apropos: " - -#: info/indices.c:650 -#, c-format -msgid "" -"\n" -"* Menu: Nodes whoses indices contain \"%s\":\n" -msgstr "" -"\n" -"* Menü: Nodes, deren Indices »%s« beinhalten:\n" - -#: info/info.c:212 -msgid "Try --help for more information." -msgstr "»--help« gibt weitere Informationen." - -# Hier de-Standard-Formulierung einsetzen! -#: info/info.c:231 makeinfo/makeinfo.c:1089 util/install-info.c:530 -#: util/texindex.c:338 -#, c-format -msgid "" -"Copyright (C) %s Free Software Foundation, Inc.\n" -"There is NO warranty. You may redistribute this software\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the files named COPYING.\n" -msgstr "" -"Copyright © %s Free Software Foundation, Inc.\n" -"Dies ist freie Software; in den Quellen befindet sich die Lizenz- und\n" -"Kopierbedingung. Es gibt KEINERLEI Garantie, nicht einmal für die\n" -"TAUGLICHKEIT oder die VERWENDBARKEIT ZU EINEM ANGEGEBENEN ZWECK.\n" - -#: info/info.c:363 -msgid "no entries found\n" -msgstr "Keine Einträge gefunden\n" - -#: info/info.c:406 -msgid "There is no menu in this node." -msgstr "Es gibt kein Menü in diesem Node." - -#: info/info.c:437 -#, c-format -msgid "There is no menu item \"%s\" in this node." -msgstr "Es gibt keinen Menüpunkt »%s« in diesem Node." - -#: info/info.c:501 -#, c-format -msgid "Unable to find the node referenced by \"%s\"." -msgstr "Kann keinen von »%s« referenzierten Node finden." - -#: info/info.c:602 -#, c-format -msgid "" -"Usage: %s [OPTION]... [INFO-FILE [MENU-ITEM...]]\n" -"\n" -"Read documentation in Info format.\n" -"For more complete documentation on how to use Info, run `info info " -"options'.\n" -"\n" -"Options:\n" -"--directory DIR add DIR to INFOPATH.\n" -"--dribble FILENAME remember user keystrokes in FILENAME.\n" -"--file FILENAME specify Info file to visit.\n" -"--node NODENAME specify nodes in first visited Info file.\n" -"--output FILENAME output selected nodes to FILENAME.\n" -"--restore FILENAME read initial keystrokes from FILENAME.\n" -"--subnodes recursively output menu items.\n" -"--help display this help and exit.\n" -"--version display version information and exit.\n" -"\n" -"The first argument, if present, is the name of the Info file to read.\n" -"Any remaining arguments are treated as the names of menu\n" -"items in the initial node visited. For example, `info emacs buffers'\n" -"moves to the node `buffers' in the info file `emacs'.\n" -"\n" -"Email bug reports to bug-texinfo@gnu.org." -msgstr "" -"Syntax: %s [OPTION]... [INFO-DATEI [MENU-EINTRAG...]]\n" -"\n" -"Um Dokumentation zu lesen, die im Info-Format vorliegt.\n" -"Für eine ausführlichere Anleitung, wie Info zu benutzen ist, »info info\n" -"options« eingeben.\n" -"\n" -"Optionen:\n" -" --directory VERZ VERZ zu INFOPATH hinzufügen\n" -" --dribble DATEI Tasteneingaben des Benutzers in DATEI merken\n" -" --file DATEI zu besuchende Info-DATEI angeben\n" -" --node KNOTEN Knoten in der ersten zu besuchenden Info-Datei " -"angeben\n" -" --output DATEI ausgewählte Knoten nach DATEI ausgeben\n" -" --restore DATEI die beginnenden Tasteneingaben von DATEI lesen\n" -" --subnodes Menüpunkte rekursiv ausgeben\n" -" --help diese Hilfe anzeigen\n" -" --version Programmversion anzeigen\n" -"\n" -"Verbleibende Parameter werden als Namen von Menüpunkten des zuerst " -"besuchten\n" -"Knotens angesehen. Man kann sich einfach zum gewünschten Knoten bewegen,\n" -"indem man die Namen der Menüpunkte angibt, die den Weg dorthin bezeichnen;\n" -"z. B. »info emacs buffers«.\n" -"\n" -"Fehler (\"bugs\") bitte an <bug-texinfo@gnu.org> melden.<\n" -"\n" -"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig." - -#: info/infodoc.c:50 -msgid "Basic Commands in Info Windows" -msgstr "Grundbefehle in Info-Fenstern" - -#: info/infodoc.c:211 -msgid "" -"The following commands can only be invoked via M-x:\n" -"\n" -msgstr "Die folgenden Befehle können nur via M-x aufgerufen werden:\n" - -#: info/infodoc.c:228 -msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n" -msgstr "" -"--- »\\[history-node]« oder »\\[kill-node]« benutzen, um zu beenden ---\n" - -#. Create or move to the help window. -#: info/infodoc.c:328 -msgid "Display help message" -msgstr "Diesen Hilfe-Text anzeigen" - -#. Show the Info help node. This means that the "info" file is installed -#. where it can easily be found on your system. -#: info/infodoc.c:346 -msgid "Visit Info node `(info)Help'" -msgstr "Info-Node »(info)Help« besuchen" - -#: info/infodoc.c:470 -msgid "Print documentation for KEY" -msgstr "Dokumentation für KEY ausgeben" - -#: info/infodoc.c:483 -#, c-format -msgid "Describe key: %s" -msgstr "Beschreibe Taste: %s" - -#: info/infodoc.c:492 -#, c-format -msgid "ESC %s is undefined." -msgstr "ESC %s ist nicht definiert." - -#: info/infodoc.c:509 -#, c-format -msgid "%s is undefined." -msgstr "%s ist nicht definiert." - -#: info/infodoc.c:535 -#, c-format -msgid "%s is defined to %s." -msgstr "%s ist definiert als %s." - -#: info/infodoc.c:731 -msgid "Where is command: " -msgstr "Wo ist der Befehl: " - -#: info/infodoc.c:753 -#, c-format -msgid "`%s' is not on any keys" -msgstr "»%s« liegt auf keiner Taste" - -#: info/infodoc.c:759 -#, c-format -msgid "%s can only be invoked via %s." -msgstr "%s kann nur via %s aufgerufen werden." - -#: info/infodoc.c:762 -#, c-format -msgid "%s can be invoked via %s." -msgstr "%s kann via %s aufgerufen werden." - -#: info/infodoc.c:766 -#, c-format -msgid "There is no function named `%s'" -msgstr "Es gibt keine Funktion mit Namen »%s«" - -#: info/m-x.c:69 -msgid "Read the name of an Info command and describe it" -msgstr "Lese den Namen eines Info-Befehls und beschreibe ihn" - -#: info/m-x.c:73 -msgid "Describe command: " -msgstr "Beschreibe den Befehl: " - -#: info/m-x.c:96 -msgid "Read a command name in the echo area and execute it" -msgstr "Lies einen Befehlsnamen in der »Echo-Area« und führe ihn aus" - -#: info/m-x.c:134 -msgid "Cannot execute an `echo-area' command here." -msgstr "Kann hier keinen »echo-area«-Befehl ausführen." - -#: info/m-x.c:150 -msgid "Set the height of the displayed window" -msgstr "Setze die Höhe des angezeigten Fensters" - -# checkit -#: info/m-x.c:163 -#, c-format -msgid "Set screen height to (%d): " -msgstr "Bildschirm-Höhe auf (%d) setzen: " - -# checkit -#: info/makedoc.c:126 -msgid "" -" Source files groveled to make this file include:\n" -"\n" -msgstr "" -" Quelldatei \"groveled\", damit diese Datei enthält:\n" -"\n" - -#: info/makedoc.c:450 -#, c-format -msgid "Couldn't manipulate the file %s.\n" -msgstr "Datei »%s« ist nicht zu verändern.\n" - -#: info/nodemenu.c:28 -msgid "" -"\n" -"* Menu:\n" -" (File)Node Lines Size Containing File\n" -" ---------- ----- ---- ---------------" -msgstr "" -"\n" -"* Menü:\n" -" (Datei)Knoten Zeilen Größe Beinhaltet Datei\n" -" ------------- ------ ----- ----------------" - -#: info/nodemenu.c:197 -msgid "" -"Here is the menu of nodes you have recently visited.\n" -"Select one from this menu, or use `\\[history-node]' in another window.\n" -msgstr "" -"Hier ist das Menü der Knoten, die zuetzt besucht wurden.\n" -"Einen von diesem Menü auswählen oder »\\[history-node]« im anderen Fenster\n" -"benutzen.\n" - -#: info/nodemenu.c:217 -msgid "Make a window containing a menu of all of the currently visited nodes" -msgstr "" -"Veranlassen, dass ein Fenster ein Menü aller aktuell besuchten Knoten enthält" - -#: info/nodemenu.c:297 -msgid "Select a node which has been previously visited in a visible window" -msgstr "" -"Einen Knoten auswählen, der zuvor in einem sichtbaren Fenster besucht wurde" - -#: info/nodemenu.c:309 -msgid "Select visited node: " -msgstr "Besuchten Knoten auswählen: " - -#: info/nodemenu.c:329 info/session.c:1996 -#, c-format -msgid "The reference disappeared! (%s)." -msgstr "Der Verweispunkt ist verschwunden! (%s)." - -#: info/session.c:162 -#, c-format -msgid "" -"Welcome to Info version %s. \"\\[get-help-window]\" for help, " -"\"\\[menu-item]\" for menu item." -msgstr "" -"Willkommen bei Info Version %s. \"\\[get-help-window]\" um Hilfe zu " -"bekommen,\n" -"mit \"\\[menu-item]\" Menüpunkt anzeigen." - -#. Move WINDOW's point down to the next line if possible. -#: info/session.c:629 -msgid "Move down to the next line" -msgstr "Eine Zeile nach unten bewegen" - -#. Move WINDOW's point up to the previous line if possible. -#: info/session.c:644 -msgid "Move up to the previous line" -msgstr "Eine Zeile nach oben bewegen" - -#. Move WINDOW's point to the end of the true line. -#: info/session.c:659 -msgid "Move to the end of the line" -msgstr "Zum Ende dieser Zeile bewegen" - -#. Move WINDOW's point to the beginning of the true line. -#: info/session.c:679 -msgid "Move to the start of the line" -msgstr "Zum Anfang der Zeile bewegen" - -#: info/session.c:855 -msgid " times" -msgstr "mal" - -#: info/session.c:857 -#, c-format -msgid "%d times" -msgstr "%d mal" - -#: info/session.c:895 -msgid "No \"Next\" pointer for this node." -msgstr "Kein »Next«-Verweis bei diesem Knoten." - -#: info/session.c:898 -msgid "Following \"Next\" node..." -msgstr "»Next«-Knoten folgend..." - -# checkit -# üs? -ke- -#: info/session.c:899 info/session.c:927 info/session.c:999 -#: info/session.c:1717 -msgid "Next" -msgstr "" - -#: info/session.c:915 -msgid "Selecting first menu item..." -msgstr "Ersten Menüpunkt auswählen..." - -# checkit -#: info/session.c:926 -msgid "Selecting \"Next\" node..." -msgstr "Den Knoten \"Next\" auswählen..." - -# checkit -# üs? -ke- -#: info/session.c:950 info/session.c:1063 info/session.c:1733 -msgid "Up" -msgstr "" - -#: info/session.c:1020 -msgid "No more nodes." -msgstr "Keine \"Nodes\" mehr" - -#: info/session.c:1044 -msgid "No \"Prev\" for this node." -msgstr "Kein »Prev« bei diesem Knoten." - -# checkit -#. Move to the previous node. If this node now contains a menu, -#. and we have not inhibited movement to it, move to the node -#. corresponding to the last menu item. -#: info/session.c:1047 info/session.c:1100 -msgid "Moving \"Prev\" in this window." -msgstr "Nach »Prev« in diesem Fenster bewegen." - -# checkit -# üs? -ke- -#: info/session.c:1048 info/session.c:1101 info/session.c:1725 -msgid "Prev" -msgstr "" - -#: info/session.c:1059 -msgid "No \"Prev\" or \"Up\" for this node." -msgstr "Kein »Prev« oder »Up« bei diesem Knoten." - -#: info/session.c:1062 -msgid "Moving \"Up\" in this window." -msgstr "Nach »Up« in diesem Fenster bewegen." - -#: info/session.c:1110 -msgid "Moving to \"Prev\"'s last menu item." -msgstr "Nach dem letzten Menüpunkt von »Prev« bewegen." - -#: info/session.c:1121 -msgid "Move forwards or down through node structure" -msgstr "Vorwärts oder abwärts durch die Knotenstruktur bewegen" - -#: info/session.c:1137 -msgid "Move backwards or up through node structure" -msgstr "Zurück oder aufwärts durch die Knotenstruktur bewegen" - -#. Show the next screen of WINDOW's node. -#: info/session.c:1152 -msgid "Scroll forward in this window" -msgstr "In diesem Fenster vorwärts »scrollen«" - -#. Show the previous screen of WINDOW's node. -#: info/session.c:1197 -msgid "Scroll backward in this window" -msgstr "In diesem Fenster rückwärts »scrollen«" - -#. Move to the beginning of the node. -#: info/session.c:1237 -msgid "Move to the start of this node" -msgstr "Zum Anfang dieses Knotens bewegen" - -#. Move to the end of the node. -#: info/session.c:1244 -msgid "Move to the end of this node" -msgstr "Zum Ende dieses Knotens bewegen" - -#. **************************************************************** -#. -#. Commands for Manipulating Windows -#. -#. **************************************************************** -#. Make the next window in the chain be the active window. -#: info/session.c:1257 -msgid "Select the next window" -msgstr "Das nächste Fenster auswählen" - -#. Make the previous window in the chain be the active window. -#: info/session.c:1296 -msgid "Select the previous window" -msgstr "Das vorige Fenster auswählen" - -#. Split WINDOW into two windows, both showing the same node. If we -#. are automatically tiling windows, re-tile after the split. -#: info/session.c:1347 -msgid "Split the current window" -msgstr "Aktuelles Fenster unterteilen" - -#. Delete WINDOW, forgetting the list of last visited nodes. If we are -#. automatically displaying footnotes, show or remove the footnotes -#. window. If we are automatically tiling windows, re-tile after the -#. deletion. -#: info/session.c:1428 -msgid "Delete the current window" -msgstr "Aktuelles Fenster löschen" - -#: info/session.c:1436 -msgid "Cannot delete a permanent window" -msgstr "Ein permanentes Fenster kann nicht gelöscht werden" - -#. Just keep WINDOW, deleting all others. -#: info/session.c:1469 -msgid "Delete all other windows" -msgstr "Alle anderen Fenster löschen" - -#. Scroll the "other" window of WINDOW. -#: info/session.c:1515 -msgid "Scroll the other window" -msgstr "Das andere Fenster »scrollen«" - -#. Change the size of WINDOW by AMOUNT. -#: info/session.c:1535 -msgid "Grow (or shrink) this window" -msgstr "Aktuelles Fenster vergrößern (oder verkleinern)" - -#: info/session.c:1546 -msgid "Divide the available screen space among the visible windows" -msgstr "" -"Den vorhandenen Bildschirmplatz unter allen sichtbaren Fenstern aufteilen" - -#: info/session.c:1553 -msgid "Toggle the state of line wrapping in the current window" -msgstr "Den Status des Zeilenumbruchs im aktuellen Fenster umschalten" - -#. Make WINDOW display the "Next:" node of the node currently being -#. displayed. -#: info/session.c:1714 -msgid "Select the `Next' node" -msgstr "Den »Next«-Knoten auswählen" - -#. Make WINDOW display the "Prev:" node of the node currently being -#. displayed. -#: info/session.c:1722 -msgid "Select the `Prev' node" -msgstr "Den »Prev«-Knoten auswählen" - -#. Make WINDOW display the "Up:" node of the node currently being -#. displayed. -#: info/session.c:1730 -msgid "Select the `Up' node" -msgstr "Den »Up«-Knoten auswählen" - -#. Make WINDOW display the last node of this info file. -#: info/session.c:1737 -msgid "Select the last node in this file" -msgstr "Den letzten Knoten dieser Datei auswählen" - -# checkit -#: info/session.c:1750 info/session.c:1768 -msgid "This window has no additional nodes" -msgstr "Dies Fenster hat keine weiteren Knoten" - -#. Make WINDOW display the first node of this info file. -#: info/session.c:1759 -msgid "Select the first node in this file" -msgstr "Den ersten Knoten dieser Datei auswählen" - -#: info/session.c:1778 -msgid "Select the last item in this node's menu" -msgstr "Den letzten Punkt des Menüs dieses Knotens auswählen" - -#. Use KEY (a digit) to select the Nth menu item in WINDOW->node. -#: info/session.c:1784 -msgid "Select this menu item" -msgstr "Diesen Menüpunkt auswählen" - -#: info/session.c:1813 -#, c-format -msgid "There aren't %d items in this menu." -msgstr "Es sind keine %d Punkte in diesem Menü." - -#: info/session.c:1944 -#, c-format -msgid "Menu item (%s): " -msgstr "Menüpunkt (%s): " - -#: info/session.c:1946 -msgid "Menu item: " -msgstr "Menüpunkt: " - -#: info/session.c:1951 -#, c-format -msgid "Follow xref (%s): " -msgstr "Folge xref (%s): " - -#: info/session.c:1953 -msgid "Follow xref: " -msgstr "Folge xref: " - -#. Read a line (with completion) which is the name of a menu item, -#. and select that item. -#: info/session.c:2042 -msgid "Read a menu item and select its node" -msgstr "Einen Menüpunkt lesen und seinen Knoten auswählen" - -#: info/session.c:2050 -msgid "Read a footnote or cross reference and select its node" -msgstr "Fußnote oder Querverweis lesen und den Konote auswählen" - -#. Position the cursor at the start of this node's menu. -#: info/session.c:2056 -msgid "Move to the start of this node's menu" -msgstr "Zum Anfang des Menüs dieses Knotens bewegen" - -#: info/session.c:2080 -msgid "Visit as many menu items at once as possible" -msgstr "So viele Menüpunkte wie möglich auf einmal besuchen" - -#. Read a line of input which is a node name, and go to that node. -#: info/session.c:2108 -msgid "Read a node name and select it" -msgstr "Den Namen eines Knotens lesen und diesen auswählen" - -#: info/session.c:2169 info/session.c:2173 -msgid "Goto Node: " -msgstr "Gehe nach Knoten: " - -#: info/session.c:2194 -msgid "Read a manpage reference and select it" -msgstr "Einen Verweis auf eine Manpage lesen und diese auswählen" - -#: info/session.c:2198 -msgid "Get Manpage: " -msgstr "Hole Manpage: " - -#. Move to the "Top" node in this file. -#: info/session.c:2228 -msgid "Select the node `Top' in this file" -msgstr "Den Knoten »Top« dieser Datei auswählen" - -#. Notice that the node "Top" is special, and doesn't have to -#. be referenced. -#: info/session.c:2230 makeinfo/makeinfo.c:5145 makeinfo/makeinfo.c:5228 -msgid "Top" -msgstr "Top" - -#. Move to the node "(dir)Top". -#: info/session.c:2234 -msgid "Select the node `(dir)'" -msgstr "Den Knoten »(dir)« auswählen" - -#: info/session.c:2254 -#, c-format -msgid "Kill node (%s): " -msgstr "Kille Knoten (%s): " - -#: info/session.c:2307 -#, c-format -msgid "Cannot kill node `%s'" -msgstr "Kann Knoten »%s« nicht killen" - -#: info/session.c:2317 -msgid "Cannot kill the last node" -msgstr "Der letzte Knoten kann nicht gekillt werden" - -#: info/session.c:2401 -msgid "Select the most recently selected node" -msgstr "Den zuletzt gewählten Knoten auswählen" - -#. Kill named node. -#: info/session.c:2407 -msgid "Kill this node" -msgstr "Diesen Knoten killen" - -#. Read the name of a file and select the entire file. -#: info/session.c:2415 -msgid "Read the name of a file and select it" -msgstr "Den Namen einer Datei lesen und diese auswählen" - -#: info/session.c:2419 -msgid "Find file: " -msgstr "Datei finden: " - -#: info/session.c:2436 -#, c-format -msgid "Cannot find \"%s\"." -msgstr "Kann »%s« nicht finden." - -#: info/session.c:2483 info/session.c:2608 -#, c-format -msgid "Could not create output file \"%s\"." -msgstr "Ausgabe-Datei »%s« kann nicht angelegt werden." - -#: info/session.c:2496 info/session.c:2625 info/session.c:2671 -msgid "Done." -msgstr "Fertig." - -#: info/session.c:2553 -#, c-format -msgid "Writing node \"(%s)%s\"..." -msgstr "Schreibe Knoten (%s)%s" - -#: info/session.c:2556 -#, c-format -msgid "Writing node \"%s\"..." -msgstr "Knoten »%s« schreiben..." - -#: info/session.c:2634 -msgid "Pipe the contents of this node through INFO_PRINT_COMMAND" -msgstr "Den Inhalt dieses Knotens durch INFO_PRINT_COMMAND pipen" - -#: info/session.c:2654 -#, c-format -msgid "Cannot open pipe to \"%s\"." -msgstr "Kann nicht nach »%s« pipen." - -#: info/session.c:2661 -#, c-format -msgid "Printing node \"(%s)%s\"..." -msgstr "Drucke Knoten »(%s)%s«..." - -#: info/session.c:2664 -#, c-format -msgid "Printing node \"%s\"..." -msgstr "Drucke Knoten »%s«..." - -#: info/session.c:2896 -#, c-format -msgid "Searching subfile \"%s\"..." -msgstr "Unterdatei »%s« wird durchsucht..." - -#: info/session.c:2946 -msgid "Read a string and search for it" -msgstr "Eine Zeichenkette einlesen und danach suchen" - -# checkit -#: info/session.c:2966 -#, c-format -msgid "%s for string [%s]: " -msgstr "%s nach Zeichenkette [%s]: " - -#: info/session.c:2967 -msgid "Search backward" -msgstr "Suche rückwärts" - -#: info/session.c:2967 -msgid "Search" -msgstr "Suche" - -#: info/session.c:2994 -msgid "Search failed." -msgstr "Suche fehlgeschlagen." - -#: info/session.c:3020 info/session.c:3026 -msgid "Search interactively for a string as you type it" -msgstr "Interaktiv nach einer Zeichenkette während der Eingabe suchen" - -#: info/session.c:3120 -msgid "I-search backward: " -msgstr "Interactive Suche rückwarts: " - -#: info/session.c:3122 -msgid "I-search: " -msgstr "Interactive Suche" - -# checkit -#: info/session.c:3147 -msgid "Failing " -msgstr "Fehlgeschlagen " - -#: info/session.c:3512 -msgid "No cross references in this node." -msgstr "Keine Querverweise in diesem Knoten." - -#: info/session.c:3579 -msgid "Move to the previous cross reference" -msgstr "Zum vorigen Querverweis bewegen" - -#: info/session.c:3588 -msgid "Move to the next cross reference" -msgstr "Zum nächsten Querverweis bewegen" - -#: info/session.c:3598 -msgid "Select reference or menu item appearing on this line" -msgstr "Verweis oder Menüpunkt auswählen, der auf dieser Zeile erscheint" - -# checkit -#. **************************************************************** -#. -#. Miscellaneous Info Commands -#. -#. **************************************************************** -#. What to do when C-g is pressed in a window. -#: info/session.c:3620 -msgid "Cancel current operation" -msgstr "Momentane Operation abbrechen" - -#: info/session.c:3627 -msgid "Quit" -msgstr "Ende" - -#: info/session.c:3636 -msgid "Move to the cursor to a specific line of the window" -msgstr "Den Cursor nach einer bestimmten Zeile des Fensters bewegen" - -#. Clear the screen and redraw its contents. Given a numeric argument, -#. move the line the cursor is on to the COUNT'th line of the window. -#: info/session.c:3668 -msgid "Redraw the display" -msgstr "Anzeige erneut darstellen" - -#. This command does nothing. It is the fact that a key is bound to it -#. that has meaning. See the code at the top of info_session (). -#: info/session.c:3705 -msgid "Quit using Info" -msgstr "Info beenden" - -#: info/session.c:3728 -#, c-format -msgid "Unknown command (%s)." -msgstr "Unbekannter Befehl (%s)." - -#: info/session.c:3733 -msgid "\"\" is invalid" -msgstr "\"\" ist ungültig" - -#: info/session.c:3735 -#, c-format -msgid "\"%s\" is invalid" -msgstr "\"%s\" ist ungültig" - -#: info/session.c:3958 -msgid "Add this digit to the current numeric argument" -msgstr "Diese Zahl dem aktuellen numerischen Argument hinzufügen" - -#: info/session.c:3967 -msgid "Start (or multiply by 4) the current numeric argument" -msgstr "Beginne (oder multipliziere mit 4) das aktuelle nummerische Argument" - -#: info/session.c:3982 -msgid "Internally used by \\[universal-argument]" -msgstr "Intern gebraucht von \\[universal-argument]" - -#: info/tilde.c:362 -msgid "readline: Out of virtual memory!\n" -msgstr "readline: Kein Speicher mehr!\n" - -#: info/variables.c:40 -msgid "When \"On\", footnotes appear and disappear automatically" -msgstr "Wenn »On«, dann erscheinen und verschwinden Fußnoten automatisch" - -#: info/variables.c:44 -msgid "When \"On\", creating or deleting a window resizes other windows" -msgstr "" -"Wenn »On«, dann werden beim Anlegen oder Löschen eines Fensters die anderen " -"Fenster angepasst" - -#: info/variables.c:48 -msgid "When \"On\", flash the screen instead of ringing the bell" -msgstr "Wenn »On«, dann den Bildschirm blinken lassen, kein akustisches Signal" - -#: info/variables.c:52 -msgid "When \"On\", errors cause the bell to ring" -msgstr "Wenn »On«, dann lassen Fehler ein akustisches Signal ertönen" - -# checkit -#: info/variables.c:56 -msgid "When \"On\", Info garbage collects files which had to be uncompressed" -msgstr "" -"Wenn »On«, Info \"garbage collectet\" Dateien, die ausgepackt werden müssen" - -#: info/variables.c:59 -msgid "When \"On\", the portion of the matched search string is highlighted" -msgstr "" -"Wenn »On«, die übereinstimmende gefundene Zeichenkette wird gekennzeichnet" - -#: info/variables.c:63 -msgid "Controls what happens when scrolling is requested at the end of a node" -msgstr "" -"Kontrolliert, was passiert, wenn »scrollen« am Ende eines Knotens veranlasst " -"wird" - -#: info/variables.c:67 -msgid "The number lines to scroll when the cursor moves out of the window" -msgstr "" -"Anzahl der Zeilen zu »scrollen«, wenn der Cursor aus dem Fenster bewegt wird" - -#: info/variables.c:71 -msgid "When \"On\", Info accepts and displays ISO Latin characters" -msgstr "Wenn »On«, dann akzeptiert Info ISO-Latin-Zeichen und zeigt diese an" - -#: info/variables.c:77 -msgid "Explain the use of a variable" -msgstr "Den Zweck einer Variablen erklären" - -#. Get the variable's name. -#: info/variables.c:83 -msgid "Describe variable: " -msgstr "Beschreibe Variable: " - -#: info/variables.c:102 -msgid "Set the value of an Info variable" -msgstr "Den Wert einer Info-Variablen setzen" - -#. Get the variable's name and value. -#: info/variables.c:108 -msgid "Set variable: " -msgstr "Setze Variable: " - -#: info/variables.c:126 -#, c-format -msgid "Set %s to value (%d): " -msgstr "Setze %s auf den Wert (%d): " - -#: info/variables.c:167 -#, c-format -msgid "Set %s to value (%s): " -msgstr "Setze %s auf den Wert (%s): " - -#: info/window.c:1102 -msgid "--*** Tags out of Date ***" -msgstr "--*** Tags veraltet ***" - -#. strlen (location_indicator). -#. 10 for the decimal representation of the number of lines in this -#. node, and the remainder of the text that can appear in the line. -#: info/window.c:1113 -msgid "-----Info: (), lines ----, " -msgstr "-----Info: (), Zeilen ----, " - -#: info/window.c:1120 -#, c-format -msgid "-%s---Info: %s, %d lines --%s--" -msgstr "-%s---Info: %s, %d Zeilen --%s--" - -#: info/window.c:1124 -#, c-format -msgid "-%s%s-Info: (%s)%s, %d lines --%s--" -msgstr "-%s%s-Info: (%s)%s, %d Zeilen --%s--" - -#: info/window.c:1131 -#, c-format -msgid " Subfile: %s" -msgstr " Unterdatei: %s" - -#: lib/getopt.c:672 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "" - -#: lib/getopt.c:696 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "" - -#: lib/getopt.c:701 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "" - -#: lib/getopt.c:718 lib/getopt.c:891 -#, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "" - -#. --option -#: lib/getopt.c:747 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "" - -#. +option or -option -#: lib/getopt.c:751 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "" - -#. 1003.2 specifies the format of this message. -#: lib/getopt.c:777 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "" - -#: lib/getopt.c:780 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "" - -#. 1003.2 specifies the format of this message. -#: lib/getopt.c:810 lib/getopt.c:940 -#, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "" - -#: lib/getopt.c:857 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "" - -#: lib/getopt.c:875 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "" - -#: makeinfo/makeinfo.c:893 -#, c-format -msgid "%s:%d: warning: " -msgstr "%s:%d: Warnung: " - -#: makeinfo/makeinfo.c:916 -msgid "Too many errors! Gave up.\n" -msgstr "Zu viele Fehler! Abbruch.\n" - -#: makeinfo/makeinfo.c:975 makeinfo/makeinfo.c:1000 makeinfo/makeinfo.c:1068 -#, c-format -msgid "%s: %s arg must be numeric, not `%s'.\n" -msgstr "%s: %s Argument muss numerisch sein, nicht »%s«.\n" - -# checkit -#: makeinfo/makeinfo.c:989 -#, c-format -msgid "Couldn't open macro expansion output `%s'" -msgstr "Die Macro-Auflösung für »%s« kann nicht geöffnet werden" - -#: makeinfo/makeinfo.c:992 -msgid "Cannot specify more than one macro expansion output" -msgstr "Mehr als eine Ausgabedatei darf nicht angegeben werden" - -#: makeinfo/makeinfo.c:1036 -#, c-format -msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n" -msgstr "" -"%s: Arg für --paragraph-indent muss numerisch/»none«/»asis« sein, nicht " -"»%s«.\n" - -#: makeinfo/makeinfo.c:1079 -#, c-format -msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n" -msgstr "" -"%s: Argument für --footnote-style muss »separate« oder »end« sein, nicht " -"»%s«.\n" - -#: makeinfo/makeinfo.c:1110 -#, c-format -msgid "%s: missing file argument.\n" -msgstr "%s: Datei-Angabe fehlt.\n" - -#: makeinfo/makeinfo.c:1163 -#, c-format -msgid "Try `%s --help' for more information.\n" -msgstr "»%s --help« gibt weitere Informationen.\n" - -# Die "." am Zeilenende habe ich entfernt. -ke- -#: makeinfo/makeinfo.c:1165 -#, c-format -msgid "" -"Usage: %s [OPTION]... TEXINFO-FILE...\n" -"\n" -"Translate Texinfo source documentation to a format suitable for reading\n" -"with GNU Info.\n" -"\n" -"Options:\n" -"-D VAR define a variable, as with @set.\n" -"-E MACRO-OFILE process macros only, output texinfo source.\n" -"-I DIR append DIR to the @include directory search path.\n" -"-P DIR prepend DIR to the @include directory search path.\n" -"-U VAR undefine a variable, as with @clear.\n" -"--error-limit NUM quit after NUM errors (default %d).\n" -"--fill-column NUM break lines at NUM characters (default %d).\n" -"--footnote-style STYLE output footnotes according to STYLE:\n" -" `separate' to place footnotes in their own node,\n" -" `end' to place the footnotes at the end of\n" -" the node in which they are defined (the default).\n" -"--force preserve output even if errors.\n" -"--help display this help and exit.\n" -"--no-validate suppress node cross-reference validation.\n" -"--no-warn suppress warnings (but not errors).\n" -"--no-split suppress splitting of large files.\n" -"--no-headers suppress node separators and Node: Foo headers.\n" -"--output FILE, -o FILE output to FILE, and ignore any @setfilename.\n" -"--paragraph-indent VAL indent paragraphs with VAL spaces (default %d).\n" -" if VAL is `none', do not indent; if VAL is `asis',\n" -" preserve any existing indentation.\n" -"--reference-limit NUM complain about at most NUM references (default %d).\n" -"--verbose report about what is being done.\n" -"--version display version information and exit.\n" -"\n" -"Email bug reports to bug-texinfo@gnu.org.\n" -msgstr "" -"Aufruf: %s [OPTION]... TEXINFO-DATEI...\n" -"\n" -"Texinfo-Quelltext in ein Format übersetzen, das mit GNU Info gelesen werden\n" -"kann.\n" -"\n" -"Optionen:\n" -"-D VAR eine Variable definieren, wie mit @set\n" -"-E MACRO-AUSGABEDATEI nur die Macros auflösen, Texinfo-Quelltext ausgeben\n" -"-I VERZ VERZ in die Verzeichnis-Suchliste für @include " -"aufnehmen\n" -"-P DIR VERZ dem @include Verzeichnis-Suchpfad voranstellen\n" -"-U VAR eine Variable aufheben, wie mit @clear\n" -"--error-limit ZAHL nach ZAHL Fehlern beenden (Standard %d)\n" -"--fill-column ZAHL Zeilen nach ZAHL Zeichen umbrechen (Standard %d)\n" -"--footnote-style STYLE Fußnoten gemäß STYLE ausgeben:\n" -" »separate«: Fußnoten in einen eigenen Knoten " -"plazieren;\n" -" »end«: Fußnoten an das Ende des Knoten setzen, " -"in\n" -" dem sie definiert sind (Standard)\n" -"--force Ausgabe auch bei Fehlern aufbewahren\n" -"--help diese Hilfe zeigen\n" -"--no-validate Überprüfen der \"node\"-Querverweise unterdrücken\n" -"--no-warn Warnungen unterdrücken (aber keine Fehler)\n" -"--no-split Aufteilen langer Dateien unterdrücken\n" -"--no-headers Knoten-Unterteiler und \"Node: Foo\" Kopfzeilen\n" -" unterdrücken\n" -"--output DATEI, -o DATEI\n" -" Ausgabe nach DATEI und @setfilename ignorieren\n" -"--paragraph-indent ZAHL/»none«/»asis«\n" -" Absätze mit ZAHL Leerräumen einziehen (Standard %d);\n" -" »none«: keine Leerräume\n" -" »asis«: keine Veränderung hinsichtlich der Leerräume\n" -"--reference-limit ZAHL bei wenigstens ZAHL Verweise melden (Standard %d)\n" -"--verbose ausführlich die Bearbeitungschritte anzeigen\n" -"--version Programmversion anzeigen\n" -"\n" -"Fehlerberichte (\"bugs\") bitte an <bug-texinfo@gnu.org> schicken.\n" -"\n" -"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig.\n" - -#: makeinfo/makeinfo.c:1552 -#, c-format -msgid "%s: getwd: %s, %s\n" -msgstr "" - -#: makeinfo/makeinfo.c:1748 -#, c-format -msgid "Expected `%s'" -msgstr "Erwartet »%s«" - -#: makeinfo/makeinfo.c:2082 -#, c-format -msgid "No `%s' found in `%s'" -msgstr "Kein »%s« in »%s« gefunden" - -#: makeinfo/makeinfo.c:2132 -#, c-format -msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n" -msgstr "" -"%s: Macro-Auflösung nach der Standard-Ausgabe, da auch die Info-Ausgabe nach " -"dort geht.\n" - -#: makeinfo/makeinfo.c:2151 -#, c-format -msgid "Making %s file `%s' from `%s'.\n" -msgstr "Erzeuge %s Datei »%s« von »%s«.\n" - -#: makeinfo/makeinfo.c:2181 -#, c-format -msgid "This is Info file %s, produced by Makeinfo version %d.%d" -msgstr "Dies ist die Info-Datei %s, hergestellt von Makeinfo Version %d.%d" - -#: makeinfo/makeinfo.c:2183 -#, c-format -msgid " from the input file %s.\n" -msgstr " aus der Eingabe-Datei %s.\n" - -#: makeinfo/makeinfo.c:2202 -#, c-format -msgid "" -"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n" -msgstr "" -"%s: Entferne Macro-Ausgabe-Datei »%s« wegen der Fehler; --force benutzen, um " -"diese beizubehalten.\n" - -#. If there were errors, and no --force, remove the output. -#: makeinfo/makeinfo.c:2234 -#, c-format -msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n" -msgstr "" -"%s: Entferne Ausgabe-Datei »%s« wegen der Fehler; --force benutzen, um diese " -"beizubehalten.\n" - -#. Special case. I'm not supposed to see this character by itself. -#. If I do, it means there is a syntax error in the input text. -#. Report the error here, but remember this brace on the stack so -#. you can ignore its partner. -#: makeinfo/makeinfo.c:2374 makeinfo/makeinfo.c:7629 -#, c-format -msgid "Misplaced %c" -msgstr "Fehlplazierte %c" - -#: makeinfo/makeinfo.c:2461 -#, c-format -msgid "Unknown command `%s'" -msgstr "Unbekannter Befehl »%s«" - -#: makeinfo/makeinfo.c:2481 -msgid "NO_NAME!" -msgstr "" - -#: makeinfo/makeinfo.c:2495 -#, c-format -msgid "%c%s expected `{...}'" -msgstr "%c%s erwartete »{...}«" - -#: makeinfo/makeinfo.c:2528 -msgid "Unmatched }" -msgstr "Nicht übereinstimmende }" - -#: makeinfo/makeinfo.c:2576 -#, c-format -msgid "%c%s missing close brace" -msgstr "%c%s fehlende schließende Klammer" - -# checkit -# üs? -ke- -#: makeinfo/makeinfo.c:3372 -msgid "Broken-Type in insertion_type_pname" -msgstr "" - -#: makeinfo/makeinfo.c:3438 -msgid "Enumeration stack overflow" -msgstr "Nummerierungsstack-Überlauf" - -#: makeinfo/makeinfo.c:3470 -#, c-format -msgid "lettering overflow, restarting at %c" -msgstr "Buchstaben-Zählungs-Überlauf, beginne wieder bei %c" - -# checkit -# übersetzen? -ke- -#: makeinfo/makeinfo.c:3509 -msgid "* Menu:\n" -msgstr "* Menü:\n" - -# checkit -#: makeinfo/makeinfo.c:3593 -#, c-format -msgid "%s requires an argument: the formatter for %citem" -msgstr "%s erfordert ein Argument: der Formatierer für %citem" - -#: makeinfo/makeinfo.c:3697 -#, c-format -msgid "`%cend' expected `%s', but saw `%s'" -msgstr "»%cend« erwartete »%s«, aber bekam »%s«" - -# checkit -#: makeinfo/makeinfo.c:3810 -#, c-format -msgid "No matching `%cend %s'" -msgstr "Nicht übereinstimmende »%cend %s«" - -#: makeinfo/makeinfo.c:3949 -#, c-format -msgid "How did @%s end up in cm_special_char?\n" -msgstr "Zu was führt @%s in cm_special_char?\n" - -#. This error message isn't perfect if the argument is multiple -#. characters, but it doesn't seem worth getting right. -#: makeinfo/makeinfo.c:3963 -#, c-format -msgid "%c%s expects `i' or `j' as argument, not `%c'" -msgstr "%c%s erwartet »i« oder »j« als Argument, nicht »%c«" - -#: makeinfo/makeinfo.c:3967 -#, c-format -msgid "%c%s expects a single character `i' or `j' as argument" -msgstr "%c%s erwartet einen einzigen Buchstaben »i« oder »j« als Argument" - -#: makeinfo/makeinfo.c:3979 -msgid "January" -msgstr "Januar" - -#: makeinfo/makeinfo.c:3979 -msgid "February" -msgstr "Februar" - -#: makeinfo/makeinfo.c:3979 -msgid "March" -msgstr "März" - -#: makeinfo/makeinfo.c:3979 -msgid "April" -msgstr "April" - -#: makeinfo/makeinfo.c:3979 -msgid "May" -msgstr "Mai" - -#: makeinfo/makeinfo.c:3980 -msgid "June" -msgstr "Juni" - -#: makeinfo/makeinfo.c:3980 -msgid "July" -msgstr "Juli" - -#: makeinfo/makeinfo.c:3980 -msgid "August" -msgstr "August" - -#: makeinfo/makeinfo.c:3980 -msgid "September" -msgstr "September" - -#: makeinfo/makeinfo.c:3980 -msgid "October" -msgstr "Oktober" - -#: makeinfo/makeinfo.c:3981 -msgid "November" -msgstr "November" - -#: makeinfo/makeinfo.c:3981 -msgid "December" -msgstr "Dezember" - -#: makeinfo/makeinfo.c:4039 -#, c-format -msgid "%c%s expects a single character as an argument" -msgstr "%c%s erwartet einen einzigen Buchstaben als Argument" - -#: makeinfo/makeinfo.c:4153 -#, c-format -msgid "%c%s is obsolete" -msgstr "%c%s ist obsolet" - -#: makeinfo/makeinfo.c:4325 -#, c-format -msgid "Node with %ctop as a section already exists" -msgstr "Konoten mit %ctop als Abschnitt existiert bereits" - -#: makeinfo/makeinfo.c:4337 -#, c-format -msgid "Here is the %ctop node" -msgstr "Hier ist der Knoten %ctop" - -#: makeinfo/makeinfo.c:4356 -#, c-format -msgid "%ctop used before %cnode, defaulting to %s" -msgstr "%ctop vor %cnode gebraucht, als Standard %s genommen" - -#: makeinfo/makeinfo.c:4431 -#, c-format -msgid "%c%s is obsolete; use %c%s instead" -msgstr "%c%s ist obsolet; stattdessen %c%s benutzen" - -#: makeinfo/makeinfo.c:4680 -#, c-format -msgid "Node `%s' multiply defined (line %d is first definition at)" -msgstr "Knoten »%s« mehrfach definiert (in Zeile %d ist erste Definition)" - -#: makeinfo/makeinfo.c:4753 -#, c-format -msgid "Formatting node %s...\n" -msgstr "Formatiere Knoten %s...\n" - -#: makeinfo/makeinfo.c:4802 -#, c-format -msgid "Node `%s' requires a sectioning command (e.g. %c%s)" -msgstr "Knoten »%s« erfordert eine Abschnitt-Angabe (z.B. %c%s)" - -#: makeinfo/makeinfo.c:5085 -#, c-format -msgid "Node `%s''s Next field not pointed back to" -msgstr "\"Next field\" des Knotens »%s« verweist nicht zurück nach" - -# checkit -#: makeinfo/makeinfo.c:5090 -#, c-format -msgid "This node (`%s') is the one with the bad `Prev'" -msgstr "Dieser Knoten (»%s«) hat schlechten(?) \"Prev\"-Eintrag" - -#: makeinfo/makeinfo.c:5130 -#, c-format -msgid "Node `%s's Prev field not pointed back to" -msgstr "Das \"Prev field\" des Knotens »%s« verweist nicht zurück nach" - -# checkit -#: makeinfo/makeinfo.c:5134 -#, c-format -msgid "This node (`%s') has the bad Next" -msgstr "Dieser Knoten (»%s«) hat schlechten(?) \"Next\"-Eintrag" - -#: makeinfo/makeinfo.c:5146 -#, c-format -msgid "Node `%s' missing Up field" -msgstr "Dem Knoten »%s« fehlt ein \"Up field\"" - -#: makeinfo/makeinfo.c:5186 -#, c-format -msgid "`%s' has an Up field of `%s', but `%s' has no menu item for `%s'" -msgstr "" -"»%s« hat ein \"Up field\" von »%s«, aber »%s« hat keinen Menü-Eintrag für " -"»%s«" - -#: makeinfo/makeinfo.c:5217 -#, c-format -msgid "node `%s' has been referenced %d times" -msgstr "auf Knoten »%s« wird %d mal verwiesen" - -#: makeinfo/makeinfo.c:5229 -#, c-format -msgid "unreferenced node `%s'" -msgstr "auf Knoten »%s« wird nicht verwiesen" - -# checkit -#: makeinfo/makeinfo.c:5256 -#, c-format -msgid "%s reference to nonexistent node `%s'" -msgstr "Verweis %s auf den nicht existierenden Knoten »%s«" - -#: makeinfo/makeinfo.c:5668 makeinfo/makeinfo.c:5680 -#, c-format -msgid "%cmenu seen before first node" -msgstr "%cmenu festgestellt, bevor der erste Knoten definiert wurde" - -#: makeinfo/makeinfo.c:5669 makeinfo/makeinfo.c:5681 -msgid "creating `Top' node" -msgstr "»Top«-Knoten wird angelegt" - -# checkit -#: makeinfo/makeinfo.c:5794 -#, c-format -msgid "`.' or `,' must follow cross reference, not %c" -msgstr "».« or »,« muss einem Querverweis folgen, nicht %c" - -#: makeinfo/makeinfo.c:5962 -#, c-format -msgid "@image file `%s' unreadable: %s" -msgstr "@image-Datei »%s« nicht lesbar: %s" - -#: makeinfo/makeinfo.c:5966 -msgid "@image missing filename argument" -msgstr "@image fehlt als Argument ein Dateiname" - -#: makeinfo/makeinfo.c:6067 -#, c-format -msgid "%s requires letter or digit" -msgstr "%s erfordert einen Buchstaben oder eine Zahl" - -#: makeinfo/makeinfo.c:6152 -#, c-format -msgid "Unmatched `%c%s'" -msgstr "Nicht übereinstimmende »%c%s«" - -#: makeinfo/makeinfo.c:6159 -#, c-format -msgid "`%c%s' needs something after it" -msgstr "»%c%s« braucht etwas Nachfolgendes" - -# checkit -#: makeinfo/makeinfo.c:6165 -#, c-format -msgid "Bad argument to `%s', `%s', using `%s'" -msgstr "Falsches Argument für »%s«, »%s«, wenn »%s« benutzt wird" - -# checkit -#: makeinfo/makeinfo.c:6338 -#, c-format -msgid "{No Value For \"%s\"}" -msgstr "{Kein Wert Für »%s«}" - -#: makeinfo/makeinfo.c:6388 -#, c-format -msgid "%c%s requires a name" -msgstr "%c%s erfordert einen Namen" - -#: makeinfo/makeinfo.c:6496 -#, c-format -msgid "Reached eof before matching @end %s" -msgstr "Das Ende der Datei vor dem erforderlichen @end %s erreicht" - -#: makeinfo/makeinfo.c:6722 -#, c-format -msgid "The `%c%s' command is meaningless within a `@%s' block" -msgstr "Der »%c%s«-Befehl ist sinnlos innerhalb eines »@%s«-Blocks" - -#: makeinfo/makeinfo.c:6731 -#, c-format -msgid "%citemx is not meaningful inside of a `%s' block" -msgstr "%citemx ist nicht sinnvoll innerhalb eines »@%s«-Blocks" - -# checkit -#: makeinfo/makeinfo.c:6844 -#, c-format -msgid "%c%s found outside of an insertion block" -msgstr "%c%s außerhalb eines Einfügungsblocks gefunden" - -# checkit -#: makeinfo/makeinfo.c:6935 -#, c-format -msgid "Missing `}' in %cdef arg" -msgstr "Fehlende »}« in »%cdef«-Argument" - -#: makeinfo/makeinfo.c:7144 makeinfo/makeinfo.c:7164 -msgid "Function" -msgstr "" - -#: makeinfo/makeinfo.c:7148 -msgid "Macro" -msgstr "" - -#: makeinfo/makeinfo.c:7152 -msgid "Special Form" -msgstr "" - -#: makeinfo/makeinfo.c:7156 makeinfo/makeinfo.c:7168 -msgid "Variable" -msgstr "" - -#: makeinfo/makeinfo.c:7160 -msgid "User Option" -msgstr "Benutzer-Option" - -#: makeinfo/makeinfo.c:7172 -msgid "Instance Variable" -msgstr "" - -#: makeinfo/makeinfo.c:7176 makeinfo/makeinfo.c:7180 -msgid "Method" -msgstr "" - -# checkit -#: makeinfo/makeinfo.c:7335 -#, c-format -msgid "Must be in a `%s' insertion in order to use `%s'x" -msgstr "Muss in einer »%s«-Einfügung sein, wenn »%s«x benutzt werden soll" - -# checkit -#: makeinfo/makeinfo.c:7407 -#, c-format -msgid "%csp requires a positive numeric argument" -msgstr "»%csp« erfordert ein positives numerisches Argument" - -#: makeinfo/makeinfo.c:7650 -msgid "asis" -msgstr "genau" - -#: makeinfo/makeinfo.c:7652 -msgid "none" -msgstr "kein" - -#: makeinfo/makeinfo.c:7674 -#, c-format -msgid "Bad argument to %c%s" -msgstr "Falsches Argument für »%c%s«" - -#: makeinfo/makeinfo.c:7966 -#, c-format -msgid "Unknown index `%s'" -msgstr "Unbekannter Index »%s«" - -#: makeinfo/makeinfo.c:8031 -#, c-format -msgid "Index `%s' already exists" -msgstr "Index »%s« ist schon vorhanden" - -#: makeinfo/makeinfo.c:8062 -#, c-format -msgid "Unknown index `%s' and/or `%s' in @synindex" -msgstr "Unbekannter Index »%s« und /oder unbekannter »%s« in @synindex" - -#: makeinfo/makeinfo.c:8251 -#, c-format -msgid "Unknown index `%s' in @printindex" -msgstr "Unbekannter Index »%s« in @printindex" - -# übersetzen? -ke- -#: makeinfo/makeinfo.c:8266 -msgid "" -"* Menu:\n" -"\n" -msgstr "" -"* Menü:\n" -"\n" - -#: makeinfo/makeinfo.c:8453 -#, c-format -msgid "`%c%s' needs an argument `{...}', not just `%s'" -msgstr "»%c%s« braucht das Argument in der Form »{...}«, nicht nur »%s«" - -#: makeinfo/makeinfo.c:8468 -#, c-format -msgid "No closing brace for footnote `%s'" -msgstr "Keine schließende Klammer für Fußnote »%s«" - -# checkit -#: makeinfo/makeinfo.c:8507 -msgid "Footnote defined without parent node" -msgstr "Fußnote definiert ohne einen Eltern-\"node\"" - -#: makeinfo/makeinfo.c:8539 -msgid "-Footnotes" -msgstr "-Fußnoten" - -#: makeinfo/makeinfo.c:8594 -msgid "" -"---------- Footnotes ----------\n" -"\n" -msgstr "" -"----------- Fußnoten -----------\n" -"\n" - -#: makeinfo/makeinfo.c:8690 -#, c-format -msgid "macro `%s' previously defined" -msgstr "Macro »%s« ist bereits definiert" - -#: makeinfo/makeinfo.c:8694 -#, c-format -msgid "here is the previous definition of `%s'" -msgstr "Hier ist die vorangehende Definition von »%s«" - -#: makeinfo/makeinfo.c:8908 -#, c-format -msgid "Macro `%s' called with too many args" -msgstr "Macro »%s« mit zu vielen Argumenten aufgerufen" - -#: makeinfo/makeinfo.c:9060 -#, c-format -msgid "%cend macro not found" -msgstr "»%cend«-Macro nicht gefunden" - -# checkit -#: makeinfo/makeinfo.c:9100 -#, c-format -msgid "%cquote-arg only useful when the macro takes a single argument" -msgstr "" -"»%cquote«-Argument ist nur sinnvoll, wenn das Macro ein einziges Argument hat" - -#: makeinfo/multi.c:206 -#, c-format -msgid "ignoring stray text `%s' after @multitable" -msgstr "irriger Text »%s« nach @multitable wird ignoriert" - -#: makeinfo/multi.c:277 -#, c-format -msgid "Too many columns in multitable item (max %d)" -msgstr "zu viele Spalten im \"multitable\"-Eintrag (maximal %d)" - -# checkit -#. impossible, I think. -#: makeinfo/multi.c:304 -msgid "multitable item not in active multitable" -msgstr "\"multitable\"-Eintrag nicht in der aktiven \"multitable\"" - -#: makeinfo/multi.c:313 -#, c-format -msgid "Cannot select column #%d in multitable" -msgstr "Spalte #%d kann in der \"multitable\" nicht ausgewählt werden" - -#: makeinfo/multi.c:404 -msgid "ignoring @tab outside of multitable" -msgstr "@tab außerhalb der \"multitable\" wird übergangen" - -# checkit -#: makeinfo/multi.c:428 -msgid "** Multicolumn output from last row:\n" -msgstr "** Mehrspalten-Ausgabe von der letzten Zeile:\n" - -# checkit -#: makeinfo/multi.c:431 -#, c-format -msgid "* column #%d: output = %s\n" -msgstr "* Spalte #%d: Ausgabe = %s\n" - -# checkit -#: util/install-info.c:123 util/install-info.c:136 -msgid "virtual memory exhausted" -msgstr "virtual memory exhausted" - -#: util/install-info.c:192 -#, c-format -msgid "%s: warning: " -msgstr "%s: Warnung: " - -#: util/install-info.c:213 -#, c-format -msgid " for %s" -msgstr " für %s" - -#: util/install-info.c:282 -#, c-format -msgid "\tTry `%s --help' for a complete list of options.\n" -msgstr "»%s --help« gibt weitere Informationen.\n" - -#: util/install-info.c:290 -#, c-format -msgid "" -"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n" -"\n" -"Install INFO-FILE in the Info directory file DIR-FILE.\n" -"\n" -"Options:\n" -"--delete Delete existing entries in INFO-FILE;\n" -" don't insert any new entries.\n" -"--dir-file=NAME Specify file name of Info directory file.\n" -" This is equivalent to using the DIR-FILE argument.\n" -"--entry=TEXT Insert TEXT as an Info directory entry.\n" -" TEXT should have the form of an Info menu item line\n" -" plus zero or more extra lines starting with whitespace.\n" -" If you specify more than one entry, they are all added.\n" -" If you don't specify any entries, they are determined\n" -" from information in the Info file itself.\n" -"--help Display this help and exit.\n" -"--info-file=FILE Specify Info file to install in the directory.\n" -" This is equivalent to using the INFO-FILE argument.\n" -"--info-dir=DIR Same as --dir-file=DIR/dir.\n" -"--item=TEXT Same as --entry TEXT.\n" -" An Info directory entry is actually a menu item.\n" -"--quiet Suppress warnings.\n" -"--remove Same as --delete.\n" -"--section=SEC Put this file's entries in section SEC of the directory.\n" -" If you specify more than one section, all the entries\n" -" are added in each of the sections.\n" -" If you don't specify any sections, they are determined\n" -" from information in the Info file itself.\n" -"--version Display version information and exit.\n" -"\n" -"Email bug reports to bug-texinfo@gnu.org.\n" -msgstr "" -"Syntax: %s [OPTION]... [INFO-DATEI [VERZ-DATEI]]\n" -"\n" -"Installiere die INFO-DATEI in dem Info-Verzeichnis VERZ-DATEI.\n" -"\n" -"Optionen:\n" -"--delete entferne vorhandene Einträge aus INFO-DATEI; keine neuen\n" -" Einträge einfügen\n" -"--dir-file=NAME Namen der Info-Verzeichnis-Datei angeben. " -"Gleichbedeutend\n" -" mit dem VERZ-DATEI-Argument\n" -"--entry=TEXT TEXT als einen Info-Verzeichnis-Eintrag einfügen. TEXT " -"soll\n" -" die Form einer Zeile eines Info-Menüpunkts haben,\n" -" zuzüglich Null oder mehrerer Extra-Zeilen, die mit " -"Leerraum\n" -" (\"whitespace\") beginnen. Wenn mehr als ein Eintrag " -"angegeben\n" -" wird, werden alle hinzugefügt. Wenn gar kein Eintrag\n" -" angegeben wird, wird der Eintragstext der Info-Datei " -"selbst\n" -" entnommen.\n" -"--help diese Hilfe zeigen\n" -"--info-file=DATEI Info-Datei angeben, die im Verzeichnis zu installieren " -"ist.\n" -" Gleichbedeutend mit dem INFO-DATEI-Argument\n" -"--info-dir=VERZ wie --dir-file=VERZ/dir.\n" -"--item=TEXT wie --entry TEXT. Ein Info-Verzeichnis-Eintrag ist " -"nämlich\n" -" ein Menüpunkt\n" -"--quiet Warnungen unterdrücken\n" -"--remove wie --delete\n" -"--section=ABSCHN stelle die Einträge dieser Datei in den Abschnitt ABSCHN\n" -" des Verzeichnisses. Wenn mehr als ein --section " -"angegeben\n" -" wird, werden alle Einträge in jedem der Abschnitte\n" -" hinzugefügt. Wenn gar kein --section angegeben wird, " -"wird\n" -" der Eintragstext der Info-Datei selbst entnommen.\n" -"--version Programmversion anzeigen\n" -"\n" -"Fehlerberichte (\"bugs\") bitte an <bug-texinfo@gnu.org> schicken.\n" -"\n" -"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig.\n" - -#: util/install-info.c:341 -msgid "" -"This is the file .../info/dir, which contains the\n" -"topmost node of the Info hierarchy, called (dir)Top.\n" -"The first time you invoke Info you start off looking at this node.\n" -"\n" -"File: dir,\tNode: Top,\tThis is the top of the INFO tree\n" -"\n" -" This (the Directory node) gives a menu of major topics.\n" -" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n" -" \"h\" gives a primer for first-timers,\n" -" \"mEmacs<Return>\" visits the Emacs manual, etc.\n" -"\n" -" In Emacs, you can click mouse button 2 on a menu item or cross reference\n" -" to select it.\n" -"\n" -"* Menu:\n" -msgstr "" -"Dies ist die Datei .../info/dir, die den obersten Knoten der\n" -"Info-Hierarchie enthält, genannt (dir)Top.\n" -"Beim ersten Aufruf von Info geht es bei diesem Knoten los.\n" -"\n" -"Date: dir Knoten: Top Dies ist »top« des INFO-Baums\n" -"\n" -" Dieser Verzeichnis-Knoten zeigt ein Menü aller Hauptpunkte an.\n" -" Beenden mit \"q\", \"?\" listet alle Info-Befehle auf, \"d\" kehrt nach " -"hierher\n" -" zurück, \"h\" gibt eine Einsteiger-Hilfe,\n" -" \"mEmacs<Return>\" besucht das Emacs-Manual, etc.\n" -"\n" -" Im Emacs kann man mit mouse-button-2 auf einen Menüpunkt oder einen\n" -" Querverweis klicken, um einen solchen auswählen.\n" -"\n" -"* Menü:\n" - -#: util/install-info.c:364 -#, c-format -msgid "%s: could not read (%s) and could not create (%s)\n" -msgstr "%s: kann nicht gelesen (%s) und kann nicht angelegt werden (%s)\n" - -#: util/install-info.c:464 util/install-info.c:474 -#, c-format -msgid "%s: Specify the Info directory only once.\n" -msgstr "%s: Info-Verzeichnis nur einmal angeben.\n" - -#: util/install-info.c:502 -#, c-format -msgid "%s: Specify the Info file only once.\n" -msgstr "%s: Info-Datei nur einmal angeben.\n" - -# checkit -#: util/install-info.c:550 -#, c-format -msgid "excess command line argument `%s'" -msgstr "Kommandozeilen-Argument »%s« wird übergangen" - -#: util/install-info.c:554 -msgid "No input file specified; try --help for more information." -msgstr "Keine Eingabe-Datei angegeben; »--help« gibt weitere Informationen." - -#: util/install-info.c:556 -msgid "No dir file specified; try --help for more information." -msgstr "Keine dir-Datei angegeben; »--help« gibt weitere Informationen." - -#: util/install-info.c:608 util/install-info.c:631 -msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY" -msgstr "START-INFO-DIR-ENTRY ohne END-INFO-DIR-ENTRY" - -#: util/install-info.c:627 -msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY" -msgstr "END-INFO-DIR-ENTRY ohne START-INFO-DIR-ENTRY" - -#. No need to abort here, the original info file may not have -#. the requisite Texinfo commands. This is not something an -#. installer should have to correct (it's a problem for the -#. maintainer), and there's no need to cause subsequent parts of -#. `make install' to fail. -#: util/install-info.c:641 -#, c-format -msgid "no info dir entry in `%s'" -msgstr "Kein Info-Verzeichnis-Eintrag in »%s«" - -#: util/install-info.c:852 -#, c-format -msgid "menu item `%s' already exists, for file `%s'" -msgstr "Menüpunkt »%s« bereits vorhanden, für Datei »%s«" - -#: util/install-info.c:875 -#, c-format -msgid "no entries found for `%s'; nothing deleted" -msgstr "keine Einträge für »%s« gefunden; nichts entfernt" - -#: util/texindex.c:253 -msgid "keep temporary files around after processing" -msgstr "temporäre Dateien bis nach der Verarbeitung aufheben" - -#: util/texindex.c:255 -msgid "do not keep temporary files around after processing (default)" -msgstr "keine temporäre Dateien bis nach der Verarbeitung aufheben (Standard)" - -#: util/texindex.c:257 -msgid "send output to FILE" -msgstr "Ausgabe nach DATEI schicken" - -#: util/texindex.c:259 -msgid "display version information and exit" -msgstr "Programmversion anzeigen" - -#: util/texindex.c:261 -msgid "display this help and exit" -msgstr "diese Hilfe anzeigen" - -#: util/texindex.c:272 -#, c-format -msgid "Usage: %s [OPTION]... FILE...\n" -msgstr "Aufruf: %s [OPTION]... DATEI...\n" - -#: util/texindex.c:273 -msgid "Generate a sorted index for each TeX output FILE.\n" -msgstr "Erzeuge einen sortierten Index für jede TeX-Ausgabedatei.\n" - -#. Avoid trigraph nonsense. -#: util/texindex.c:275 -msgid "Usually FILE... is `foo.??' for a document `foo.texi'.\n" -msgstr "DATEI... ist normalerweise »foo.??« für ein Dokument »foo.texi«.\n" - -#: util/texindex.c:276 -msgid "" -"\n" -"Options:\n" -msgstr "" -"\n" -"Optionen:\n" - -#: util/texindex.c:290 -msgid "" -"\n" -"Email bug reports to bug-texinfo@gnu.org." -msgstr "" -"\n" -"Fehler (\"bugs\") bitte an <bug-texinfo@gnu.org> melden.\n" -"\n" -"Für die deutsche Übersetzung ist die Mailingliste <de@li.org> zuständig." - -#: util/texindex.c:917 util/texindex.c:951 util/texindex.c:1027 -#: util/texindex.c:1055 -#, c-format -msgid "%s: not a texinfo index file" -msgstr "%s: keine Texinfo-Indexdatei" - -#: util/texindex.c:1012 -#, c-format -msgid "failure reopening %s" -msgstr "Fehler beim Wiederöffnen von »%s«" - -# checkit -#: util/texindex.c:1325 -#, c-format -msgid "entry %s follows an entry with a secondary name" -msgstr "Eintrag »%s« folgt einem Eintrag mit einem Zweitnamen" - -#: util/texindex.c:1663 -#, c-format -msgid "%s; for file `%s'.\n" -msgstr "%s; für Datei »%s«.\n" - -# checkit -#: util/texindex.c:1724 -#, c-format -msgid "Virtual memory exhausted in %s ()! Needed %d bytes." -msgstr "Virtual memory exhausted in %s ()! Needed %d bytes." diff --git a/texinfo/po/fr.gmo b/texinfo/po/fr.gmo Binary files differdeleted file mode 100644 index bc0f11cb69b..00000000000 --- a/texinfo/po/fr.gmo +++ /dev/null diff --git a/texinfo/po/fr.po b/texinfo/po/fr.po deleted file mode 100644 index a1a2abc7a22..00000000000 --- a/texinfo/po/fr.po +++ /dev/null @@ -1,2091 +0,0 @@ -# Version française du progiciel Texinfo-3.11. -# Copyright © 1996, 1997 Free Software Foundation, Inc. -# Laurent Bourbeau <bourbeau@progiciels-bpi.ca>, 1997. -# -msgid "" -msgstr "" -"Project-Id-Version: texinfo 3.11\n" -"POT-Creation-Date: 1998-03-03 13:32-0500\n" -"PO-Revision-Date: 1997-09-16 12:28-04:00\n" -"Last-Translator: Laurent Bourbeau <bourbeau@progiciels-bpi.ca>\n" -"Language-Team: French <fr@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=8859-1\n" -"Content-Transfer-Encoding: 8-bit\n" - -#. **************************************************************** -#. -#. Echo Area Movement Commands -#. -#. **************************************************************** -#: info/echo-area.c:283 info/session.c:698 -msgid "Move forward a character" -msgstr "Avancer d'un caractère" - -#. Move point backward in the node. -#: info/echo-area.c:295 info/session.c:714 -msgid "Move backward a character" -msgstr "Reculer d'un caractère" - -#: info/echo-area.c:307 -msgid "Move to the start of this line" -msgstr "Se déplacer au début de cette ligne" - -#: info/echo-area.c:312 -msgid "Move to the end of this line" -msgstr "Se déplacer à la fin de cette ligne" - -#. Move forward a word in the input line. -#: info/echo-area.c:320 info/session.c:732 -msgid "Move forward a word" -msgstr "Avancer d'un mot" - -#: info/echo-area.c:360 info/session.c:781 -msgid "Move backward a word" -msgstr "Reculer d'un mot" - -#: info/echo-area.c:400 -msgid "Delete the character under the cursor" -msgstr "Éliminer le caractère sous le curseur" - -#: info/echo-area.c:430 -msgid "Delete the character behind the cursor" -msgstr "Éliminer le caractère précédent le curseur" - -#: info/echo-area.c:451 -msgid "Cancel or quit operation" -msgstr "Annuler ou opération de quitter" - -#: info/echo-area.c:466 -msgid "Accept (or force completion of) this line" -msgstr "Accepter cette ligne (ou en forcer la complétion)" - -#: info/echo-area.c:471 -msgid "Insert next character verbatim" -msgstr "Insérer le prochain caractère textuellement" - -#: info/echo-area.c:479 -msgid "Insert this character" -msgstr "Insérer ce caractère" - -#: info/echo-area.c:497 -msgid "Insert a TAB character" -msgstr "Insérer un caractère de tabulation" - -#. Transpose the characters at point. If point is at the end of the line, -#. then transpose the characters before point. -#: info/echo-area.c:504 -msgid "Transpose characters at point" -msgstr "Transposer les caractères en position du point courant" - -#: info/echo-area.c:555 -msgid "Yank back the contents of the last kill" -msgstr "Recoller le contenu du dernier effacement" - -#: info/echo-area.c:562 -msgid "Kill ring is empty" -msgstr "L'anneau des effacements temporaires est vide" - -#. If the last command was yank, or yank_pop, and the text just before -#. point is identical to the current kill item, then delete that text -#. from the line, rotate the index down, and yank back some other text. -#: info/echo-area.c:575 -msgid "Yank back a previous kill" -msgstr "Recoller un effacement antérieur" - -#. Delete the text from point to end of line. -#: info/echo-area.c:608 -msgid "Kill to the end of the line" -msgstr "Effacer du point courant jusqu'à la fin de la ligne" - -#: info/echo-area.c:621 -msgid "Kill to the beginning of the line" -msgstr "Effacer du point courant jusqu'au début de la ligne" - -#. Delete from point to the end of the current word. -#: info/echo-area.c:633 -msgid "Kill the word following the cursor" -msgstr "Effacer le mot suivant le curseur" - -#: info/echo-area.c:652 -msgid "Kill the word preceding the cursor" -msgstr "Effacer le mot précédent le curseur" - -#: info/echo-area.c:871 -msgid "Not complete" -msgstr "Non complet" - -#: info/echo-area.c:916 -msgid "List possible completions" -msgstr "Énumérer les complétions possibles" - -#: info/echo-area.c:929 -msgid "No completions" -msgstr "Aucune complétion" - -#: info/echo-area.c:933 -msgid "Sole completion" -msgstr "Une seule complétion" - -#: info/echo-area.c:942 -#, fuzzy -msgid "One completion:\n" -msgstr "la complétion %s:\n" - -#: info/echo-area.c:943 -#, fuzzy, c-format -msgid "%d completions:\n" -msgstr "la complétion %s:\n" - -#: info/echo-area.c:1088 -msgid "Insert completion" -msgstr "Insérer la complétion" - -#: info/echo-area.c:1221 -msgid "Building completions..." -msgstr "Construction des complétions..." - -#. Scroll the "other" window. If there is a window showing completions, scroll -#. that one, otherwise scroll the window which was active on entering the read -#. function. -#: info/echo-area.c:1319 -msgid "Scroll the completions window" -msgstr "Dérouler la fenêtre des complétions" - -#: info/footnotes.c:206 -msgid "Footnotes could not be displayed" -msgstr "Les notes en bas de page ne peuvent pas être affichées" - -#: info/footnotes.c:232 -msgid "Show the footnotes associated with this node in another window" -msgstr "" -"Montrer les notes en bas de page associées à ce noeud dans une autre fenêtre" - -#: info/indices.c:175 -msgid "Look up a string in the index for this file" -msgstr "Rechercher une chaîne dans l'index pour ce fichier" - -#: info/indices.c:205 -msgid "Finding index entries..." -msgstr "Recherche des entrées d'index..." - -#: info/indices.c:212 -msgid "No indices found." -msgstr "Aucun indice retrouvé." - -#: info/indices.c:222 -msgid "Index entry: " -msgstr "Entrée d'index: " - -#: info/indices.c:332 -msgid "" -"Go to the next matching index item from the last `\\[index-search]' command" -msgstr "" -"Passer à la référence suivante de la dernière commande «\\[index-search]»" - -#: info/indices.c:342 -msgid "No previous index search string." -msgstr "Aucune autre chaîne de fouille d'index." - -#: info/indices.c:349 -msgid "No index entries." -msgstr "Aucune entrée d'index." - -#: info/indices.c:382 -#, c-format -msgid "No %sindex entries containing \"%s\"." -msgstr "Aucune entrée %sindex contenant «%s»." - -#: info/indices.c:383 -msgid "more " -msgstr "plus " - -#: info/indices.c:393 -msgid "CAN'T SEE THIS" -msgstr "NE PEUT PAS VOIR CECI" - -#: info/indices.c:429 -#, c-format -msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)" -msgstr "Trouver «%s» dans %s. («\\[next-index-match]» cherchera le prochain.)" - -#: info/indices.c:533 -#, c-format -msgid "Scanning indices of \"%s\"..." -msgstr "Fouille des indices de «%s»..." - -#: info/indices.c:616 -msgid "Grovel all known info file's indices for a string and build a menu" -msgstr "" -"Aplatir tous les indices de fichier info connus pour une chaîne et " -"construire un menu" - -#: info/indices.c:620 -msgid "Index apropos: " -msgstr "Index à-propos: " - -#: info/indices.c:650 -#, c-format -msgid "" -"\n" -"* Menu: Nodes whoses indices contain \"%s\":\n" -msgstr "" -"\n" -"* Menu: Noeuds dont les indices contiennent «%s»:\n" - -#: info/info.c:212 -#, fuzzy -msgid "Try --help for more information." -msgstr "Pour en savoir davantage, faites: «%s --help».\n" - -#: info/info.c:231 makeinfo/makeinfo.c:1089 util/install-info.c:530 -#: util/texindex.c:338 -#, fuzzy, c-format -msgid "" -"Copyright (C) %s Free Software Foundation, Inc.\n" -"There is NO warranty. You may redistribute this software\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the files named COPYING.\n" -msgstr "" -"Copyright © 1996 Free Software Foundation, Inc.\n" -"AUCUNE garantie n'est donnée; tant pour des raisons COMMERCIALES que\n" -"pour RÉPONDRE À UN BESOIN PARTICULIER. Vous pouvez redistribuer des copies\n" -"de ce logiciel selon les termes de la licence GNU General Public License.\n" -"Pour plus d'informations, consultez le fichier COPYING." - -#: info/info.c:363 -msgid "no entries found\n" -msgstr "aucune entrée retrouvée\n" - -#: info/info.c:406 -msgid "There is no menu in this node." -msgstr "Il n'y a pas de menu dans ce noeud." - -#: info/info.c:437 -#, c-format -msgid "There is no menu item \"%s\" in this node." -msgstr "Il n'y a pas d'item menu «%s» dans ce noeud." - -#: info/info.c:501 -#, c-format -msgid "Unable to find the node referenced by \"%s\"." -msgstr "Incappable de trouver le noeud référencé par «%s»." - -#: info/info.c:602 -#, fuzzy, c-format -msgid "" -"Usage: %s [OPTION]... [INFO-FILE [MENU-ITEM...]]\n" -"\n" -"Read documentation in Info format.\n" -"For more complete documentation on how to use Info, run `info info " -"options'.\n" -"\n" -"Options:\n" -"--directory DIR add DIR to INFOPATH.\n" -"--dribble FILENAME remember user keystrokes in FILENAME.\n" -"--file FILENAME specify Info file to visit.\n" -"--node NODENAME specify nodes in first visited Info file.\n" -"--output FILENAME output selected nodes to FILENAME.\n" -"--restore FILENAME read initial keystrokes from FILENAME.\n" -"--subnodes recursively output menu items.\n" -"--help display this help and exit.\n" -"--version display version information and exit.\n" -"\n" -"The first argument, if present, is the name of the Info file to read.\n" -"Any remaining arguments are treated as the names of menu\n" -"items in the initial node visited. For example, `info emacs buffers'\n" -"moves to the node `buffers' in the info file `emacs'.\n" -"\n" -"Email bug reports to bug-texinfo@gnu.org." -msgstr "" -"Voici une brève description des options en mode Info.\n" -"Pour une description plus détaillée sur le comment utiliser le mode Info,\n" -"tapper «info info options».\n" -"\n" -" --directory RÉP Ajouter le RÉPertoire à INFOPATH.\n" -" --dribble FICHIER Mémoriser les touches de l'usager dans FICHIER.\n" -" --file FICHIER Spécifier le FICHIER Info à visiter.\n" -" --node NOEUD Spécifier les noms de NOEUD à visiter en premier.\n" -" --output FICHIER Sortir les noeuds sélectionnés dans FICHIER.\n" -" --restore FICHIER Lire les touches initiales à partir de FICHIER.\n" -" --subnodes Sortir récursivement les items menu.\n" -" --help Afficher cet aide-mémoire.\n" -" --version Afficher le nom et la version du logiciel.\n" -"\n" -"Les arguments résiduels à Info sont traités comme étant les noms des items\n" -"menu dans le noeud initial visité. Vous pouvez aisément rejoindre le\n" -"noeud de votre choix en spécifiant les noms de menu lesquels décrivent\n" -"le chemin de ce noeud. Par exemple, «info emacs buffers».\n" -"\n" -"Rapporter toute anomalie à bug-texinfo@prep.ai.mit.edu." - -#: info/infodoc.c:50 -msgid "Basic Commands in Info Windows" -msgstr "Commandes de base en Info Windows" - -#: info/infodoc.c:211 -msgid "" -"The following commands can only be invoked via M-x:\n" -"\n" -msgstr "" -"Les commandes suivantes peuvent être invoquées seulement via M-x:\n" -"\n" - -#: info/infodoc.c:228 -msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n" -msgstr "--- Utiliser «\\[history-node]» ou «\\[kill-node]» pour sortir ---\n" - -#. Create or move to the help window. -#: info/infodoc.c:328 -msgid "Display help message" -msgstr "Afficher le message d'aide" - -#. Show the Info help node. This means that the "info" file is installed -#. where it can easily be found on your system. -#: info/infodoc.c:346 -msgid "Visit Info node `(info)Help'" -msgstr "Visiter le noeud Info «(info)Aide»" - -#: info/infodoc.c:470 -msgid "Print documentation for KEY" -msgstr "Imprimer la documentation relative à KEY" - -#: info/infodoc.c:483 -#, c-format -msgid "Describe key: %s" -msgstr "Décrire la clé: %s" - -#: info/infodoc.c:492 -#, c-format -msgid "ESC %s is undefined." -msgstr "ESC %s est non défini." - -#: info/infodoc.c:509 -#, c-format -msgid "%s is undefined." -msgstr "%s est non défini." - -#: info/infodoc.c:535 -#, c-format -msgid "%s is defined to %s." -msgstr "%s est défini à %s." - -#: info/infodoc.c:731 -msgid "Where is command: " -msgstr "Où se trouve la commande: " - -#: info/infodoc.c:753 -#, c-format -msgid "`%s' is not on any keys" -msgstr "«%s» ne se trouve pas sur une quelconque clé" - -#: info/infodoc.c:759 -#, c-format -msgid "%s can only be invoked via %s." -msgstr "%s peut être invoqué seulement via %s." - -#: info/infodoc.c:762 -#, c-format -msgid "%s can be invoked via %s." -msgstr "%s peut être invoqué via %s." - -#: info/infodoc.c:766 -#, c-format -msgid "There is no function named `%s'" -msgstr "Il n'y a pas de fonction nommée «%s»" - -#: info/m-x.c:69 -msgid "Read the name of an Info command and describe it" -msgstr "Lire le nom d'une commande Info et la décrire" - -#: info/m-x.c:73 -msgid "Describe command: " -msgstr "Décrire la commande: " - -#: info/m-x.c:96 -msgid "Read a command name in the echo area and execute it" -msgstr "Lire le nom d'une commande dans la zone écho et l'exécuter" - -#: info/m-x.c:134 -msgid "Cannot execute an `echo-area' command here." -msgstr "Ne peut pas exécuter une commande «echo-area» en cet endroit." - -#: info/m-x.c:150 -msgid "Set the height of the displayed window" -msgstr "Ajuster la hauteur de la fenêtre affichée" - -#: info/m-x.c:163 -#, c-format -msgid "Set screen height to (%d): " -msgstr "Ajuster la hauteur de l'écran à (%d): " - -#: info/makedoc.c:126 -msgid "" -" Source files groveled to make this file include:\n" -"\n" -msgstr "" -" Les fichiers sources aplatis pour faire ce fichier incluent:\n" -"\n" - -#: info/makedoc.c:450 -#, c-format -msgid "Couldn't manipulate the file %s.\n" -msgstr "Ne peut pas manipuler le fichier %s.\n" - -#: info/nodemenu.c:28 -msgid "" -"\n" -"* Menu:\n" -" (File)Node Lines Size Containing File\n" -" ---------- ----- ---- ---------------" -msgstr "" -"\n" -"* Menu:\n" -" (Fichier)Noeud Lignes Taille Contenant Fichier(s)\n" -" -------------- ------ ------ --------------------" - -#: info/nodemenu.c:197 -msgid "" -"Here is the menu of nodes you have recently visited.\n" -"Select one from this menu, or use `\\[history-node]' in another window.\n" -msgstr "" -"Voici le menu de noeuds que vous avez visité récemment.\n" -"Sélectionner un noeud de ce menu, ou utiliser «\\[history-node]» dans une\n" -"autre fenêtre.\n" - -#: info/nodemenu.c:217 -msgid "Make a window containing a menu of all of the currently visited nodes" -msgstr "" -"Faire une fenêtre contenant un menu de tous les noeuds actuellement visités" - -#: info/nodemenu.c:297 -msgid "Select a node which has been previously visited in a visible window" -msgstr "Sélectionner un noeud qui a déjà été visité dans une fenêtre visible" - -#: info/nodemenu.c:309 -msgid "Select visited node: " -msgstr "Sélectionner un noeud visité: " - -#: info/nodemenu.c:329 info/session.c:1996 -#, c-format -msgid "The reference disappeared! (%s)." -msgstr "La référence est disparue! (%s)." - -#: info/session.c:162 -#, c-format -msgid "" -"Welcome to Info version %s. \"\\[get-help-window]\" for help, " -"\"\\[menu-item]\" for menu item." -msgstr "" -"Bienvenue au mode Info version %s.\n" -" «\\[get-help-window]» pour obtenir de l'aide,\n" -" «\\[menu-item]» pour obtenir l'item menu." - -#. Move WINDOW's point down to the next line if possible. -#: info/session.c:629 -msgid "Move down to the next line" -msgstr "Descendre à la ligne suivante" - -#. Move WINDOW's point up to the previous line if possible. -#: info/session.c:644 -msgid "Move up to the previous line" -msgstr "Monter à la ligne précédente" - -#. Move WINDOW's point to the end of the true line. -#: info/session.c:659 -msgid "Move to the end of the line" -msgstr "Aller à la fin de la ligne" - -#. Move WINDOW's point to the beginning of the true line. -#: info/session.c:679 -msgid "Move to the start of the line" -msgstr "Aller au début de la ligne" - -#: info/session.c:855 -msgid " times" -msgstr " fois" - -#: info/session.c:857 -#, c-format -msgid "%d times" -msgstr "%d fois" - -#: info/session.c:895 -msgid "No \"Next\" pointer for this node." -msgstr "Aucun pointeur «Next» pour ce noeud." - -#: info/session.c:898 -msgid "Following \"Next\" node..." -msgstr "En suivant le noeud «Next»..." - -#: info/session.c:899 info/session.c:927 info/session.c:999 -#: info/session.c:1717 -msgid "Next" -msgstr "Noeud «Next»" - -#: info/session.c:915 -msgid "Selecting first menu item..." -msgstr "Sélection du premier item menu..." - -#: info/session.c:926 -msgid "Selecting \"Next\" node..." -msgstr "Sélection du noeud «Next»..." - -# Est-ce vraiment un message à traduire? -#: info/session.c:950 info/session.c:1063 info/session.c:1733 -msgid "Up" -msgstr "Noeud «Up»" - -#: info/session.c:1020 -msgid "No more nodes." -msgstr "Aucun autre noeud." - -#: info/session.c:1044 -msgid "No \"Prev\" for this node." -msgstr "Aucun noeud «Prev» pour ce noeud." - -#. Move to the previous node. If this node now contains a menu, -#. and we have not inhibited movement to it, move to the node -#. corresponding to the last menu item. -#: info/session.c:1047 info/session.c:1100 -msgid "Moving \"Prev\" in this window." -msgstr "Monter au noeud «Prev» dans cette fenêtre." - -# Est-ce vraiment un message à traduire? -#: info/session.c:1048 info/session.c:1101 info/session.c:1725 -msgid "Prev" -msgstr "Noeud «Prev»" - -#: info/session.c:1059 -msgid "No \"Prev\" or \"Up\" for this node." -msgstr "Aucun noeud «Prev» ou «Up» pour ce noeud." - -#: info/session.c:1062 -msgid "Moving \"Up\" in this window." -msgstr "Aller au noeud «Up» dans cette fenêtre." - -#: info/session.c:1110 -msgid "Moving to \"Prev\"'s last menu item." -msgstr "Aller au dernier item menu du noeud «Prev»." - -#: info/session.c:1121 -msgid "Move forwards or down through node structure" -msgstr "Avancer ou descendre à travers la structure de noeuds" - -#: info/session.c:1137 -msgid "Move backwards or up through node structure" -msgstr "Reculer ou monter à travers la structure de noeuds" - -#. Show the next screen of WINDOW's node. -#: info/session.c:1152 -msgid "Scroll forward in this window" -msgstr "Défiler vers l'avant dans cette fenêtre" - -#. Show the previous screen of WINDOW's node. -#: info/session.c:1197 -msgid "Scroll backward in this window" -msgstr "Défiler vers l'arrière dans cette fenêtre" - -#. Move to the beginning of the node. -#: info/session.c:1237 -msgid "Move to the start of this node" -msgstr "Aller au point de départ de ce noeud" - -#. Move to the end of the node. -#: info/session.c:1244 -msgid "Move to the end of this node" -msgstr "Aller au point terminal de ce noeud" - -#. **************************************************************** -#. -#. Commands for Manipulating Windows -#. -#. **************************************************************** -#. Make the next window in the chain be the active window. -#: info/session.c:1257 -msgid "Select the next window" -msgstr "Sélectionner la fenêtre suivante" - -#. Make the previous window in the chain be the active window. -#: info/session.c:1296 -msgid "Select the previous window" -msgstr "Sélectionner la fenêtre précédente" - -#. Split WINDOW into two windows, both showing the same node. If we -#. are automatically tiling windows, re-tile after the split. -#: info/session.c:1347 -msgid "Split the current window" -msgstr "Diviser en deux la fenêtre courante" - -#. Delete WINDOW, forgetting the list of last visited nodes. If we are -#. automatically displaying footnotes, show or remove the footnotes -#. window. If we are automatically tiling windows, re-tile after the -#. deletion. -#: info/session.c:1428 -msgid "Delete the current window" -msgstr "Éliminer la fenêtre courante" - -#: info/session.c:1436 -msgid "Cannot delete a permanent window" -msgstr "Ne peut pas éliminer une fenêtre permanente" - -#. Just keep WINDOW, deleting all others. -#: info/session.c:1469 -msgid "Delete all other windows" -msgstr "Éliminer toutes les autres fenêtres" - -#. Scroll the "other" window of WINDOW. -#: info/session.c:1515 -msgid "Scroll the other window" -msgstr "Défiler l'autre fenêtre" - -#. Change the size of WINDOW by AMOUNT. -#: info/session.c:1535 -msgid "Grow (or shrink) this window" -msgstr "Agrandir (ou réduire) cette fenêtre" - -#: info/session.c:1546 -msgid "Divide the available screen space among the visible windows" -msgstr "Répartir l'espace écran disponible parmi les fenêtres visibles" - -#: info/session.c:1553 -msgid "Toggle the state of line wrapping in the current window" -msgstr "Basculer l'état du remplissage de ligne dans la fenêtre courante" - -#. Make WINDOW display the "Next:" node of the node currently being -#. displayed. -#: info/session.c:1714 -msgid "Select the `Next' node" -msgstr "Sélectionner le noeud «Next»" - -#. Make WINDOW display the "Prev:" node of the node currently being -#. displayed. -#: info/session.c:1722 -msgid "Select the `Prev' node" -msgstr "Sélectionner le noeud «Prev»" - -#. Make WINDOW display the "Up:" node of the node currently being -#. displayed. -#: info/session.c:1730 -msgid "Select the `Up' node" -msgstr "Sélectionner le noeud «Up»" - -#. Make WINDOW display the last node of this info file. -#: info/session.c:1737 -msgid "Select the last node in this file" -msgstr "Sélectionner le dernier noeud dans ce fichier" - -#: info/session.c:1750 info/session.c:1768 -msgid "This window has no additional nodes" -msgstr "Cette fenêtre a aucun noeud additionnel" - -#. Make WINDOW display the first node of this info file. -#: info/session.c:1759 -msgid "Select the first node in this file" -msgstr "Sélectionner le premier noeud dans ce fichier" - -#: info/session.c:1778 -msgid "Select the last item in this node's menu" -msgstr "Sélectionner le dernier item dans ce menu de noeuds" - -#. Use KEY (a digit) to select the Nth menu item in WINDOW->node. -#: info/session.c:1784 -msgid "Select this menu item" -msgstr "Sélectionner cet item menu" - -#: info/session.c:1813 -#, c-format -msgid "There aren't %d items in this menu." -msgstr "Il n'y a pas %d items dans ce menu." - -#: info/session.c:1944 -#, c-format -msgid "Menu item (%s): " -msgstr "Item menu (%s): " - -#: info/session.c:1946 -msgid "Menu item: " -msgstr "Item menu: " - -#: info/session.c:1951 -#, c-format -msgid "Follow xref (%s): " -msgstr "Suivre xref (%s): " - -#: info/session.c:1953 -msgid "Follow xref: " -msgstr "Suivre xref: " - -#. Read a line (with completion) which is the name of a menu item, -#. and select that item. -#: info/session.c:2042 -msgid "Read a menu item and select its node" -msgstr "Lire un item menu et sélectionner son noeud" - -#: info/session.c:2050 -msgid "Read a footnote or cross reference and select its node" -msgstr "" -"Lire une note en bas de page ou une référence croisée et sélectionner son " -"noeud" - -#. Position the cursor at the start of this node's menu. -#: info/session.c:2056 -msgid "Move to the start of this node's menu" -msgstr "Aller au point de départ de ce menu de noeud" - -#: info/session.c:2080 -msgid "Visit as many menu items at once as possible" -msgstr "Visiter d'un seul coup autant d'items menu que possible" - -#. Read a line of input which is a node name, and go to that node. -#: info/session.c:2108 -msgid "Read a node name and select it" -msgstr "Lire un nom de noeud et sélectionner ce noeud" - -#: info/session.c:2169 info/session.c:2173 -msgid "Goto Node: " -msgstr "Aller au Noeud: " - -#: info/session.c:2194 -msgid "Read a manpage reference and select it" -msgstr "Lire une référence de page-manuel et la sélectionner" - -#: info/session.c:2198 -msgid "Get Manpage: " -msgstr "Obtenir la Page-manuel: " - -#. Move to the "Top" node in this file. -#: info/session.c:2228 -msgid "Select the node `Top' in this file" -msgstr "Sélectionner le noeud «Top» dans ce fichier" - -#. Notice that the node "Top" is special, and doesn't have to -#. be referenced. -#: info/session.c:2230 makeinfo/makeinfo.c:5145 makeinfo/makeinfo.c:5228 -msgid "Top" -msgstr "Noeud «Top»" - -#. Move to the node "(dir)Top". -#: info/session.c:2234 -msgid "Select the node `(dir)'" -msgstr "Sélectionner le noeud «(dir)»" - -#: info/session.c:2254 -#, c-format -msgid "Kill node (%s): " -msgstr "Effacer le noeud (%s): " - -#: info/session.c:2307 -#, c-format -msgid "Cannot kill node `%s'" -msgstr "Ne peut pas effacer le noeud «%s»" - -#: info/session.c:2317 -msgid "Cannot kill the last node" -msgstr "Ne peut pas effacer le dernier noeud" - -#: info/session.c:2401 -msgid "Select the most recently selected node" -msgstr "Choisir le noeud qui a été le plus récemment sélectionné" - -#. Kill named node. -#: info/session.c:2407 -msgid "Kill this node" -msgstr "Effacer ce noeud" - -#. Read the name of a file and select the entire file. -#: info/session.c:2415 -msgid "Read the name of a file and select it" -msgstr "Lire le nom d'un fichier et le sélectionner" - -#: info/session.c:2419 -msgid "Find file: " -msgstr "Trouver le fichier: " - -#: info/session.c:2436 -#, c-format -msgid "Cannot find \"%s\"." -msgstr "Ne peut pas trouver «%s»." - -#: info/session.c:2483 info/session.c:2608 -#, c-format -msgid "Could not create output file \"%s\"." -msgstr "Ne peut pas créer le fichier de sortie «%s»." - -#: info/session.c:2496 info/session.c:2625 info/session.c:2671 -msgid "Done." -msgstr "Terminé." - -#: info/session.c:2553 -#, c-format -msgid "Writing node \"(%s)%s\"..." -msgstr "Écriture du noeud «(%s)%s»..." - -#: info/session.c:2556 -#, c-format -msgid "Writing node \"%s\"..." -msgstr "Écriture du noeud «%s»..." - -#: info/session.c:2634 -msgid "Pipe the contents of this node through INFO_PRINT_COMMAND" -msgstr "Acheminer les contenus de ce noeud à travers INFO_PRINT_COMMAND" - -#: info/session.c:2654 -#, c-format -msgid "Cannot open pipe to \"%s\"." -msgstr "Ne peut pas ouvrir un tube de communication à «%s»." - -#: info/session.c:2661 -#, c-format -msgid "Printing node \"(%s)%s\"..." -msgstr "Impression du noeud «(%s)%s»..." - -#: info/session.c:2664 -#, c-format -msgid "Printing node \"%s\"..." -msgstr "Impression du noeud «%s»..." - -#: info/session.c:2896 -#, c-format -msgid "Searching subfile \"%s\"..." -msgstr "Fouille du sous-fichier «%s»..." - -#: info/session.c:2946 -msgid "Read a string and search for it" -msgstr "Lire une chaîne et en faire la fouille" - -#: info/session.c:2966 -#, c-format -msgid "%s for string [%s]: " -msgstr "%s pour la chaîne [%s]: " - -#: info/session.c:2967 -msgid "Search backward" -msgstr "Fouiller vers l'arrière" - -#: info/session.c:2967 -msgid "Search" -msgstr "Fouiller" - -#: info/session.c:2994 -msgid "Search failed." -msgstr "Fouille infructueuse." - -#: info/session.c:3020 info/session.c:3026 -msgid "Search interactively for a string as you type it" -msgstr "Fouiller interactivement pour une chaîne telle que vous la tapez" - -#: info/session.c:3120 -msgid "I-search backward: " -msgstr "Fouille I-search vers l'arrière: " - -#: info/session.c:3122 -msgid "I-search: " -msgstr "Fouille I-search: " - -#: info/session.c:3147 -msgid "Failing " -msgstr "Échec " - -#: info/session.c:3512 -msgid "No cross references in this node." -msgstr "Aucune référence croisée dans ce noeud." - -#: info/session.c:3579 -msgid "Move to the previous cross reference" -msgstr "Aller à la référence croisée précédente" - -#: info/session.c:3588 -msgid "Move to the next cross reference" -msgstr "Aller à la prochaine référence croisée" - -#: info/session.c:3598 -msgid "Select reference or menu item appearing on this line" -msgstr "Sélectionner la référence ou l'item menu apparaissant sur cette ligne" - -#. **************************************************************** -#. -#. Miscellaneous Info Commands -#. -#. **************************************************************** -#. What to do when C-g is pressed in a window. -#: info/session.c:3620 -msgid "Cancel current operation" -msgstr "Annuler l'opération courante" - -#: info/session.c:3627 -msgid "Quit" -msgstr "Quitter" - -#: info/session.c:3636 -msgid "Move to the cursor to a specific line of the window" -msgstr "Déplacer le curseur sur une ligne spécifique de la fenêtre" - -#. Clear the screen and redraw its contents. Given a numeric argument, -#. move the line the cursor is on to the COUNT'th line of the window. -#: info/session.c:3668 -msgid "Redraw the display" -msgstr "Redessiner l'affichage écran" - -#. This command does nothing. It is the fact that a key is bound to it -#. that has meaning. See the code at the top of info_session (). -#: info/session.c:3705 -msgid "Quit using Info" -msgstr "Quitter en utilisant Info" - -#: info/session.c:3728 -#, c-format -msgid "Unknown command (%s)." -msgstr "Commande inconnue (%s)." - -# Est-ce que c'est " " ou « » comme caractères? -#: info/session.c:3733 -msgid "\"\" is invalid" -msgstr "\"\" est invalide" - -#: info/session.c:3735 -#, c-format -msgid "\"%s\" is invalid" -msgstr "«%s» est invalide" - -#: info/session.c:3958 -msgid "Add this digit to the current numeric argument" -msgstr "Ajouter ce chiffre à l'argument numérique courant" - -#: info/session.c:3967 -msgid "Start (or multiply by 4) the current numeric argument" -msgstr "Enclencher (ou multipler par 4) l'argument numérique courant" - -#: info/session.c:3982 -msgid "Internally used by \\[universal-argument]" -msgstr "Utilisé internement par \\[universal-argument]" - -#: info/tilde.c:362 -msgid "readline: Out of virtual memory!\n" -msgstr "" - -#: info/variables.c:40 -msgid "When \"On\", footnotes appear and disappear automatically" -msgstr "" -"Lorsque «On» est en fonction, les notes en bas de page apparaissent\n" -"et disparaissent automatiquement" - -#: info/variables.c:44 -msgid "When \"On\", creating or deleting a window resizes other windows" -msgstr "" -"Lorsque «On» est en fonction, la création ou l'effacement d'une fenêtre\n" -"réajuste la dimension des autres fenêtres" - -#: info/variables.c:48 -msgid "When \"On\", flash the screen instead of ringing the bell" -msgstr "" -"Lorsque «On» est en fonction, un clignotement d'écran est utilisé plutôt\n" -"qu'un bruit de cloche" - -#: info/variables.c:52 -msgid "When \"On\", errors cause the bell to ring" -msgstr "" -"Lorsque «On» est en fonction, les erreurs sont signalées par un\n" -"bruit de cloche" - -#: info/variables.c:56 -msgid "When \"On\", Info garbage collects files which had to be uncompressed" -msgstr "" -"Lorsque «On» est en fonction, le ramasse-miette Info récolte les fichiers\n" -"qui devaient être décomprimés" - -#: info/variables.c:59 -msgid "When \"On\", the portion of the matched search string is highlighted" -msgstr "" -"Lorsque «On» est en fonction, la portion de la chaîne de fouille appariée\n" -"est mise en surbrillance" - -#: info/variables.c:63 -msgid "Controls what happens when scrolling is requested at the end of a node" -msgstr "" -"Contrôler ce qui arrive lorsqu'un défilement est requis à la fin d'un noeud" - -#: info/variables.c:67 -msgid "The number lines to scroll when the cursor moves out of the window" -msgstr "Le nombre de lignes à défiler quand le curseur va hors de la fenêtre" - -#: info/variables.c:71 -msgid "When \"On\", Info accepts and displays ISO Latin characters" -msgstr "" -"Lorsque «On» est en fonction, Info accepte et affiche les caractères ISO " -"Latin" - -#: info/variables.c:77 -msgid "Explain the use of a variable" -msgstr "Expliquer l'usage d'une variable" - -#. Get the variable's name. -#: info/variables.c:83 -msgid "Describe variable: " -msgstr "Décrire la variable: " - -#: info/variables.c:102 -msgid "Set the value of an Info variable" -msgstr "Fixer la valeur d'une variable Info" - -#. Get the variable's name and value. -#: info/variables.c:108 -msgid "Set variable: " -msgstr "Fixer la variable: " - -#: info/variables.c:126 -#, c-format -msgid "Set %s to value (%d): " -msgstr "Fixer %s à la valeur (%d): " - -#: info/variables.c:167 -#, c-format -msgid "Set %s to value (%s): " -msgstr "Fixer %s à la valeur (%s): " - -# Est-ce vraiment un message à traduire? -#: info/window.c:1102 -msgid "--*** Tags out of Date ***" -msgstr "--*** Étiquettes passées Date ***" - -#. strlen (location_indicator). -#. 10 for the decimal representation of the number of lines in this -#. node, and the remainder of the text that can appear in the line. -#: info/window.c:1113 -msgid "-----Info: (), lines ----, " -msgstr "-----Info: (), lignes ----, " - -#: info/window.c:1120 -#, c-format -msgid "-%s---Info: %s, %d lines --%s--" -msgstr "-%s---Info: %s, %d lignes --%s--" - -#: info/window.c:1124 -#, c-format -msgid "-%s%s-Info: (%s)%s, %d lines --%s--" -msgstr "-%s%s-Info: (%s)%s, %d lignes --%s--" - -#: info/window.c:1131 -#, c-format -msgid " Subfile: %s" -msgstr " Sous-fichier: %s" - -#: lib/getopt.c:672 -#, c-format -msgid "%s: option `%s' is ambiguous\n" -msgstr "" - -#: lib/getopt.c:696 -#, c-format -msgid "%s: option `--%s' doesn't allow an argument\n" -msgstr "" - -#: lib/getopt.c:701 -#, c-format -msgid "%s: option `%c%s' doesn't allow an argument\n" -msgstr "" - -#: lib/getopt.c:718 lib/getopt.c:891 -#, fuzzy, c-format -msgid "%s: option `%s' requires an argument\n" -msgstr "%c%s nécessite un nom" - -#. --option -#: lib/getopt.c:747 -#, c-format -msgid "%s: unrecognized option `--%s'\n" -msgstr "" - -#. +option or -option -#: lib/getopt.c:751 -#, c-format -msgid "%s: unrecognized option `%c%s'\n" -msgstr "" - -#. 1003.2 specifies the format of this message. -#: lib/getopt.c:777 -#, c-format -msgid "%s: illegal option -- %c\n" -msgstr "" - -#: lib/getopt.c:780 -#, c-format -msgid "%s: invalid option -- %c\n" -msgstr "" - -#. 1003.2 specifies the format of this message. -#: lib/getopt.c:810 lib/getopt.c:940 -#, fuzzy, c-format -msgid "%s: option requires an argument -- %c\n" -msgstr "%s exige un argument: le formateur pour %citem" - -#: lib/getopt.c:857 -#, c-format -msgid "%s: option `-W %s' is ambiguous\n" -msgstr "" - -#: lib/getopt.c:875 -#, c-format -msgid "%s: option `-W %s' doesn't allow an argument\n" -msgstr "" - -#: makeinfo/makeinfo.c:893 -#, c-format -msgid "%s:%d: warning: " -msgstr "%s:%d: AVERTISSEMENT: " - -#: makeinfo/makeinfo.c:916 -msgid "Too many errors! Gave up.\n" -msgstr "Beaucoup trop d'erreurs! Abandon.\n" - -#: makeinfo/makeinfo.c:975 makeinfo/makeinfo.c:1000 makeinfo/makeinfo.c:1068 -#, c-format -msgid "%s: %s arg must be numeric, not `%s'.\n" -msgstr "%s: l'argument %s doit être numérique, non pas «%s».\n" - -#: makeinfo/makeinfo.c:989 -#, c-format -msgid "Couldn't open macro expansion output `%s'" -msgstr "Ne peut ouvrir la sortie d'expansion de macro «%s»" - -#: makeinfo/makeinfo.c:992 -msgid "Cannot specify more than one macro expansion output" -msgstr "Ne peut spécifier plus d'une sortie d'expansion de macro" - -#: makeinfo/makeinfo.c:1036 -#, c-format -msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n" -msgstr "" -"%s: l'argument de l'option --paragraph-indent doit être numérique, «none» " -"ou\n" -"«asis», non pas «%s».\n" - -#: makeinfo/makeinfo.c:1079 -#, c-format -msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n" -msgstr "" -"%s: l'argument de l'option --footnote-style doit être «separate» ou\n" -"«end», non pas «%s».\n" - -#: makeinfo/makeinfo.c:1110 -#, c-format -msgid "%s: missing file argument.\n" -msgstr "%s: absence d'un argument fichier.\n" - -#: makeinfo/makeinfo.c:1163 -#, c-format -msgid "Try `%s --help' for more information.\n" -msgstr "Pour en savoir davantage, faites: «%s --help».\n" - -#: makeinfo/makeinfo.c:1165 -#, fuzzy, c-format -msgid "" -"Usage: %s [OPTION]... TEXINFO-FILE...\n" -"\n" -"Translate Texinfo source documentation to a format suitable for reading\n" -"with GNU Info.\n" -"\n" -"Options:\n" -"-D VAR define a variable, as with @set.\n" -"-E MACRO-OFILE process macros only, output texinfo source.\n" -"-I DIR append DIR to the @include directory search path.\n" -"-P DIR prepend DIR to the @include directory search path.\n" -"-U VAR undefine a variable, as with @clear.\n" -"--error-limit NUM quit after NUM errors (default %d).\n" -"--fill-column NUM break lines at NUM characters (default %d).\n" -"--footnote-style STYLE output footnotes according to STYLE:\n" -" `separate' to place footnotes in their own node,\n" -" `end' to place the footnotes at the end of\n" -" the node in which they are defined (the default).\n" -"--force preserve output even if errors.\n" -"--help display this help and exit.\n" -"--no-validate suppress node cross-reference validation.\n" -"--no-warn suppress warnings (but not errors).\n" -"--no-split suppress splitting of large files.\n" -"--no-headers suppress node separators and Node: Foo headers.\n" -"--output FILE, -o FILE output to FILE, and ignore any @setfilename.\n" -"--paragraph-indent VAL indent paragraphs with VAL spaces (default %d).\n" -" if VAL is `none', do not indent; if VAL is `asis',\n" -" preserve any existing indentation.\n" -"--reference-limit NUM complain about at most NUM references (default %d).\n" -"--verbose report about what is being done.\n" -"--version display version information and exit.\n" -"\n" -"Email bug reports to bug-texinfo@gnu.org.\n" -msgstr "" -"Usage: %s [OPTION]... FICHIER-TEXINFO...\n" -"\n" -"Traduire une documentation source en format Texinfo vers un format " -"approprié\n" -"pour une lecture avec GNU Info.\n" -"\n" -"Options:\n" -"-D VAR Définir une variable, comme avec @set.\n" -"-E MACRO-OFILE Exécuter les macros seulement, sortir un source " -"texinfo.\n" -"-I DIR Ajouter à la fin DIR dans la fouille de répertoires\n" -" pour @include.\n" -"-P DIR Ajouter au début DIR dans la fouille de répertoires\n" -" pour @include.\n" -"-U VAR Rendre indéfinie une variable, comme avec @clear.\n" -"--error-limit NUM Quitter après NUM erreurs (par défaut %d).\n" -"--fill-column NUM Tronquer les lignes à NUM caractères (par défaut " -"%d).\n" -"--footnote-style STYLE Sortir les notes en bas de page selon l'option " -"STYLE:\n" -" «separate» pour placer les notes dans leur propre " -"noeud,\n" -" «end» pour les placer à la fin du noeud dans lequel\n" -" elles ont été définies (valeur par défaut).\n" -"--force Conserver la sortie même s'il y a des erreurs.\n" -"--help Afficher l'aide-mémoire.\n" -"--no-validate Supprimer la validation de la table de référence\n" -" des noeuds.\n" -"--no-warn Supprimer les avertissements (mais pas les erreurs).\n" -"--no-split Supprimer la troncation de fichiers volumineux.\n" -"--no-headers Supprimer les séparateurs de noeud et Node: Foo " -"headers.\n" -"--output FICHIER, -o FICHIER Écrire dans le FICHIER, et ignorer tous\n" -" les @setfilename.\n" -"--paragraph-indent VAL Indenter les paragraphes de VAL espaces (%d par " -"défaut).\n" -" Si VAL est «none», ne pas indenter; si VAL est " -"«asis»,\n" -" conserver toute valeur d'indentation existante.\n" -"--reference-limit NUM Avertir après plus de NUM références (%d par " -"défaut).\n" -"--verbose Utiliser le mode bavard et indiquer ce qui a été " -"fait.\n" -"--version Afficher le nom et la version du logiciel.\n" -"\n" -"Rapporter toute anomalie à bug-texinfo@prep.ai.mit.edu.\n" - -#: makeinfo/makeinfo.c:1552 -#, c-format -msgid "%s: getwd: %s, %s\n" -msgstr "%s: getwd: %s, %s\n" - -#: makeinfo/makeinfo.c:1748 -#, c-format -msgid "Expected `%s'" -msgstr "«%s» attendue" - -#: makeinfo/makeinfo.c:2082 -#, c-format -msgid "No `%s' found in `%s'" -msgstr "Aucun «%s» trouvé dans «%s»" - -#: makeinfo/makeinfo.c:2132 -#, c-format -msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n" -msgstr "" -"%s: Sauter l'expansion de macro qui irait sur stdout comme la sortie Info.\n" - -#: makeinfo/makeinfo.c:2151 -#, c-format -msgid "Making %s file `%s' from `%s'.\n" -msgstr "Fabrication du fichier %s «%s» à partir de «%s».\n" - -#: makeinfo/makeinfo.c:2181 -#, c-format -msgid "This is Info file %s, produced by Makeinfo version %d.%d" -msgstr "Ceci est le fichier Info %s, produit par Makeinfo version %d.%d" - -#: makeinfo/makeinfo.c:2183 -#, c-format -msgid " from the input file %s.\n" -msgstr "à partir du fichier d'entrée «%s».\n" - -#: makeinfo/makeinfo.c:2202 -#, c-format -msgid "" -"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n" -msgstr "" -"%s: Enlèvement du fichier de sortie de macro «%s» à cause d'erreurs;\n" -"utiliser l'option --force pour préserver.\n" - -#. If there were errors, and no --force, remove the output. -#: makeinfo/makeinfo.c:2234 -#, c-format -msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n" -msgstr "" -"%s: Enlèvement du fichier de sortie «%s» à cause d'erreurs;\n" -"utiliser l'option --force pour préserver.\n" - -#. Special case. I'm not supposed to see this character by itself. -#. If I do, it means there is a syntax error in the input text. -#. Report the error here, but remember this brace on the stack so -#. you can ignore its partner. -#: makeinfo/makeinfo.c:2374 makeinfo/makeinfo.c:7629 -#, c-format -msgid "Misplaced %c" -msgstr "%c égarée ou mal placée" - -#: makeinfo/makeinfo.c:2461 -#, c-format -msgid "Unknown command `%s'" -msgstr "Commande inconnue «%s»." - -#: makeinfo/makeinfo.c:2481 -msgid "NO_NAME!" -msgstr "NOM_INCONNU!" - -#: makeinfo/makeinfo.c:2495 -#, c-format -msgid "%c%s expected `{...}'" -msgstr "%c%s exigeant des accolades «{...}»" - -#: makeinfo/makeinfo.c:2528 -msgid "Unmatched }" -msgstr "Accolade «}» non appariée" - -#: makeinfo/makeinfo.c:2576 -#, c-format -msgid "%c%s missing close brace" -msgstr "%c%s sans accolade fermante" - -#: makeinfo/makeinfo.c:3372 -msgid "Broken-Type in insertion_type_pname" -msgstr "Type impossible dans la fonction insertion_type_pname" - -#: makeinfo/makeinfo.c:3438 -msgid "Enumeration stack overflow" -msgstr "Débordement de la pile d'énumérations" - -#: makeinfo/makeinfo.c:3470 -#, c-format -msgid "lettering overflow, restarting at %c" -msgstr "débordement du lettrage, reprise à partir de %c" - -#: makeinfo/makeinfo.c:3509 -msgid "* Menu:\n" -msgstr "* Menu:\n" - -#: makeinfo/makeinfo.c:3593 -#, c-format -msgid "%s requires an argument: the formatter for %citem" -msgstr "%s exige un argument: le formateur pour %citem" - -#: makeinfo/makeinfo.c:3697 -#, c-format -msgid "`%cend' expected `%s', but saw `%s'" -msgstr "«%cend» attendait «%s», mais a vu «%s»" - -#: makeinfo/makeinfo.c:3810 -#, c-format -msgid "No matching `%cend %s'" -msgstr "«%cend %s» non apparié" - -#: makeinfo/makeinfo.c:3949 -#, c-format -msgid "How did @%s end up in cm_special_char?\n" -msgstr "Comment le caractère @%s a-t-il pu aboutir dans cm_special_char?\n" - -#. This error message isn't perfect if the argument is multiple -#. characters, but it doesn't seem worth getting right. -#: makeinfo/makeinfo.c:3963 -#, c-format -msgid "%c%s expects `i' or `j' as argument, not `%c'" -msgstr "%c%s s'attend à argument «i» ou «j», non pas «%c»" - -#: makeinfo/makeinfo.c:3967 -#, c-format -msgid "%c%s expects a single character `i' or `j' as argument" -msgstr "%c%s attend un argument d'un seul caractère «i» ou «j»" - -#: makeinfo/makeinfo.c:3979 -msgid "January" -msgstr "janvier" - -#: makeinfo/makeinfo.c:3979 -msgid "February" -msgstr "février" - -#: makeinfo/makeinfo.c:3979 -msgid "March" -msgstr "mars" - -#: makeinfo/makeinfo.c:3979 -msgid "April" -msgstr "avril" - -#: makeinfo/makeinfo.c:3979 -msgid "May" -msgstr "mai" - -#: makeinfo/makeinfo.c:3980 -msgid "June" -msgstr "juin" - -#: makeinfo/makeinfo.c:3980 -msgid "July" -msgstr "juillet" - -#: makeinfo/makeinfo.c:3980 -msgid "August" -msgstr "août" - -#: makeinfo/makeinfo.c:3980 -msgid "September" -msgstr "septembre" - -#: makeinfo/makeinfo.c:3980 -msgid "October" -msgstr "octobre" - -#: makeinfo/makeinfo.c:3981 -msgid "November" -msgstr "novembre" - -#: makeinfo/makeinfo.c:3981 -msgid "December" -msgstr "décembre" - -#: makeinfo/makeinfo.c:4039 -#, c-format -msgid "%c%s expects a single character as an argument" -msgstr "%c%s s'attend à un seul caractère comme argument" - -#: makeinfo/makeinfo.c:4153 -#, c-format -msgid "%c%s is obsolete" -msgstr "%c%s est périmé" - -#: makeinfo/makeinfo.c:4325 -#, c-format -msgid "Node with %ctop as a section already exists" -msgstr "" - -#: makeinfo/makeinfo.c:4337 -#, c-format -msgid "Here is the %ctop node" -msgstr "Le noeud %ctop se trouve ici" - -#: makeinfo/makeinfo.c:4356 -#, c-format -msgid "%ctop used before %cnode, defaulting to %s" -msgstr "noeud %ctop utilisé avant %cnode, %s implicitement" - -#: makeinfo/makeinfo.c:4431 -#, c-format -msgid "%c%s is obsolete; use %c%s instead" -msgstr "%c%s est périmé; utiliser %c%s à la place" - -#: makeinfo/makeinfo.c:4680 -#, c-format -msgid "Node `%s' multiply defined (line %d is first definition at)" -msgstr "Noeud «%s» ayant plusieurs définitions (ligne %d étant la première)" - -#: makeinfo/makeinfo.c:4753 -#, c-format -msgid "Formatting node %s...\n" -msgstr "Écriture du noeud «%s»...\n" - -#: makeinfo/makeinfo.c:4802 -#, c-format -msgid "Node `%s' requires a sectioning command (e.g. %c%s)" -msgstr "Le noeud «%s» exige une commande de subdivision (e.g. %c%s)" - -#: makeinfo/makeinfo.c:5085 -#, c-format -msgid "Node `%s''s Next field not pointed back to" -msgstr "Le champ Next du noeud «%s» n'a pas de pointeur de retour en amont" - -#: makeinfo/makeinfo.c:5090 -#, c-format -msgid "This node (`%s') is the one with the bad `Prev'" -msgstr "Ce noeud («%s») est celui dont le champ «Prev» est erroné" - -#: makeinfo/makeinfo.c:5130 -#, c-format -msgid "Node `%s's Prev field not pointed back to" -msgstr "Le champ Prev du noeud «%s» n'a pas de pointeur de retour en amont" - -#: makeinfo/makeinfo.c:5134 -#, c-format -msgid "This node (`%s') has the bad Next" -msgstr "Ce noeud («%s») est celui dont le champ «Next» est erroné" - -#: makeinfo/makeinfo.c:5146 -#, c-format -msgid "Node `%s' missing Up field" -msgstr "Le noeud «%s» a un champ «Up» manquant" - -#: makeinfo/makeinfo.c:5186 -#, c-format -msgid "`%s' has an Up field of `%s', but `%s' has no menu item for `%s'" -msgstr "" -"Le noeud «%s» a un champ Up de «%s», mais «%s» n'a aucun item menu pour «%s»" - -#: makeinfo/makeinfo.c:5217 -#, c-format -msgid "node `%s' has been referenced %d times" -msgstr "Le noeud «%s» a été référencé %d fois" - -#: makeinfo/makeinfo.c:5229 -#, c-format -msgid "unreferenced node `%s'" -msgstr "noeud «%s» non référencé" - -#: makeinfo/makeinfo.c:5256 -#, c-format -msgid "%s reference to nonexistent node `%s'" -msgstr "%s réfère au noeud «%s» non existant" - -#: makeinfo/makeinfo.c:5668 makeinfo/makeinfo.c:5680 -#, c-format -msgid "%cmenu seen before first node" -msgstr "%cmenu avant même le premier noeud" - -#: makeinfo/makeinfo.c:5669 makeinfo/makeinfo.c:5681 -msgid "creating `Top' node" -msgstr "création du noeud «TOP»" - -#: makeinfo/makeinfo.c:5794 -#, c-format -msgid "`.' or `,' must follow cross reference, not %c" -msgstr "«.» ou «,» doit suivre une référence croisée, non pas %c" - -#: makeinfo/makeinfo.c:5962 -#, c-format -msgid "@image file `%s' unreadable: %s" -msgstr "fichier «%s» dans la commande @image est illisible: %s" - -#: makeinfo/makeinfo.c:5966 -msgid "@image missing filename argument" -msgstr "absence d'un argument fichier dans la commande @image" - -#: makeinfo/makeinfo.c:6067 -#, c-format -msgid "%s requires letter or digit" -msgstr "%s exige une lettre ou un chiffre" - -#: makeinfo/makeinfo.c:6152 -#, c-format -msgid "Unmatched `%c%s'" -msgstr "«%c%s» non apparié" - -#: makeinfo/makeinfo.c:6159 -#, c-format -msgid "`%c%s' needs something after it" -msgstr "«%c%s» a besoin de quelque chose après lui" - -#: makeinfo/makeinfo.c:6165 -#, c-format -msgid "Bad argument to `%s', `%s', using `%s'" -msgstr "Mauvais argument à «%s», «%s», utilisant «%s»" - -#: makeinfo/makeinfo.c:6338 -#, c-format -msgid "{No Value For \"%s\"}" -msgstr "{Aucune Valeur Pour «%s»}" - -#: makeinfo/makeinfo.c:6388 -#, c-format -msgid "%c%s requires a name" -msgstr "%c%s nécessite un nom" - -#: makeinfo/makeinfo.c:6496 -#, c-format -msgid "Reached eof before matching @end %s" -msgstr "Fin de fichier rencontré avant l'appariement de @end %s" - -#: makeinfo/makeinfo.c:6722 -#, c-format -msgid "The `%c%s' command is meaningless within a `@%s' block" -msgstr "La commande «%c%s» est inactive dans un bloc «@%s»" - -#: makeinfo/makeinfo.c:6731 -#, c-format -msgid "%citemx is not meaningful inside of a `%s' block" -msgstr "%citemx est inactif à l'intérieur d'un bloc «%s»" - -#: makeinfo/makeinfo.c:6844 -#, c-format -msgid "%c%s found outside of an insertion block" -msgstr "%c%s est trouvé à l'extérieur d'un bloc d'insertion" - -#: makeinfo/makeinfo.c:6935 -#, c-format -msgid "Missing `}' in %cdef arg" -msgstr "Accolade «}» manquante dans le paramètre %cdef" - -#: makeinfo/makeinfo.c:7144 makeinfo/makeinfo.c:7164 -msgid "Function" -msgstr "Fonction" - -#: makeinfo/makeinfo.c:7148 -msgid "Macro" -msgstr "Macro" - -#: makeinfo/makeinfo.c:7152 -msgid "Special Form" -msgstr "Forme Spéciale" - -#: makeinfo/makeinfo.c:7156 makeinfo/makeinfo.c:7168 -msgid "Variable" -msgstr "Variable" - -#: makeinfo/makeinfo.c:7160 -msgid "User Option" -msgstr "Option de l'Usager" - -#: makeinfo/makeinfo.c:7172 -msgid "Instance Variable" -msgstr "Variable d'Instance" - -#: makeinfo/makeinfo.c:7176 makeinfo/makeinfo.c:7180 -msgid "Method" -msgstr "Méthode" - -#: makeinfo/makeinfo.c:7335 -#, c-format -msgid "Must be in a `%s' insertion in order to use `%s'x" -msgstr "Doit être dans une insertion «%s» afin d'utiliser «%s»x." - -#: makeinfo/makeinfo.c:7407 -#, c-format -msgid "%csp requires a positive numeric argument" -msgstr "%csp exige un argument numérique positif" - -#: makeinfo/makeinfo.c:7650 -msgid "asis" -msgstr "«asis»" - -#: makeinfo/makeinfo.c:7652 -msgid "none" -msgstr "«none»" - -#: makeinfo/makeinfo.c:7674 -#, c-format -msgid "Bad argument to %c%s" -msgstr "Mauvais argument à %c%s" - -#: makeinfo/makeinfo.c:7966 -#, c-format -msgid "Unknown index `%s'" -msgstr "Nom d'index inconnu «%s»" - -#: makeinfo/makeinfo.c:8031 -#, c-format -msgid "Index `%s' already exists" -msgstr "L'index «%s» existe toujours" - -#: makeinfo/makeinfo.c:8062 -#, c-format -msgid "Unknown index `%s' and/or `%s' in @synindex" -msgstr "Nom d'index «%s» inconnu et/ou «%s» dans @synindex" - -#: makeinfo/makeinfo.c:8251 -#, c-format -msgid "Unknown index `%s' in @printindex" -msgstr "Nom d'index «%s» inconnu dans @printindex" - -#: makeinfo/makeinfo.c:8266 -msgid "" -"* Menu:\n" -"\n" -msgstr "" -"* Menu:\n" -"\n" - -#: makeinfo/makeinfo.c:8453 -#, c-format -msgid "`%c%s' needs an argument `{...}', not just `%s'" -msgstr "«%c%s» nécessite un argument «{...}», non pas «%s» seulement" - -#: makeinfo/makeinfo.c:8468 -#, c-format -msgid "No closing brace for footnote `%s'" -msgstr "Accolade fermante «}» manquante pour la note en bas de page «%s»" - -#: makeinfo/makeinfo.c:8507 -msgid "Footnote defined without parent node" -msgstr "La note en bas de page est définie sans noeud parent" - -# Est-ce vraiement un message à traduire? -#: makeinfo/makeinfo.c:8539 -msgid "-Footnotes" -msgstr "-Footnotes" - -# Est-ce vraiment un message à traduire? NON. -#: makeinfo/makeinfo.c:8594 -msgid "" -"---------- Footnotes ----------\n" -"\n" -msgstr "" -"--------- Notes en bas de page ---------\n" -"\n" - -#: makeinfo/makeinfo.c:8690 -#, c-format -msgid "macro `%s' previously defined" -msgstr "macro «%s» déjà définie précédemment" - -#: makeinfo/makeinfo.c:8694 -#, c-format -msgid "here is the previous definition of `%s'" -msgstr "ici se trouve la définition précédente de «%s»" - -#: makeinfo/makeinfo.c:8908 -#, c-format -msgid "Macro `%s' called with too many args" -msgstr "Macro «%s» appelée avec trop d'arguments" - -#: makeinfo/makeinfo.c:9060 -#, c-format -msgid "%cend macro not found" -msgstr "macro %cend non trouvée" - -#: makeinfo/makeinfo.c:9100 -#, c-format -msgid "%cquote-arg only useful when the macro takes a single argument" -msgstr "%cquote-arg utile seulement lorsque la macro prend un seul argument" - -#: makeinfo/multi.c:206 -#, c-format -msgid "ignoring stray text `%s' after @multitable" -msgstr "abandon du texte orphelin «%s» après la commande @multitable" - -#: makeinfo/multi.c:277 -#, c-format -msgid "Too many columns in multitable item (max %d)" -msgstr "Trop de colonnes dans un item de multitable (%d max)" - -#. impossible, I think. -#: makeinfo/multi.c:304 -msgid "multitable item not in active multitable" -msgstr "item de multitable qui n'est pas dans une multitable active" - -#: makeinfo/multi.c:313 -#, c-format -msgid "Cannot select column #%d in multitable" -msgstr "Ne peut pas sélectionner la colonne #%d dans une multitable." - -#: makeinfo/multi.c:404 -msgid "ignoring @tab outside of multitable" -msgstr "inhibition d'une commande @tab à l'extérieur d'une multitable" - -#: makeinfo/multi.c:428 -msgid "** Multicolumn output from last row:\n" -msgstr "** Sortie en multicolonnes à partir de la dernière rangée:\n" - -#: makeinfo/multi.c:431 -#, c-format -msgid "* column #%d: output = %s\n" -msgstr "* colonne #%d: sortie = %s\n" - -#: util/install-info.c:123 util/install-info.c:136 -msgid "virtual memory exhausted" -msgstr "mémoire virtuelle épuisée" - -#: util/install-info.c:192 -#, c-format -msgid "%s: warning: " -msgstr "%s: AVERTISSEMENT: " - -#: util/install-info.c:213 -#, c-format -msgid " for %s" -msgstr " pour %s" - -#: util/install-info.c:282 -#, c-format -msgid "\tTry `%s --help' for a complete list of options.\n" -msgstr "Pour avoir la liste complète des options, faites «%s --help».\n" - -#: util/install-info.c:290 -#, fuzzy, c-format -msgid "" -"Usage: %s [OPTION]... [INFO-FILE [DIR-FILE]]\n" -"\n" -"Install INFO-FILE in the Info directory file DIR-FILE.\n" -"\n" -"Options:\n" -"--delete Delete existing entries in INFO-FILE;\n" -" don't insert any new entries.\n" -"--dir-file=NAME Specify file name of Info directory file.\n" -" This is equivalent to using the DIR-FILE argument.\n" -"--entry=TEXT Insert TEXT as an Info directory entry.\n" -" TEXT should have the form of an Info menu item line\n" -" plus zero or more extra lines starting with whitespace.\n" -" If you specify more than one entry, they are all added.\n" -" If you don't specify any entries, they are determined\n" -" from information in the Info file itself.\n" -"--help Display this help and exit.\n" -"--info-file=FILE Specify Info file to install in the directory.\n" -" This is equivalent to using the INFO-FILE argument.\n" -"--info-dir=DIR Same as --dir-file=DIR/dir.\n" -"--item=TEXT Same as --entry TEXT.\n" -" An Info directory entry is actually a menu item.\n" -"--quiet Suppress warnings.\n" -"--remove Same as --delete.\n" -"--section=SEC Put this file's entries in section SEC of the directory.\n" -" If you specify more than one section, all the entries\n" -" are added in each of the sections.\n" -" If you don't specify any sections, they are determined\n" -" from information in the Info file itself.\n" -"--version Display version information and exit.\n" -"\n" -"Email bug reports to bug-texinfo@gnu.org.\n" -msgstr "" -"%s [OPTION]... [INFO-FICHIER [DIR-FICHIER]]\n" -" Installer INFO-FICHIER dans le répertoire DIR-FICHIER de fichiers Info.\n" -"\n" -"Options:\n" -"--delete Éliminer les entrées existantes dans INFO-FICHIER;\n" -" ne pas insérer une quelconque nouvelle entrée.\n" -"--dir-file=NOM Spécifier le NOM du répertoire de fichiers Info.\n" -" Ceci équivaut à utiliser l'argument DIR-FICHIER.\n" -"--entry=TEXTE Insérer TEXTE comme une entrée du répertoire Info.\n" -" TEXTE doit avoir la forme d'une ligne d'item de menu\n" -" Info avec zéro ou plusieurs lignes en extra commençant\n" -" par un blanc. Si plus d'une entrée est spécifiée,\n" -" elles seront toutes ajoutées. Si aucune entrée n'est\n" -" spécifiée, elles seront déterminées à partir de\n" -" l'information dans le fichier Info lui-même.\n" -"--help Afficher l'aide-mémoire.\n" -"--info-file=FICHIER Spécifier le FICHIER Info à installer dans le\n" -" répertoire de fichiers Info. Ceci équivaut à utiliser\n" -" l'argument INFO-FICHIER.\n" -"--info-dir=RÉP Identique à l'option --dir-file=RÉP/dir.\n" -"--item=TEXTE Identique à l'option --entry=TEXTE\n" -" Une entrée de répertoire Info est en fait un item menu.\n" -"--quiet Supprimer les avertissements.\n" -"--remove Identique à l'option --delete.\n" -"--section=SEC Mettre cette entrée de fichier dans la section SEC du\n" -" répertoire. Si plus d'une section est spécifiée,\n" -" toutes les entrées sont ajoutées dans chacune des\n" -" sections. Si aucune section n'est spécifiée, elles\n" -" seront déterminées à partir de l'information dans\n" -" le fichier Info lui-même.\n" -"--version Afficher le nom et la version du logiciel.\n" -"\n" -"Rapporter toute anomalie à bug-texinfo@prep.ai.mit.edu.\n" - -#: util/install-info.c:341 -#, fuzzy -msgid "" -"This is the file .../info/dir, which contains the\n" -"topmost node of the Info hierarchy, called (dir)Top.\n" -"The first time you invoke Info you start off looking at this node.\n" -"\n" -"File: dir,\tNode: Top,\tThis is the top of the INFO tree\n" -"\n" -" This (the Directory node) gives a menu of major topics.\n" -" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n" -" \"h\" gives a primer for first-timers,\n" -" \"mEmacs<Return>\" visits the Emacs manual, etc.\n" -"\n" -" In Emacs, you can click mouse button 2 on a menu item or cross reference\n" -" to select it.\n" -"\n" -"* Menu:\n" -msgstr "" -"Ceci est le fichier .../info/dir, lequel contient le noeud \n" -"le plus haut dans la hiérarchie Info, noeud appelé (dir)Top.\n" -"La première fois que Info est invoqué, vous démarrez la recherche \n" -"à partir de ce noeud.\n" -"\n" -"Fichier: dir Noeud: Top Ceci est le haut de l'arborescence INFO\n" -"\n" -" Ceci (le noeud Répertoire) fournit un menu des sujets majeurs.\n" -" Taper «q» pour quitter, «?» pour lister toutes les commandes Info,\n" -" «d» pour revenir à cet endroit,\n" -" «h» fournit un guide d'initiation pour les nouveaux venus,\n" -" «mEmacs<Return>» démarre une consultation du manuel Emacs, etc.\n" -"\n" -" En Emacs, vous pouvez cliquer le bouton 2 de la souris sur un item menu " -"ou\n" -" sur une référence croisée pour le sélectionner.\n" -"\n" -"* Menu:\n" - -#: util/install-info.c:364 -#, c-format -msgid "%s: could not read (%s) and could not create (%s)\n" -msgstr "%s: ne peut pas lire (%s) et ne peut pas créer (%s)\n" - -#: util/install-info.c:464 util/install-info.c:474 -#, c-format -msgid "%s: Specify the Info directory only once.\n" -msgstr "%s: Spécifier le répertoire Info une seule fois seulement.\n" - -#: util/install-info.c:502 -#, c-format -msgid "%s: Specify the Info file only once.\n" -msgstr "%s: Spécifier le fichier Info une seule fois seulement.\n" - -#: util/install-info.c:550 -#, c-format -msgid "excess command line argument `%s'" -msgstr "excédent d'argument de ligne de commande `%s'" - -#: util/install-info.c:554 -msgid "No input file specified; try --help for more information." -msgstr "" -"Aucun fichier d'entrée spécifié; essayer --help pour plus d'informations." - -#: util/install-info.c:556 -msgid "No dir file specified; try --help for more information." -msgstr "Aucun fichier dir spécifié; essayer --help pour plus d'informations." - -#: util/install-info.c:608 util/install-info.c:631 -msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY" -msgstr "START-INFO-DIR-ENTRY non apparié avec END-INFO-DIR-ENTRY" - -#: util/install-info.c:627 -msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY" -msgstr "END-INFO-DIR-ENTRY non apparié avec START-INFO-DIR-ENTRY" - -#. No need to abort here, the original info file may not have -#. the requisite Texinfo commands. This is not something an -#. installer should have to correct (it's a problem for the -#. maintainer), and there's no need to cause subsequent parts of -#. `make install' to fail. -#: util/install-info.c:641 -#, c-format -msgid "no info dir entry in `%s'" -msgstr "aucune entrée répertoire Info dans «%s»" - -#: util/install-info.c:852 -#, c-format -msgid "menu item `%s' already exists, for file `%s'" -msgstr "item menu «%s» déjà existant, pour le fichier «%s»" - -#: util/install-info.c:875 -#, c-format -msgid "no entries found for `%s'; nothing deleted" -msgstr "aucune entrée trouvée pour «%s»; rien n'a été éliminé" - -#: util/texindex.c:253 -msgid "keep temporary files around after processing" -msgstr "conserver les fichiers temporaires après le traitement" - -#: util/texindex.c:255 -msgid "do not keep temporary files around after processing (default)" -msgstr "ne pas conserver les fichiers temporaires après le traitement (défaut)" - -#: util/texindex.c:257 -msgid "send output to FILE" -msgstr "envoyer la sortie dans FICHIER" - -#: util/texindex.c:259 -msgid "display version information and exit" -msgstr "afficher la version en usage et quitter" - -#: util/texindex.c:261 -msgid "display this help and exit" -msgstr "afficher cet aide-mémoire et quitter" - -#: util/texindex.c:272 -#, c-format -msgid "Usage: %s [OPTION]... FILE...\n" -msgstr "Usage: %s [OPTION]... FICHIER...\n" - -#: util/texindex.c:273 -msgid "Generate a sorted index for each TeX output FILE.\n" -msgstr "Générer un index trié pour chaque FICHIER de sortie TeX.\n" - -#. Avoid trigraph nonsense. -#: util/texindex.c:275 -msgid "Usually FILE... is `foo.??' for a document `foo.texi'.\n" -msgstr "Habituellement FICHIER... est «foo.??» pour un document «foo.texi».\n" - -#: util/texindex.c:276 -msgid "" -"\n" -"Options:\n" -msgstr "" -"\n" -"Options:\n" - -#: util/texindex.c:290 -#, fuzzy -msgid "" -"\n" -"Email bug reports to bug-texinfo@gnu.org." -msgstr "" -"\n" -"Rapporter toute anomalie à bug-texinfo@prep.ai.mit.edu." - -#: util/texindex.c:917 util/texindex.c:951 util/texindex.c:1027 -#: util/texindex.c:1055 -#, c-format -msgid "%s: not a texinfo index file" -msgstr "%s: pas un fichier index en format Texinfo" - -#: util/texindex.c:1012 -#, c-format -msgid "failure reopening %s" -msgstr "échec lors de la réouverture de %s" - -#: util/texindex.c:1325 -#, c-format -msgid "entry %s follows an entry with a secondary name" -msgstr "l'entrée %s suit une entrée ayant un nom secondaire" - -#: util/texindex.c:1663 -#, c-format -msgid "%s; for file `%s'.\n" -msgstr "%s; pour le fichier «%s».\n" - -#: util/texindex.c:1724 -#, c-format -msgid "Virtual memory exhausted in %s ()! Needed %d bytes." -msgstr "Mémoire virtuelle épuisée dans %s ()! Besoin de %d octets." - -#~ msgid "install-info (GNU %s) %s\n" -#~ msgstr "install-info (GNU %s) %s\n" - -#~ msgid "universal-argument" -#~ msgstr "universal-argument" - -#~ msgid "Show what to type to execute a given command" -#~ msgstr "Montrer quoi écrire afin d'exécuter une commande donnée" - -#~ msgid "There %s %d " -#~ msgstr "Comme complétion(s) %s %d " - -#~ msgid "is" -#~ msgstr "il y a" - -#~ msgid "are" -#~ msgstr "il y a" - -# Est-ce vraiment un message à traduire? NON. -#~ msgid "" -#~ "Usage: info [-d dir-path] [-f info-file] [-o output-file] [-n node-name]..." -#~ msgstr "" -#~ "Usage: info [-d dir-path] [-f info-file] [-o output-file] [-n node-name]..." - -# Est-ce vraiment un message à traduire? NON. -#~ msgid "" -#~ " [--directory dir-path] [--file info-file] [--node node-name]..." -#~ msgstr "" -#~ " [--directory dir-path] [--file info-file] [--node node-name]..." - -# Est-ce vraiment un message à traduire? NON. -#~ msgid " [--help] [--output output-file] [--subnodes] [--version]" -#~ msgstr "" -#~ " [--help] [--output output-file] [--subnodes] [--version]" - -# Est-ce vraiment un message à traduire? NON. -#~ msgid " [--dribble dribble-file] [--restore from-file]" -#~ msgstr " [--dribble dribble-file] [--restore from-file]" - -# Est-ce vraiment un message à traduire? NON. -#~ msgid " [menu-selection ...]" -#~ msgstr " [menu-selection ...]" - -#~ msgid "makeinfo (GNU %s %s) %d.%d\n" -#~ msgstr "makeinfo (GNU %s %s) %d.%d\n" - -#~ msgid "%d %s %d" -#~ msgstr "%d %s %d" - -#~ msgid "There already is a node having %ctop as a section" -#~ msgstr "Il y a déjà un noeud ayant %ctop en tant que section" - -#~ msgid "texindex (GNU %s %s) 2.1\n" -#~ msgstr "texindex (GNU %s %s) 2.1\n" diff --git a/texinfo/po/stamp-cat-id b/texinfo/po/stamp-cat-id deleted file mode 100644 index 9788f70238c..00000000000 --- a/texinfo/po/stamp-cat-id +++ /dev/null @@ -1 +0,0 @@ -timestamp diff --git a/texinfo/po/texinfo.pot b/texinfo/po/texinfo.pot deleted file mode 100644 index 503c3bf949d..00000000000 --- a/texinfo/po/texinfo.pot +++ /dev/null @@ -1,1832 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 1997-07-31 17:43-0400\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" -"Language-Team: LANGUAGE <LL@li.org>\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" - -#. Commands found in "./session.c". -#: info/doc.c:27 info/session.c:629 -msgid "Move down to the next line" -msgstr "" - -#. Move WINDOW's point up to the previous line if possible. -#: info/doc.c:28 info/session.c:644 -msgid "Move up to the previous line" -msgstr "" - -#. Move WINDOW's point to the end of the true line. -#: info/doc.c:29 info/session.c:659 -msgid "Move to the end of the line" -msgstr "" - -#. Move WINDOW's point to the beginning of the true line. -#: info/doc.c:30 info/session.c:679 -msgid "Move to the start of the line" -msgstr "" - -#. Commands found in "./echo-area.c". -#: info/doc.c:31 info/doc.c:84 info/echo-area.c:283 info/session.c:698 -msgid "Move forward a character" -msgstr "" - -#. Move point backward in the node. -#: info/doc.c:32 info/doc.c:85 info/echo-area.c:295 info/session.c:714 -msgid "Move backward a character" -msgstr "" - -#. Move forward a word in the input line. -#: info/doc.c:33 info/doc.c:88 info/echo-area.c:320 info/session.c:732 -msgid "Move forward a word" -msgstr "" - -#: info/doc.c:34 info/doc.c:89 info/echo-area.c:360 info/session.c:781 -msgid "Move backward a word" -msgstr "" - -#: info/doc.c:35 info/session.c:1121 -msgid "Move forwards or down through node structure" -msgstr "" - -#: info/doc.c:36 info/session.c:1137 -msgid "Move backwards or up through node structure" -msgstr "" - -#. Show the next screen of WINDOW's node. -#: info/doc.c:37 info/session.c:1152 -msgid "Scroll forward in this window" -msgstr "" - -#. Show the previous screen of WINDOW's node. -#: info/doc.c:38 info/session.c:1197 -msgid "Scroll backward in this window" -msgstr "" - -#. Move to the beginning of the node. -#: info/doc.c:39 info/session.c:1237 -msgid "Move to the start of this node" -msgstr "" - -#. Move to the end of the node. -#: info/doc.c:40 info/session.c:1244 -msgid "Move to the end of this node" -msgstr "" - -#. **************************************************************** -#. -#. Commands for Manipulating Windows -#. -#. **************************************************************** -#. Make the next window in the chain be the active window. -#: info/doc.c:41 info/session.c:1257 -msgid "Select the next window" -msgstr "" - -#. Make the previous window in the chain be the active window. -#: info/doc.c:42 info/session.c:1296 -msgid "Select the previous window" -msgstr "" - -#. Split WINDOW into two windows, both showing the same node. If we -#. are automatically tiling windows, re-tile after the split. -#: info/doc.c:43 info/session.c:1347 -msgid "Split the current window" -msgstr "" - -#. Delete WINDOW, forgetting the list of last visited nodes. If we are -#. automatically displaying footnotes, show or remove the footnotes -#. window. If we are automatically tiling windows, re-tile after the -#. deletion. -#: info/doc.c:44 info/session.c:1428 -msgid "Delete the current window" -msgstr "" - -#. Just keep WINDOW, deleting all others. -#: info/doc.c:45 info/session.c:1469 -msgid "Delete all other windows" -msgstr "" - -#. Scroll the "other" window of WINDOW. -#: info/doc.c:46 info/session.c:1515 -msgid "Scroll the other window" -msgstr "" - -#. Change the size of WINDOW by AMOUNT. -#: info/doc.c:47 info/session.c:1535 -msgid "Grow (or shrink) this window" -msgstr "" - -#: info/doc.c:48 info/session.c:1546 -msgid "Divide the available screen space among the visible windows" -msgstr "" - -#: info/doc.c:49 info/session.c:1553 -msgid "Toggle the state of line wrapping in the current window" -msgstr "" - -#. Make WINDOW display the "Next:" node of the node currently being -#. displayed. -#: info/doc.c:50 info/session.c:1714 -msgid "Select the `Next' node" -msgstr "" - -#. Make WINDOW display the "Prev:" node of the node currently being -#. displayed. -#: info/doc.c:51 info/session.c:1722 -msgid "Select the `Prev' node" -msgstr "" - -#. Make WINDOW display the "Up:" node of the node currently being -#. displayed. -#: info/doc.c:52 info/session.c:1730 -msgid "Select the `Up' node" -msgstr "" - -#. Make WINDOW display the last node of this info file. -#: info/doc.c:53 info/session.c:1737 -msgid "Select the last node in this file" -msgstr "" - -#. Make WINDOW display the first node of this info file. -#: info/doc.c:54 info/session.c:1759 -msgid "Select the first node in this file" -msgstr "" - -#: info/doc.c:55 info/session.c:2401 -msgid "Select the most recently selected node" -msgstr "" - -#: info/doc.c:56 info/session.c:1778 -msgid "Select the last item in this node's menu" -msgstr "" - -#. Use KEY (a digit) to select the Nth menu item in WINDOW->node. -#: info/doc.c:57 info/session.c:1784 -msgid "Select this menu item" -msgstr "" - -#. Read a line (with completion) which is the name of a menu item, -#. and select that item. -#: info/doc.c:58 info/session.c:2042 -msgid "Read a menu item and select its node" -msgstr "" - -#: info/doc.c:59 info/session.c:2050 -msgid "Read a footnote or cross reference and select its node" -msgstr "" - -#. Position the cursor at the start of this node's menu. -#: info/doc.c:60 info/session.c:2056 -msgid "Move to the start of this node's menu" -msgstr "" - -#: info/doc.c:61 info/session.c:2080 -msgid "Visit as many menu items at once as possible" -msgstr "" - -#. Read a line of input which is a node name, and go to that node. -#: info/doc.c:62 info/session.c:2108 -msgid "Read a node name and select it" -msgstr "" - -#: info/doc.c:63 info/session.c:2194 -msgid "Read a manpage reference and select it" -msgstr "" - -#. Move to the "Top" node in this file. -#: info/doc.c:64 info/session.c:2228 -msgid "Select the node `Top' in this file" -msgstr "" - -#. Move to the node "(dir)Top". -#: info/doc.c:65 info/session.c:2234 -msgid "Select the node `(dir)'" -msgstr "" - -#. Kill named node. -#: info/doc.c:66 info/session.c:2407 -msgid "Kill this node" -msgstr "" - -#. Read the name of a file and select the entire file. -#: info/doc.c:67 info/session.c:2415 -msgid "Read the name of a file and select it" -msgstr "" - -#: info/doc.c:68 info/session.c:2634 -msgid "Pipe the contents of this node through INFO_PRINT_COMMAND" -msgstr "" - -#: info/doc.c:69 info/session.c:2946 -msgid "Read a string and search for it" -msgstr "" - -#: info/doc.c:70 info/doc.c:71 info/session.c:3020 info/session.c:3026 -msgid "Search interactively for a string as you type it" -msgstr "" - -#: info/doc.c:72 info/session.c:3579 -msgid "Move to the previous cross reference" -msgstr "" - -#: info/doc.c:73 info/session.c:3588 -msgid "Move to the next cross reference" -msgstr "" - -#: info/doc.c:74 info/session.c:3598 -msgid "Select reference or menu item appearing on this line" -msgstr "" - -#. **************************************************************** -#. -#. Miscellaneous Info Commands -#. -#. **************************************************************** -#. What to do when C-g is pressed in a window. -#: info/doc.c:75 info/session.c:3620 -msgid "Cancel current operation" -msgstr "" - -#: info/doc.c:76 info/session.c:3636 -msgid "Move to the cursor to a specific line of the window" -msgstr "" - -#. Clear the screen and redraw its contents. Given a numeric argument, -#. move the line the cursor is on to the COUNT'th line of the window. -#: info/doc.c:77 info/session.c:3668 -msgid "Redraw the display" -msgstr "" - -#. This command does nothing. It is the fact that a key is bound to it -#. that has meaning. See the code at the top of info_session (). -#: info/doc.c:78 info/session.c:3705 -msgid "Quit using Info" -msgstr "" - -#: info/doc.c:80 info/session.c:3958 -msgid "Add this digit to the current numeric argument" -msgstr "" - -#: info/doc.c:81 -msgid "universal-argument" -msgstr "" - -#: info/doc.c:81 info/session.c:3967 -msgid "Start (or multiply by 4) the current numeric argument" -msgstr "" - -#: info/doc.c:82 info/session.c:3982 -msgid "Internally used by \\[universal-argument]" -msgstr "" - -#: info/doc.c:86 info/echo-area.c:307 -msgid "Move to the start of this line" -msgstr "" - -#: info/doc.c:87 info/echo-area.c:312 -msgid "Move to the end of this line" -msgstr "" - -#: info/doc.c:90 info/echo-area.c:400 -msgid "Delete the character under the cursor" -msgstr "" - -#: info/doc.c:91 info/echo-area.c:430 -msgid "Delete the character behind the cursor" -msgstr "" - -#: info/doc.c:92 info/echo-area.c:451 -msgid "Cancel or quit operation" -msgstr "" - -#: info/doc.c:93 info/echo-area.c:466 -msgid "Accept (or force completion of) this line" -msgstr "" - -#: info/doc.c:94 info/echo-area.c:471 -msgid "Insert next character verbatim" -msgstr "" - -#: info/doc.c:95 info/echo-area.c:479 -msgid "Insert this character" -msgstr "" - -#: info/doc.c:96 info/echo-area.c:497 -msgid "Insert a TAB character" -msgstr "" - -#. Transpose the characters at point. If point is at the end of the line, -#. then transpose the characters before point. -#: info/doc.c:97 info/echo-area.c:504 -msgid "Transpose characters at point" -msgstr "" - -#: info/doc.c:98 info/echo-area.c:555 -msgid "Yank back the contents of the last kill" -msgstr "" - -#. If the last command was yank, or yank_pop, and the text just before -#. point is identical to the current kill item, then delete that text -#. from the line, rotate the index down, and yank back some other text. -#: info/doc.c:99 info/echo-area.c:575 -msgid "Yank back a previous kill" -msgstr "" - -#. Delete the text from point to end of line. -#: info/doc.c:100 info/echo-area.c:608 -msgid "Kill to the end of the line" -msgstr "" - -#: info/doc.c:101 info/echo-area.c:621 -msgid "Kill to the beginning of the line" -msgstr "" - -#. Delete from point to the end of the current word. -#: info/doc.c:102 info/echo-area.c:633 -msgid "Kill the word following the cursor" -msgstr "" - -#: info/doc.c:103 info/echo-area.c:652 -msgid "Kill the word preceding the cursor" -msgstr "" - -#: info/doc.c:104 info/echo-area.c:916 -msgid "List possible completions" -msgstr "" - -#: info/doc.c:105 info/echo-area.c:1090 -msgid "Insert completion" -msgstr "" - -#. Scroll the "other" window. If there is a window showing completions, scroll -#. that one, otherwise scroll the window which was active on entering the read -#. function. -#: info/doc.c:106 info/echo-area.c:1321 -msgid "Scroll the completions window" -msgstr "" - -#. Commands found in "./infodoc.c". -#: info/doc.c:108 info/infodoc.c:328 -msgid "Display help message" -msgstr "" - -#. Show the Info help node. This means that the "info" file is installed -#. where it can easily be found on your system. -#: info/doc.c:109 info/infodoc.c:346 -msgid "Visit Info node `(info)Help'" -msgstr "" - -#: info/doc.c:110 info/infodoc.c:470 -msgid "Print documentation for KEY" -msgstr "" - -#: info/doc.c:111 -msgid "Show what to type to execute a given command" -msgstr "" - -#. Commands found in "./m-x.c". -#: info/doc.c:113 info/m-x.c:69 -msgid "Read the name of an Info command and describe it" -msgstr "" - -#: info/doc.c:114 info/m-x.c:96 -msgid "Read a command name in the echo area and execute it" -msgstr "" - -#: info/doc.c:115 info/m-x.c:150 -msgid "Set the height of the displayed window" -msgstr "" - -#. Commands found in "./indices.c". -#: info/doc.c:117 info/indices.c:175 -msgid "Look up a string in the index for this file" -msgstr "" - -#: info/doc.c:118 info/indices.c:332 -msgid "" -"Go to the next matching index item from the last `\\[index-search]' command" -msgstr "" - -#: info/doc.c:119 info/indices.c:616 -msgid "Grovel all known info file's indices for a string and build a menu" -msgstr "" - -#. Commands found in "./nodemenu.c". -#: info/doc.c:121 info/nodemenu.c:217 -msgid "Make a window containing a menu of all of the currently visited nodes" -msgstr "" - -#: info/doc.c:122 info/nodemenu.c:297 -msgid "Select a node which has been previously visited in a visible window" -msgstr "" - -#. Commands found in "./footnotes.c". -#: info/doc.c:124 info/footnotes.c:232 -msgid "Show the footnotes associated with this node in another window" -msgstr "" - -#. Commands found in "./variables.c". -#: info/doc.c:126 info/variables.c:77 -msgid "Explain the use of a variable" -msgstr "" - -#: info/doc.c:127 info/variables.c:102 -msgid "Set the value of an Info variable" -msgstr "" - -#: info/echo-area.c:562 -msgid "Kill ring is empty" -msgstr "" - -#: info/echo-area.c:871 -msgid "Not complete" -msgstr "" - -#: info/echo-area.c:929 -msgid "No completions" -msgstr "" - -#: info/echo-area.c:933 -msgid "Sole completion" -msgstr "" - -#: info/echo-area.c:942 -#, c-format -msgid "There %s %d " -msgstr "" - -#: info/echo-area.c:942 -msgid "is" -msgstr "" - -#: info/echo-area.c:942 -msgid "are" -msgstr "" - -#: info/echo-area.c:945 -#, c-format -msgid "completion%s:\n" -msgstr "" - -#: info/echo-area.c:1223 -msgid "Building completions..." -msgstr "" - -#: info/footnotes.c:206 -msgid "Footnotes could not be displayed" -msgstr "" - -#: info/indices.c:205 -msgid "Finding index entries..." -msgstr "" - -#: info/indices.c:212 -msgid "No indices found." -msgstr "" - -#: info/indices.c:222 -msgid "Index entry: " -msgstr "" - -#: info/indices.c:342 -msgid "No previous index search string." -msgstr "" - -#: info/indices.c:349 -msgid "No index entries." -msgstr "" - -#: info/indices.c:382 -#, c-format -msgid "No %sindex entries containing \"%s\"." -msgstr "" - -#: info/indices.c:383 -msgid "more " -msgstr "" - -#: info/indices.c:393 -msgid "CAN'T SEE THIS" -msgstr "" - -#: info/indices.c:429 -#, c-format -msgid "Found \"%s\" in %s. (`\\[next-index-match]' tries to find next.)" -msgstr "" - -#: info/indices.c:533 -#, c-format -msgid "Scanning indices of \"%s\"..." -msgstr "" - -#: info/indices.c:620 -msgid "Index apropos: " -msgstr "" - -#: info/indices.c:650 -#, c-format -msgid "" -"\n" -"* Menu: Nodes whoses indices contain \"%s\":\n" -msgstr "" - -#: info/info.c:347 -msgid "no entries found\n" -msgstr "" - -#: info/info.c:390 -msgid "There is no menu in this node." -msgstr "" - -#: info/info.c:421 -#, c-format -msgid "There is no menu item \"%s\" in this node." -msgstr "" - -#: info/info.c:485 -#, c-format -msgid "Unable to find the node referenced by \"%s\"." -msgstr "" - -#: info/info.c:595 -msgid "" -"Usage: info [-d dir-path] [-f info-file] [-o output-file] [-n node-name]..." -msgstr "" - -#: info/info.c:596 -msgid "" -" [--directory dir-path] [--file info-file] [--node node-name]..." -msgstr "" - -#: info/info.c:597 -msgid " [--help] [--output output-file] [--subnodes] [--version]" -msgstr "" - -#: info/info.c:598 -msgid " [--dribble dribble-file] [--restore from-file]" -msgstr "" - -#: info/info.c:599 -msgid " [menu-selection ...]" -msgstr "" - -#: info/info.c:607 -msgid "" -"Here is a quick description of Info's options. For a more complete\n" -"description of how to use Info, type `info info options'.\n" -"\n" -" --directory DIR Add DIR to INFOPATH.\n" -" --dribble FILENAME Remember user keystrokes in FILENAME.\n" -" --file FILENAME Specify Info file to visit.\n" -" --node NODENAME Specify nodes in first visited Info file.\n" -" --output FILENAME Output selected nodes to FILENAME.\n" -" --restore FILENAME Read initial keystrokes from FILENAME.\n" -" --subnodes Recursively output menu items.\n" -" --help Get this help message.\n" -" --version Display Info's version information.\n" -"\n" -"Remaining arguments to Info are treated as the names of menu\n" -"items in the initial node visited. You can easily move to the\n" -"node of your choice by specifying the menu names which describe\n" -"the path to that node. For example, `info emacs buffers'.\n" -"\n" -"Email bug reports to bug-texinfo@prep.ai.mit.edu." -msgstr "" - -#: info/infodoc.c:50 -msgid "Basic Commands in Info Windows" -msgstr "" - -#: info/infodoc.c:211 -msgid "" -"The following commands can only be invoked via M-x:\n" -"\n" -msgstr "" - -#: info/infodoc.c:228 -msgid "--- Use `\\[history-node]' or `\\[kill-node]' to exit ---\n" -msgstr "" - -#: info/infodoc.c:483 -#, c-format -msgid "Describe key: %s" -msgstr "" - -#: info/infodoc.c:492 -#, c-format -msgid "ESC %s is undefined." -msgstr "" - -#: info/infodoc.c:509 -#, c-format -msgid "%s is undefined." -msgstr "" - -#: info/infodoc.c:535 -#, c-format -msgid "%s is defined to %s." -msgstr "" - -#: info/infodoc.c:731 -msgid "Where is command: " -msgstr "" - -#: info/infodoc.c:753 -#, c-format -msgid "`%s' is not on any keys" -msgstr "" - -#: info/infodoc.c:759 -#, c-format -msgid "%s can only be invoked via %s." -msgstr "" - -#: info/infodoc.c:762 -#, c-format -msgid "%s can be invoked via %s." -msgstr "" - -#: info/infodoc.c:766 -#, c-format -msgid "There is no function named `%s'" -msgstr "" - -#: info/m-x.c:73 -msgid "Describe command: " -msgstr "" - -#: info/m-x.c:134 -msgid "Cannot execute an `echo-area' command here." -msgstr "" - -#: info/m-x.c:163 -#, c-format -msgid "Set screen height to (%d): " -msgstr "" - -#: info/makedoc.c:126 -msgid "" -" Source files groveled to make this file include:\n" -"\n" -msgstr "" - -#: info/makedoc.c:450 -#, c-format -msgid "Couldn't manipulate the file %s.\n" -msgstr "" - -#: info/nodemenu.c:28 -msgid "" -"\n" -"* Menu:\n" -" (File)Node Lines Size Containing File\n" -" ---------- ----- ---- ---------------" -msgstr "" - -#: info/nodemenu.c:197 -msgid "" -"Here is the menu of nodes you have recently visited.\n" -"Select one from this menu, or use `\\[history-node]' in another window.\n" -msgstr "" - -#: info/nodemenu.c:309 -msgid "Select visited node: " -msgstr "" - -#: info/nodemenu.c:329 info/session.c:1996 -#, c-format -msgid "The reference disappeared! (%s)." -msgstr "" - -#: info/session.c:162 -#, c-format -msgid "" -"Welcome to Info version %s. \"\\[get-help-window]\" for help, " -"\"\\[menu-item]\" for menu item." -msgstr "" - -#: info/session.c:855 -msgid " times" -msgstr "" - -#: info/session.c:857 -#, c-format -msgid "%d times" -msgstr "" - -#: info/session.c:895 -msgid "No \"Next\" pointer for this node." -msgstr "" - -#: info/session.c:898 -msgid "Following \"Next\" node..." -msgstr "" - -#: info/session.c:899 info/session.c:927 info/session.c:999 -#: info/session.c:1717 -msgid "Next" -msgstr "" - -#: info/session.c:915 -msgid "Selecting first menu item..." -msgstr "" - -#: info/session.c:926 -msgid "Selecting \"Next\" node..." -msgstr "" - -#: info/session.c:950 info/session.c:1063 info/session.c:1733 -msgid "Up" -msgstr "" - -#: info/session.c:1020 -msgid "No more nodes." -msgstr "" - -#: info/session.c:1044 -msgid "No \"Prev\" for this node." -msgstr "" - -#. Move to the previous node. If this node now contains a menu, -#. and we have not inhibited movement to it, move to the node -#. corresponding to the last menu item. -#: info/session.c:1047 info/session.c:1100 -msgid "Moving \"Prev\" in this window." -msgstr "" - -#: info/session.c:1048 info/session.c:1101 info/session.c:1725 -msgid "Prev" -msgstr "" - -#: info/session.c:1059 -msgid "No \"Prev\" or \"Up\" for this node." -msgstr "" - -#: info/session.c:1062 -msgid "Moving \"Up\" in this window." -msgstr "" - -#: info/session.c:1110 -msgid "Moving to \"Prev\"'s last menu item." -msgstr "" - -#: info/session.c:1436 -msgid "Cannot delete a permanent window" -msgstr "" - -#: info/session.c:1750 info/session.c:1768 -msgid "This window has no additional nodes" -msgstr "" - -#: info/session.c:1813 -#, c-format -msgid "There aren't %d items in this menu." -msgstr "" - -#: info/session.c:1944 -#, c-format -msgid "Menu item (%s): " -msgstr "" - -#: info/session.c:1946 -msgid "Menu item: " -msgstr "" - -#: info/session.c:1951 -#, c-format -msgid "Follow xref (%s): " -msgstr "" - -#: info/session.c:1953 -msgid "Follow xref: " -msgstr "" - -#: info/session.c:2169 info/session.c:2173 -msgid "Goto Node: " -msgstr "" - -#: info/session.c:2198 -msgid "Get Manpage: " -msgstr "" - -#. Notice that the node "Top" is special, and doesn't have to -#. be referenced. -#: info/session.c:2230 makeinfo/makeinfo.c:5135 makeinfo/makeinfo.c:5218 -msgid "Top" -msgstr "" - -#: info/session.c:2254 -#, c-format -msgid "Kill node (%s): " -msgstr "" - -#: info/session.c:2307 -#, c-format -msgid "Cannot kill node `%s'" -msgstr "" - -#: info/session.c:2317 -msgid "Cannot kill the last node" -msgstr "" - -#: info/session.c:2419 -msgid "Find file: " -msgstr "" - -#: info/session.c:2436 -#, c-format -msgid "Cannot find \"%s\"." -msgstr "" - -#: info/session.c:2483 info/session.c:2608 -#, c-format -msgid "Could not create output file \"%s\"." -msgstr "" - -#: info/session.c:2496 info/session.c:2625 info/session.c:2671 -msgid "Done." -msgstr "" - -#: info/session.c:2553 -#, c-format -msgid "Writing node \"(%s)%s\"..." -msgstr "" - -#: info/session.c:2556 -#, c-format -msgid "Writing node \"%s\"..." -msgstr "" - -#: info/session.c:2654 -#, c-format -msgid "Cannot open pipe to \"%s\"." -msgstr "" - -#: info/session.c:2661 -#, c-format -msgid "Printing node \"(%s)%s\"..." -msgstr "" - -#: info/session.c:2664 -#, c-format -msgid "Printing node \"%s\"..." -msgstr "" - -#: info/session.c:2896 -#, c-format -msgid "Searching subfile \"%s\"..." -msgstr "" - -#: info/session.c:2966 -#, c-format -msgid "%s for string [%s]: " -msgstr "" - -#: info/session.c:2967 -msgid "Search backward" -msgstr "" - -#: info/session.c:2967 -msgid "Search" -msgstr "" - -#: info/session.c:2994 -msgid "Search failed." -msgstr "" - -#: info/session.c:3120 -msgid "I-search backward: " -msgstr "" - -#: info/session.c:3122 -msgid "I-search: " -msgstr "" - -#: info/session.c:3147 -msgid "Failing " -msgstr "" - -#: info/session.c:3512 -msgid "No cross references in this node." -msgstr "" - -#: info/session.c:3627 -msgid "Quit" -msgstr "" - -#: info/session.c:3728 -#, c-format -msgid "Unknown command (%s)." -msgstr "" - -#: info/session.c:3733 -msgid "\"\" is invalid" -msgstr "" - -#: info/session.c:3735 -#, c-format -msgid "\"%s\" is invalid" -msgstr "" - -#: info/variables.c:40 -msgid "When \"On\", footnotes appear and disappear automatically" -msgstr "" - -#: info/variables.c:44 -msgid "When \"On\", creating or deleting a window resizes other windows" -msgstr "" - -#: info/variables.c:48 -msgid "When \"On\", flash the screen instead of ringing the bell" -msgstr "" - -#: info/variables.c:52 -msgid "When \"On\", errors cause the bell to ring" -msgstr "" - -#: info/variables.c:56 -msgid "When \"On\", Info garbage collects files which had to be uncompressed" -msgstr "" - -#: info/variables.c:59 -msgid "When \"On\", the portion of the matched search string is highlighted" -msgstr "" - -#: info/variables.c:63 -msgid "Controls what happens when scrolling is requested at the end of a node" -msgstr "" - -#: info/variables.c:67 -msgid "The number lines to scroll when the cursor moves out of the window" -msgstr "" - -#: info/variables.c:71 -msgid "When \"On\", Info accepts and displays ISO Latin characters" -msgstr "" - -#. Get the variable's name. -#: info/variables.c:83 -msgid "Describe variable: " -msgstr "" - -#. Get the variable's name and value. -#: info/variables.c:108 -msgid "Set variable: " -msgstr "" - -#: info/variables.c:126 -#, c-format -msgid "Set %s to value (%d): " -msgstr "" - -#: info/variables.c:167 -#, c-format -msgid "Set %s to value (%s): " -msgstr "" - -#: info/window.c:1102 -msgid "--*** Tags out of Date ***" -msgstr "" - -#. strlen (location_indicator). -#. 10 for the decimal representation of the number of lines in this -#. node, and the remainder of the text that can appear in the line. -#: info/window.c:1113 -msgid "-----Info: (), lines ----, " -msgstr "" - -#: info/window.c:1120 -#, c-format -msgid "-%s---Info: %s, %d lines --%s--" -msgstr "" - -#: info/window.c:1124 -#, c-format -msgid "-%s%s-Info: (%s)%s, %d lines --%s--" -msgstr "" - -#: info/window.c:1131 -#, c-format -msgid " Subfile: %s" -msgstr "" - -#: makeinfo/makeinfo.c:889 -#, c-format -msgid "%s:%d: warning: " -msgstr "" - -#: makeinfo/makeinfo.c:912 -msgid "Too many errors! Gave up.\n" -msgstr "" - -#: makeinfo/makeinfo.c:971 makeinfo/makeinfo.c:996 makeinfo/makeinfo.c:1064 -#, c-format -msgid "%s: %s arg must be numeric, not `%s'.\n" -msgstr "" - -#: makeinfo/makeinfo.c:985 -#, c-format -msgid "Couldn't open macro expansion output `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:988 -msgid "Cannot specify more than one macro expansion output" -msgstr "" - -#: makeinfo/makeinfo.c:1032 -#, c-format -msgid "%s: --paragraph-indent arg must be numeric/`none'/`asis', not `%s'.\n" -msgstr "" - -#: makeinfo/makeinfo.c:1075 -#, c-format -msgid "%s: --footnote-style arg must be `separate' or `end', not `%s'.\n" -msgstr "" - -#: makeinfo/makeinfo.c:1085 util/install-info.c:522 util/texindex.c:348 -msgid "" -"Copyright (C) 1996 Free Software Foundation, Inc.\n" -"There is NO warranty. You may redistribute this software\n" -"under the terms of the GNU General Public License.\n" -"For more information about these matters, see the files named COPYING." -msgstr "" - -#: makeinfo/makeinfo.c:1105 -#, c-format -msgid "%s: missing file argument.\n" -msgstr "" - -#: makeinfo/makeinfo.c:1146 -#, c-format -msgid "makeinfo (GNU %s %s) %d.%d\n" -msgstr "" - -#: makeinfo/makeinfo.c:1158 -#, c-format -msgid "Try `%s --help' for more information.\n" -msgstr "" - -#: makeinfo/makeinfo.c:1160 -#, c-format -msgid "" -"Usage: %s [OPTION]... TEXINFO-FILE...\n" -"\n" -"Translate Texinfo source documentation to a format suitable for reading\n" -"with GNU Info.\n" -"\n" -"Options:\n" -"-D VAR define a variable, as with @set.\n" -"-E MACRO-OFILE process macros only, output texinfo source.\n" -"-I DIR append DIR to the @include directory search path.\n" -"-P DIR prepend DIR to the @include directory search path.\n" -"-U VAR undefine a variable, as with @clear.\n" -"--error-limit NUM quit after NUM errors (default %d).\n" -"--fill-column NUM break lines at NUM characters (default %d).\n" -"--footnote-style STYLE output footnotes according to STYLE:\n" -" `separate' to place footnotes in their own node,\n" -" `end' to place the footnotes at the end of\n" -" the node in which they are defined (the default).\n" -"--force preserve output even if errors.\n" -"--help display this help and exit.\n" -"--no-validate suppress node cross-reference validation.\n" -"--no-warn suppress warnings (but not errors).\n" -"--no-split suppress splitting of large files.\n" -"--no-headers suppress node separators and Node: Foo headers.\n" -"--output FILE, -o FILE output to FILE, and ignore any @setfilename.\n" -"--paragraph-indent VAL indent paragraphs with VAL spaces (default %d).\n" -" if VAL is `none', do not indent; if VAL is `asis',\n" -" preserve any existing indentation.\n" -"--reference-limit NUM complain about at most NUM references (default %d).\n" -"--verbose report about what is being done.\n" -"--version display version information and exit.\n" -"\n" -"Email bug reports to bug-texinfo@prep.ai.mit.edu.\n" -msgstr "" - -#: makeinfo/makeinfo.c:1545 -#, c-format -msgid "%s: getwd: %s, %s\n" -msgstr "" - -#: makeinfo/makeinfo.c:1741 -#, c-format -msgid "Expected `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:2072 -#, c-format -msgid "No `%s' found in `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:2122 -#, c-format -msgid "%s: Skipping macro expansion to stdout as Info output is going there.\n" -msgstr "" - -#: makeinfo/makeinfo.c:2141 -#, c-format -msgid "Making %s file `%s' from `%s'.\n" -msgstr "" - -#: makeinfo/makeinfo.c:2171 -#, c-format -msgid "This is Info file %s, produced by Makeinfo version %d.%d" -msgstr "" - -#: makeinfo/makeinfo.c:2173 -#, c-format -msgid " from the input file %s.\n" -msgstr "" - -#: makeinfo/makeinfo.c:2192 -#, c-format -msgid "" -"%s: Removing macro output file `%s' due to errors; use --force to preserve.\n" -msgstr "" - -#. If there were errors, and no --force, remove the output. -#: makeinfo/makeinfo.c:2224 -#, c-format -msgid "%s: Removing output file `%s' due to errors; use --force to preserve.\n" -msgstr "" - -#. Special case. I'm not supposed to see this character by itself. -#. If I do, it means there is a syntax error in the input text. -#. Report the error here, but remember this brace on the stack so -#. you can ignore its partner. -#: makeinfo/makeinfo.c:2364 makeinfo/makeinfo.c:7624 -#, c-format -msgid "Misplaced %c" -msgstr "" - -#: makeinfo/makeinfo.c:2451 -#, c-format -msgid "Unknown command `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:2471 -msgid "NO_NAME!" -msgstr "" - -#: makeinfo/makeinfo.c:2485 -#, c-format -msgid "%c%s expected `{...}'" -msgstr "" - -#: makeinfo/makeinfo.c:2518 -msgid "Unmatched }" -msgstr "" - -#: makeinfo/makeinfo.c:2566 -#, c-format -msgid "%c%s missing close brace" -msgstr "" - -#: makeinfo/makeinfo.c:3362 -msgid "Broken-Type in insertion_type_pname" -msgstr "" - -#: makeinfo/makeinfo.c:3428 -msgid "Enumeration stack overflow" -msgstr "" - -#: makeinfo/makeinfo.c:3460 -#, c-format -msgid "lettering overflow, restarting at %c" -msgstr "" - -#: makeinfo/makeinfo.c:3499 -msgid "* Menu:\n" -msgstr "" - -#: makeinfo/makeinfo.c:3583 -#, c-format -msgid "%s requires an argument: the formatter for %citem" -msgstr "" - -#: makeinfo/makeinfo.c:3687 -#, c-format -msgid "`%cend' expected `%s', but saw `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:3800 -#, c-format -msgid "No matching `%cend %s'" -msgstr "" - -#: makeinfo/makeinfo.c:3939 -#, c-format -msgid "How did @%s end up in cm_special_char?\n" -msgstr "" - -#. This error message isn't perfect if the argument is multiple -#. characters, but it doesn't seem worth getting right. -#: makeinfo/makeinfo.c:3953 -#, c-format -msgid "%c%s expects `i' or `j' as argument, not `%c'" -msgstr "" - -#: makeinfo/makeinfo.c:3957 -#, c-format -msgid "%c%s expects a single character `i' or `j' as argument" -msgstr "" - -#: makeinfo/makeinfo.c:3969 -msgid "January" -msgstr "" - -#: makeinfo/makeinfo.c:3969 -msgid "February" -msgstr "" - -#: makeinfo/makeinfo.c:3969 -msgid "March" -msgstr "" - -#: makeinfo/makeinfo.c:3969 -msgid "April" -msgstr "" - -#: makeinfo/makeinfo.c:3969 -msgid "May" -msgstr "" - -#: makeinfo/makeinfo.c:3970 -msgid "June" -msgstr "" - -#: makeinfo/makeinfo.c:3970 -msgid "July" -msgstr "" - -#: makeinfo/makeinfo.c:3970 -msgid "August" -msgstr "" - -#: makeinfo/makeinfo.c:3970 -msgid "September" -msgstr "" - -#: makeinfo/makeinfo.c:3970 -msgid "October" -msgstr "" - -#: makeinfo/makeinfo.c:3971 -msgid "November" -msgstr "" - -#: makeinfo/makeinfo.c:3971 -msgid "December" -msgstr "" - -#: makeinfo/makeinfo.c:3976 -#, c-format -msgid "%d %s %d" -msgstr "" - -#: makeinfo/makeinfo.c:4029 -#, c-format -msgid "%c%s expects a single character as an argument" -msgstr "" - -#: makeinfo/makeinfo.c:4143 -#, c-format -msgid "%c%s is obsolete" -msgstr "" - -#: makeinfo/makeinfo.c:4315 -#, c-format -msgid "There already is a node having %ctop as a section" -msgstr "" - -#: makeinfo/makeinfo.c:4327 -#, c-format -msgid "Here is the %ctop node" -msgstr "" - -#: makeinfo/makeinfo.c:4346 -#, c-format -msgid "%ctop used before %cnode, defaulting to %s" -msgstr "" - -#: makeinfo/makeinfo.c:4421 -#, c-format -msgid "%c%s is obsolete; use %c%s instead" -msgstr "" - -#: makeinfo/makeinfo.c:4670 -#, c-format -msgid "Node `%s' multiply defined (line %d is first definition at)" -msgstr "" - -#: makeinfo/makeinfo.c:4743 -#, c-format -msgid "Formatting node %s...\n" -msgstr "" - -#: makeinfo/makeinfo.c:4792 -#, c-format -msgid "Node `%s' requires a sectioning command (e.g. %c%s)" -msgstr "" - -#: makeinfo/makeinfo.c:5075 -#, c-format -msgid "Node `%s''s Next field not pointed back to" -msgstr "" - -#: makeinfo/makeinfo.c:5080 -#, c-format -msgid "This node (`%s') is the one with the bad `Prev'" -msgstr "" - -#: makeinfo/makeinfo.c:5120 -#, c-format -msgid "Node `%s's Prev field not pointed back to" -msgstr "" - -#: makeinfo/makeinfo.c:5124 -#, c-format -msgid "This node (`%s') has the bad Next" -msgstr "" - -#: makeinfo/makeinfo.c:5136 -#, c-format -msgid "Node `%s' missing Up field" -msgstr "" - -#: makeinfo/makeinfo.c:5176 -#, c-format -msgid "`%s' has an Up field of `%s', but `%s' has no menu item for `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:5207 -#, c-format -msgid "node `%s' has been referenced %d times" -msgstr "" - -#: makeinfo/makeinfo.c:5219 -#, c-format -msgid "unreferenced node `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:5246 -#, c-format -msgid "%s reference to nonexistent node `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:5658 makeinfo/makeinfo.c:5670 -#, c-format -msgid "%cmenu seen before first node" -msgstr "" - -#: makeinfo/makeinfo.c:5659 makeinfo/makeinfo.c:5671 -msgid "creating `Top' node" -msgstr "" - -#: makeinfo/makeinfo.c:5784 -#, c-format -msgid "`.' or `,' must follow cross reference, not %c" -msgstr "" - -#: makeinfo/makeinfo.c:5952 -#, c-format -msgid "@image file `%s' unreadable: %s" -msgstr "" - -#: makeinfo/makeinfo.c:5956 -msgid "@image missing filename argument" -msgstr "" - -#: makeinfo/makeinfo.c:6057 -#, c-format -msgid "%s requires letter or digit" -msgstr "" - -#: makeinfo/makeinfo.c:6142 -#, c-format -msgid "Unmatched `%c%s'" -msgstr "" - -#: makeinfo/makeinfo.c:6149 -#, c-format -msgid "`%c%s' needs something after it" -msgstr "" - -#: makeinfo/makeinfo.c:6155 -#, c-format -msgid "Bad argument to `%s', `%s', using `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:6328 -#, c-format -msgid "{No Value For \"%s\"}" -msgstr "" - -#: makeinfo/makeinfo.c:6378 -#, c-format -msgid "%c%s requires a name" -msgstr "" - -#: makeinfo/makeinfo.c:6486 -#, c-format -msgid "Reached eof before matching @end %s" -msgstr "" - -#: makeinfo/makeinfo.c:6715 -#, c-format -msgid "The `%c%s' command is meaningless within a `@%s' block" -msgstr "" - -#: makeinfo/makeinfo.c:6724 -#, c-format -msgid "%citemx is not meaningful inside of a `%s' block" -msgstr "" - -#: makeinfo/makeinfo.c:6837 -#, c-format -msgid "%c%s found outside of an insertion block" -msgstr "" - -#: makeinfo/makeinfo.c:6928 -#, c-format -msgid "Missing `}' in %cdef arg" -msgstr "" - -#: makeinfo/makeinfo.c:7137 makeinfo/makeinfo.c:7157 -msgid "Function" -msgstr "" - -#: makeinfo/makeinfo.c:7141 -msgid "Macro" -msgstr "" - -#: makeinfo/makeinfo.c:7145 -msgid "Special Form" -msgstr "" - -#: makeinfo/makeinfo.c:7149 makeinfo/makeinfo.c:7161 -msgid "Variable" -msgstr "" - -#: makeinfo/makeinfo.c:7153 -msgid "User Option" -msgstr "" - -#: makeinfo/makeinfo.c:7165 -msgid "Instance Variable" -msgstr "" - -#: makeinfo/makeinfo.c:7169 makeinfo/makeinfo.c:7173 -msgid "Method" -msgstr "" - -#: makeinfo/makeinfo.c:7330 -#, c-format -msgid "Must be in a `%s' insertion in order to use `%s'x" -msgstr "" - -#: makeinfo/makeinfo.c:7402 -#, c-format -msgid "%csp requires a positive numeric argument" -msgstr "" - -#: makeinfo/makeinfo.c:7645 -msgid "asis" -msgstr "" - -#: makeinfo/makeinfo.c:7647 -msgid "none" -msgstr "" - -#: makeinfo/makeinfo.c:7669 -#, c-format -msgid "Bad argument to %c%s" -msgstr "" - -#: makeinfo/makeinfo.c:7961 -#, c-format -msgid "Unknown index `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:8026 -#, c-format -msgid "Index `%s' already exists" -msgstr "" - -#: makeinfo/makeinfo.c:8057 -#, c-format -msgid "Unknown index `%s' and/or `%s' in @synindex" -msgstr "" - -#: makeinfo/makeinfo.c:8246 -#, c-format -msgid "Unknown index `%s' in @printindex" -msgstr "" - -#: makeinfo/makeinfo.c:8261 -msgid "" -"* Menu:\n" -"\n" -msgstr "" - -#: makeinfo/makeinfo.c:8448 -#, c-format -msgid "`%c%s' needs an argument `{...}', not just `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:8463 -#, c-format -msgid "No closing brace for footnote `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:8502 -msgid "Footnote defined without parent node" -msgstr "" - -#: makeinfo/makeinfo.c:8534 -msgid "-Footnotes" -msgstr "" - -#: makeinfo/makeinfo.c:8589 -msgid "" -"---------- Footnotes ----------\n" -"\n" -msgstr "" - -#: makeinfo/makeinfo.c:8685 -#, c-format -msgid "macro `%s' previously defined" -msgstr "" - -#: makeinfo/makeinfo.c:8689 -#, c-format -msgid "here is the previous definition of `%s'" -msgstr "" - -#: makeinfo/makeinfo.c:8903 -#, c-format -msgid "Macro `%s' called with too many args" -msgstr "" - -#: makeinfo/makeinfo.c:9055 -#, c-format -msgid "%cend macro not found" -msgstr "" - -#: makeinfo/makeinfo.c:9095 -#, c-format -msgid "%cquote-arg only useful when the macro takes a single argument" -msgstr "" - -#: makeinfo/multi.c:206 -#, c-format -msgid "ignoring stray text `%s' after @multitable" -msgstr "" - -#: makeinfo/multi.c:277 -#, c-format -msgid "Too many columns in multitable item (max %d)" -msgstr "" - -#. impossible, I think. -#: makeinfo/multi.c:304 -msgid "multitable item not in active multitable" -msgstr "" - -#: makeinfo/multi.c:313 -#, c-format -msgid "Cannot select column #%d in multitable" -msgstr "" - -#: makeinfo/multi.c:404 -msgid "ignoring @tab outside of multitable" -msgstr "" - -#: makeinfo/multi.c:428 -msgid "** Multicolumn output from last row:\n" -msgstr "" - -#: makeinfo/multi.c:431 -#, c-format -msgid "* column #%d: output = %s\n" -msgstr "" - -#: util/install-info.c:119 util/install-info.c:132 -msgid "virtual memory exhausted" -msgstr "" - -#: util/install-info.c:188 -#, c-format -msgid "%s: warning: " -msgstr "" - -#: util/install-info.c:209 -#, c-format -msgid " for %s" -msgstr "" - -#: util/install-info.c:278 -#, c-format -msgid "\tTry `%s --help' for a complete list of options.\n" -msgstr "" - -#: util/install-info.c:286 -#, c-format -msgid "" -"%s [OPTION]... [INFO-FILE [DIR-FILE]]\n" -" Install INFO-FILE in the Info directory file DIR-FILE.\n" -"\n" -"Options:\n" -"--delete Delete existing entries in INFO-FILE;\n" -" don't insert any new entries.\n" -"--dir-file=NAME Specify file name of Info directory file.\n" -" This is equivalent to using the DIR-FILE argument.\n" -"--entry=TEXT Insert TEXT as an Info directory entry.\n" -" TEXT should have the form of an Info menu item line\n" -" plus zero or more extra lines starting with whitespace.\n" -" If you specify more than one entry, they are all added.\n" -" If you don't specify any entries, they are determined\n" -" from information in the Info file itself.\n" -"--help Display this help and exit.\n" -"--info-file=FILE Specify Info file to install in the directory.\n" -" This is equivalent to using the INFO-FILE argument.\n" -"--info-dir=DIR Same as --dir-file=DIR/dir.\n" -"--item=TEXT Same as --entry TEXT.\n" -" An Info directory entry is actually a menu item.\n" -"--quiet Suppress warnings.\n" -"--remove Same as --delete.\n" -"--section=SEC Put this file's entries in section SEC of the directory.\n" -" If you specify more than one section, all the entries\n" -" are added in each of the sections.\n" -" If you don't specify any sections, they are determined\n" -" from information in the Info file itself.\n" -"--version Display version information and exit.\n" -"\n" -"Email bug reports to bug-texinfo@prep.ai.mit.edu.\n" -msgstr "" - -#: util/install-info.c:334 -msgid "" -"This is the file .../info/dir, which contains the\n" -"topmost node of the Info hierarchy, called (dir)Top.\n" -"The first time you invoke Info you start off looking at this node.\n" -"\n" -"File: dir Node: Top This is the top of the INFO tree\n" -"\n" -" This (the Directory node) gives a menu of major topics.\n" -" Typing \"q\" exits, \"?\" lists all Info commands, \"d\" returns here,\n" -" \"h\" gives a primer for first-timers,\n" -" \"mEmacs<Return>\" visits the Emacs manual, etc.\n" -"\n" -" In Emacs, you can click mouse button 2 on a menu item or cross reference\n" -" to select it.\n" -"\n" -"* Menu:\n" -msgstr "" - -#: util/install-info.c:357 -#, c-format -msgid "%s: could not read (%s) and could not create (%s)\n" -msgstr "" - -#: util/install-info.c:456 util/install-info.c:466 -#, c-format -msgid "%s: Specify the Info directory only once.\n" -msgstr "" - -#: util/install-info.c:494 -#, c-format -msgid "%s: Specify the Info file only once.\n" -msgstr "" - -#: util/install-info.c:521 -#, c-format -msgid "install-info (GNU %s) %s\n" -msgstr "" - -#: util/install-info.c:541 -#, c-format -msgid "excess command line argument `%s'" -msgstr "" - -#: util/install-info.c:545 -msgid "No input file specified; try --help for more information." -msgstr "" - -#: util/install-info.c:547 -msgid "No dir file specified; try --help for more information." -msgstr "" - -#: util/install-info.c:599 util/install-info.c:622 -msgid "START-INFO-DIR-ENTRY without matching END-INFO-DIR-ENTRY" -msgstr "" - -#: util/install-info.c:618 -msgid "END-INFO-DIR-ENTRY without matching START-INFO-DIR-ENTRY" -msgstr "" - -#. No need to abort here, the original info file may not have -#. the requisite Texinfo commands. This is not something an -#. installer should have to correct (it's a problem for the -#. maintainer), and there's no need to cause subsequent parts of -#. `make install' to fail. -#: util/install-info.c:632 -#, c-format -msgid "no info dir entry in `%s'" -msgstr "" - -#: util/install-info.c:843 -#, c-format -msgid "menu item `%s' already exists, for file `%s'" -msgstr "" - -#: util/install-info.c:866 -#, c-format -msgid "no entries found for `%s'; nothing deleted" -msgstr "" - -#: util/texindex.c:263 -msgid "keep temporary files around after processing" -msgstr "" - -#: util/texindex.c:265 -msgid "do not keep temporary files around after processing (default)" -msgstr "" - -#: util/texindex.c:267 -msgid "send output to FILE" -msgstr "" - -#: util/texindex.c:269 -msgid "display version information and exit" -msgstr "" - -#: util/texindex.c:271 -msgid "display this help and exit" -msgstr "" - -#: util/texindex.c:282 -#, c-format -msgid "Usage: %s [OPTION]... FILE...\n" -msgstr "" - -#: util/texindex.c:283 -msgid "Generate a sorted index for each TeX output FILE.\n" -msgstr "" - -#. Avoid trigraph nonsense. -#: util/texindex.c:285 -msgid "Usually FILE... is `foo.??' for a document `foo.texi'.\n" -msgstr "" - -#: util/texindex.c:286 -msgid "" -"\n" -"Options:\n" -msgstr "" - -#: util/texindex.c:300 -msgid "" -"\n" -"Email bug reports to bug-texinfo@prep.ai.mit.edu." -msgstr "" - -#: util/texindex.c:347 -#, c-format -msgid "texindex (GNU %s %s) 2.1\n" -msgstr "" - -#: util/texindex.c:926 util/texindex.c:960 util/texindex.c:1036 -#: util/texindex.c:1064 -#, c-format -msgid "%s: not a texinfo index file" -msgstr "" - -#: util/texindex.c:1021 -#, c-format -msgid "failure reopening %s" -msgstr "" - -#: util/texindex.c:1334 -#, c-format -msgid "entry %s follows an entry with a secondary name" -msgstr "" - -#: util/texindex.c:1672 -#, c-format -msgid "%s; for file `%s'.\n" -msgstr "" - -#: util/texindex.c:1733 -#, c-format -msgid "Virtual memory exhausted in %s ()! Needed %d bytes." -msgstr "" diff --git a/texinfo/testsuite/ChangeLog b/texinfo/testsuite/ChangeLog deleted file mode 100644 index 72366e2db68..00000000000 --- a/texinfo/testsuite/ChangeLog +++ /dev/null @@ -1,37 +0,0 @@ -Thu Oct 3 15:31:09 1996 Jason Molenda (crash@godzilla.cygnus.co.jp) - - * Makefile.in (clean): Move config.log to distclean. - -Wed Oct 2 16:01:58 1996 Jason Molenda (crash@godzilla.cygnus.co.jp) - - * configure.in: Switch to autoconf configure.in - * configure: New. - * Makefile.in: Use autoconf-substituted values. - (clean): Remove config.log. - (distclean): Remove config.cache. - -Tue May 17 15:49:09 1994 Bill Cox (bill@rtl.cygnus.com) - - * config/unix.exp: Replace error proc calls with perror calls. - -Mon Apr 11 17:37:09 1994 Bill Cox (bill@rtl.cygnus.com) - - * Makefile.in (EXPECT, RUNTEST): Set these for the check goal. - -Mon Apr 11 10:31:00 1994 Bill Cox (bill@rtl.cygnus.com) - - * Makefile.in (check): Set TCL_LIBRARY for runtest. - -Fri Jun 18 23:16:04 1993 Jim Kingdon (kingdon@lioth.cygnus.com) - - * makeinfo.0/atnode.exp, text/atnode.texi: Add test for at sign - in node name. - -Wed May 19 13:02:59 1993 Jim Kingdon (kingdon@cygnus.com) - - * makeinfo.0/conditions.exp, text/conditions.texi: Add test for bug - currently being worked around in GDB manual. - -May 1993 Roland Pesch (pesch@cygnus.com) - - * New directory. diff --git a/texinfo/testsuite/Makefile.in b/texinfo/testsuite/Makefile.in deleted file mode 100644 index 4920a6290c0..00000000000 --- a/texinfo/testsuite/Makefile.in +++ /dev/null @@ -1,100 +0,0 @@ -# Makefile for regression testing GNU texinfo. -# Copyright (C) 1987, 88, 90, 91, 92, 93, 1994 Free Software Foundation, Inc. - -#This file is part of GNU texinfo. - -#texinfo is free software; you can redistribute it and/or modify -#it under the terms of the GNU General Public License as published by -#the Free Software Foundation; either version 2, or (at your option) -#any later version. - -#texinfo is distributed in the hope that it will be useful, -#but WITHOUT ANY WARRANTY; without even the implied warranty of -#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -#GNU General Public License for more details. - -#You should have received a copy of the GNU General Public License -#along with GNU CC; see the file COPYING. If not, write to -#the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -srcdir = @srcdir@ -VPATH = @srcdir@ - -prefix = @prefix@ - -exec_prefix = @exec_prefix@ -bindir = @bindir@ -libdir = @libdir@ -tooldir = $(libdir)/$(target_alias) - -datadir = @datadir@/deja-gnu - -EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; \ - then echo $${rootme}/../../expect/expect ; \ - else echo expect; fi` - -RUNTEST = `if [ -f ${srcdir}/../../dejagnu/runtest ] ; \ - then echo ${srcdir}/../../dejagnu/runtest ; \ - else echo runtest ; fi` -RUNTESTFLAGS = -FLAGS_TO_PASS = - -#### host, target, and site specific Makefile frags come in here. - -all: - -info: - -install-info: - -check: site.exp all - rootme=`pwd`; export rootme; \ - srcdir=${srcdir} ; export srcdir ; \ - EXPECT=${EXPECT} ; export EXPECT ; \ - if [ -f $${rootme}/../../expect/expect ] ; then \ - TCL_LIBRARY=$${srcdir}/../../tcl/library ; \ - export TCL_LIBRARY ; fi ; \ - $(RUNTEST) $(RUNTESTFLAGS) $(FLAGS_TO_PASS) --tool makeinfo \ - --srcdir $(srcdir) --target $(target_canonical) - -site.exp: ./config.status Makefile - @echo "Making a new config file..." - -@rm -f ./tmp? - @touch site.exp - - -@mv site.exp site.bak - @echo "## these variables are automatically generated by make ##" > ./tmp0 - @echo "# Do not edit here. If you wish to override these values" >> ./tmp0 - @echo "# add them to the last section" >> ./tmp0 - @echo "set host_os ${host_os}" >> ./tmp0 - @echo "set host_alias ${host_alias}" >> ./tmp0 - @echo "set host_cpu ${host_cpu}" >> ./tmp0 - @echo "set host_vendor ${host_vendor}" >> ./tmp0 - @echo "set target_os ${target_os}" >> ./tmp0 - @echo "set target_alias ${target_alias}" >> ./tmp0 - @echo "set target_cpu ${target_cpu}" >> ./tmp0 - @echo "set target_vendor ${target_vendor}" >> ./tmp0 - @echo "set host_triplet ${host_canonical}" >> ./tmp0 - @echo "set target_triplet ${target_canonical}" >> ./tmp0 - @echo "set tool binutils" >> ./tmp0 - @echo "set srcdir ${srcdir}" >> ./tmp0 - @echo "set objdir `pwd`" >> ./tmp0 - @echo "set MAKEINFO makeinfo" >> ./tmp0 - @echo "## All variables above are generated by configure. Do Not Edit ##" >> ./tmp0 - @cat ./tmp0 > site.exp - @cat site.bak | sed \ - -e '1,/^## All variables above are.*##/ d' >> site.exp - -@rm -f ./tmp? - -install: -uninstall: - -clean: - -rm -f *~ */*~ core *.info* *.log *.sum *.plog *.psum - -distclean: clean - -rm -f Makefile config.status site.exp config.cache config.log - -Makefile : $(srcdir)/Makefile.in $(host_makefile_frag) $(target_makefile_frag) - $(SHELL) ./config.status - diff --git a/texinfo/testsuite/config/unix.exp b/texinfo/testsuite/config/unix.exp deleted file mode 100644 index 12b38ba0ec6..00000000000 --- a/texinfo/testsuite/config/unix.exp +++ /dev/null @@ -1,29 +0,0 @@ -load_lib utils.exp ;# Get the file of utilities for Texinfo tests - -default MAKEINFO makeinfo ;# ensure Tcl var MAKEINFO has value - -# Ensure we can execute this tool -if [is_executable $MAKEINFO] then { - verbose "$MAKEINFO is executable\n" 1 -} else { - perror "$MAKEINFO: cannot execute\n" - exit 1 ;# no point in running any makeinfo tests -} - -# makeinfo_start undefined by choice; -# 1) it makes it clearer where the output is to start -# $MAKEINFO directly with `catch' from each test case, -# and -# 2) this takes no more lines than it would to call makeinfo_start - -proc makeinfo_exit {} {} - -proc makeinfo_version {} { - global MAKEINFO - set tmp [ exec $MAKEINFO --version ] - regexp "version.*$" $tmp vn ;# "vn" undef if pattern not found - if [info exists vn] then { - clone_output "[which $MAKEINFO] $vn\n" - } -} - diff --git a/texinfo/testsuite/configure b/texinfo/testsuite/configure deleted file mode 100755 index 48290d071e2..00000000000 --- a/texinfo/testsuite/configure +++ /dev/null @@ -1,772 +0,0 @@ -#! /bin/sh - -# Guess values for system-dependent variables and create Makefiles. -# Generated automatically using autoconf version 2.12.1 -# Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc. -# -# This configure script is free software; the Free Software Foundation -# gives unlimited permission to copy, distribute and modify it. - -# Defaults: -ac_help= -ac_default_prefix=/usr/local -# Any additions from configure.in: - -# Initialize some variables set by options. -# The variables have the same names as the options, with -# dashes changed to underlines. -build=NONE -cache_file=./config.cache -exec_prefix=NONE -host=NONE -no_create= -nonopt=NONE -no_recursion= -prefix=NONE -program_prefix=NONE -program_suffix=NONE -program_transform_name=s,x,x, -silent= -site= -srcdir= -target=NONE -verbose= -x_includes=NONE -x_libraries=NONE -bindir='${exec_prefix}/bin' -sbindir='${exec_prefix}/sbin' -libexecdir='${exec_prefix}/libexec' -datadir='${prefix}/share' -sysconfdir='${prefix}/etc' -sharedstatedir='${prefix}/com' -localstatedir='${prefix}/var' -libdir='${exec_prefix}/lib' -includedir='${prefix}/include' -oldincludedir='/usr/include' -infodir='${prefix}/info' -mandir='${prefix}/man' - -# Initialize some other variables. -subdirs= -MFLAGS= MAKEFLAGS= -SHELL=${CONFIG_SHELL-/bin/sh} -# Maximum number of lines to put in a shell here document. -ac_max_here_lines=12 - -ac_prev= -for ac_option -do - - # If the previous option needs an argument, assign it. - if test -n "$ac_prev"; then - eval "$ac_prev=\$ac_option" - ac_prev= - continue - fi - - case "$ac_option" in - -*=*) ac_optarg=`echo "$ac_option" | sed 's/[-_a-zA-Z0-9]*=//'` ;; - *) ac_optarg= ;; - esac - - # Accept the important Cygnus configure options, so we can diagnose typos. - - case "$ac_option" in - - -bindir | --bindir | --bindi | --bind | --bin | --bi) - ac_prev=bindir ;; - -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) - bindir="$ac_optarg" ;; - - -build | --build | --buil | --bui | --bu) - ac_prev=build ;; - -build=* | --build=* | --buil=* | --bui=* | --bu=*) - build="$ac_optarg" ;; - - -cache-file | --cache-file | --cache-fil | --cache-fi \ - | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) - ac_prev=cache_file ;; - -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ - | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) - cache_file="$ac_optarg" ;; - - -datadir | --datadir | --datadi | --datad | --data | --dat | --da) - ac_prev=datadir ;; - -datadir=* | --datadir=* | --datadi=* | --datad=* | --data=* | --dat=* \ - | --da=*) - datadir="$ac_optarg" ;; - - -disable-* | --disable-*) - ac_feature=`echo $ac_option|sed -e 's/-*disable-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - eval "enable_${ac_feature}=no" ;; - - -enable-* | --enable-*) - ac_feature=`echo $ac_option|sed -e 's/-*enable-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_feature| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_feature: invalid feature name" 1>&2; exit 1; } - fi - ac_feature=`echo $ac_feature| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "enable_${ac_feature}='$ac_optarg'" ;; - - -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ - | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ - | --exec | --exe | --ex) - ac_prev=exec_prefix ;; - -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ - | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ - | --exec=* | --exe=* | --ex=*) - exec_prefix="$ac_optarg" ;; - - -gas | --gas | --ga | --g) - # Obsolete; use --with-gas. - with_gas=yes ;; - - -help | --help | --hel | --he) - # Omit some internal or obsolete options to make the list less imposing. - # This message is too long to be a string in the A/UX 3.1 sh. - cat << EOF -Usage: configure [options] [host] -Options: [defaults in brackets after descriptions] -Configuration: - --cache-file=FILE cache test results in FILE - --help print this message - --no-create do not create output files - --quiet, --silent do not print \`checking...' messages - --version print the version of autoconf that created configure -Directory and file names: - --prefix=PREFIX install architecture-independent files in PREFIX - [$ac_default_prefix] - --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX - [same as prefix] - --bindir=DIR user executables in DIR [EPREFIX/bin] - --sbindir=DIR system admin executables in DIR [EPREFIX/sbin] - --libexecdir=DIR program executables in DIR [EPREFIX/libexec] - --datadir=DIR read-only architecture-independent data in DIR - [PREFIX/share] - --sysconfdir=DIR read-only single-machine data in DIR [PREFIX/etc] - --sharedstatedir=DIR modifiable architecture-independent data in DIR - [PREFIX/com] - --localstatedir=DIR modifiable single-machine data in DIR [PREFIX/var] - --libdir=DIR object code libraries in DIR [EPREFIX/lib] - --includedir=DIR C header files in DIR [PREFIX/include] - --oldincludedir=DIR C header files for non-gcc in DIR [/usr/include] - --infodir=DIR info documentation in DIR [PREFIX/info] - --mandir=DIR man documentation in DIR [PREFIX/man] - --srcdir=DIR find the sources in DIR [configure dir or ..] - --program-prefix=PREFIX prepend PREFIX to installed program names - --program-suffix=SUFFIX append SUFFIX to installed program names - --program-transform-name=PROGRAM - run sed PROGRAM on installed program names -EOF - cat << EOF -Host type: - --build=BUILD configure for building on BUILD [BUILD=HOST] - --host=HOST configure for HOST [guessed] - --target=TARGET configure for TARGET [TARGET=HOST] -Features and packages: - --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) - --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] - --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) - --x-includes=DIR X include files are in DIR - --x-libraries=DIR X library files are in DIR -EOF - if test -n "$ac_help"; then - echo "--enable and --with options recognized:$ac_help" - fi - exit 0 ;; - - -host | --host | --hos | --ho) - ac_prev=host ;; - -host=* | --host=* | --hos=* | --ho=*) - host="$ac_optarg" ;; - - -includedir | --includedir | --includedi | --included | --include \ - | --includ | --inclu | --incl | --inc) - ac_prev=includedir ;; - -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ - | --includ=* | --inclu=* | --incl=* | --inc=*) - includedir="$ac_optarg" ;; - - -infodir | --infodir | --infodi | --infod | --info | --inf) - ac_prev=infodir ;; - -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) - infodir="$ac_optarg" ;; - - -libdir | --libdir | --libdi | --libd) - ac_prev=libdir ;; - -libdir=* | --libdir=* | --libdi=* | --libd=*) - libdir="$ac_optarg" ;; - - -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ - | --libexe | --libex | --libe) - ac_prev=libexecdir ;; - -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ - | --libexe=* | --libex=* | --libe=*) - libexecdir="$ac_optarg" ;; - - -localstatedir | --localstatedir | --localstatedi | --localstated \ - | --localstate | --localstat | --localsta | --localst \ - | --locals | --local | --loca | --loc | --lo) - ac_prev=localstatedir ;; - -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ - | --localstate=* | --localstat=* | --localsta=* | --localst=* \ - | --locals=* | --local=* | --loca=* | --loc=* | --lo=*) - localstatedir="$ac_optarg" ;; - - -mandir | --mandir | --mandi | --mand | --man | --ma | --m) - ac_prev=mandir ;; - -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) - mandir="$ac_optarg" ;; - - -nfp | --nfp | --nf) - # Obsolete; use --without-fp. - with_fp=no ;; - - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) - no_create=yes ;; - - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) - no_recursion=yes ;; - - -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ - | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ - | --oldin | --oldi | --old | --ol | --o) - ac_prev=oldincludedir ;; - -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ - | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ - | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) - oldincludedir="$ac_optarg" ;; - - -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) - ac_prev=prefix ;; - -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) - prefix="$ac_optarg" ;; - - -program-prefix | --program-prefix | --program-prefi | --program-pref \ - | --program-pre | --program-pr | --program-p) - ac_prev=program_prefix ;; - -program-prefix=* | --program-prefix=* | --program-prefi=* \ - | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) - program_prefix="$ac_optarg" ;; - - -program-suffix | --program-suffix | --program-suffi | --program-suff \ - | --program-suf | --program-su | --program-s) - ac_prev=program_suffix ;; - -program-suffix=* | --program-suffix=* | --program-suffi=* \ - | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) - program_suffix="$ac_optarg" ;; - - -program-transform-name | --program-transform-name \ - | --program-transform-nam | --program-transform-na \ - | --program-transform-n | --program-transform- \ - | --program-transform | --program-transfor \ - | --program-transfo | --program-transf \ - | --program-trans | --program-tran \ - | --progr-tra | --program-tr | --program-t) - ac_prev=program_transform_name ;; - -program-transform-name=* | --program-transform-name=* \ - | --program-transform-nam=* | --program-transform-na=* \ - | --program-transform-n=* | --program-transform-=* \ - | --program-transform=* | --program-transfor=* \ - | --program-transfo=* | --program-transf=* \ - | --program-trans=* | --program-tran=* \ - | --progr-tra=* | --program-tr=* | --program-t=*) - program_transform_name="$ac_optarg" ;; - - -q | -quiet | --quiet | --quie | --qui | --qu | --q \ - | -silent | --silent | --silen | --sile | --sil) - silent=yes ;; - - -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) - ac_prev=sbindir ;; - -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ - | --sbi=* | --sb=*) - sbindir="$ac_optarg" ;; - - -sharedstatedir | --sharedstatedir | --sharedstatedi \ - | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ - | --sharedst | --shareds | --shared | --share | --shar \ - | --sha | --sh) - ac_prev=sharedstatedir ;; - -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ - | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ - | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ - | --sha=* | --sh=*) - sharedstatedir="$ac_optarg" ;; - - -site | --site | --sit) - ac_prev=site ;; - -site=* | --site=* | --sit=*) - site="$ac_optarg" ;; - - -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) - ac_prev=srcdir ;; - -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) - srcdir="$ac_optarg" ;; - - -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ - | --syscon | --sysco | --sysc | --sys | --sy) - ac_prev=sysconfdir ;; - -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ - | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) - sysconfdir="$ac_optarg" ;; - - -target | --target | --targe | --targ | --tar | --ta | --t) - ac_prev=target ;; - -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) - target="$ac_optarg" ;; - - -v | -verbose | --verbose | --verbos | --verbo | --verb) - verbose=yes ;; - - -version | --version | --versio | --versi | --vers) - echo "configure generated by autoconf version 2.12.1" - exit 0 ;; - - -with-* | --with-*) - ac_package=`echo $ac_option|sed -e 's/-*with-//' -e 's/=.*//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-_a-zA-Z0-9]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - case "$ac_option" in - *=*) ;; - *) ac_optarg=yes ;; - esac - eval "with_${ac_package}='$ac_optarg'" ;; - - -without-* | --without-*) - ac_package=`echo $ac_option|sed -e 's/-*without-//'` - # Reject names that are not valid shell variable names. - if test -n "`echo $ac_package| sed 's/[-a-zA-Z0-9_]//g'`"; then - { echo "configure: error: $ac_package: invalid package name" 1>&2; exit 1; } - fi - ac_package=`echo $ac_package| sed 's/-/_/g'` - eval "with_${ac_package}=no" ;; - - --x) - # Obsolete; use --with-x. - with_x=yes ;; - - -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ - | --x-incl | --x-inc | --x-in | --x-i) - ac_prev=x_includes ;; - -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ - | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) - x_includes="$ac_optarg" ;; - - -x-libraries | --x-libraries | --x-librarie | --x-librari \ - | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) - ac_prev=x_libraries ;; - -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ - | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) - x_libraries="$ac_optarg" ;; - - -*) { echo "configure: error: $ac_option: invalid option; use --help to show usage" 1>&2; exit 1; } - ;; - - *) - if test -n "`echo $ac_option| sed 's/[-a-z0-9.]//g'`"; then - echo "configure: warning: $ac_option: invalid host type" 1>&2 - fi - if test "x$nonopt" != xNONE; then - { echo "configure: error: can only configure for one host and one target at a time" 1>&2; exit 1; } - fi - nonopt="$ac_option" - ;; - - esac -done - -if test -n "$ac_prev"; then - { echo "configure: error: missing argument to --`echo $ac_prev | sed 's/_/-/g'`" 1>&2; exit 1; } -fi - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -# File descriptor usage: -# 0 standard input -# 1 file creation -# 2 errors and warnings -# 3 some systems may open it to /dev/tty -# 4 used on the Kubota Titan -# 6 checking for... messages and results -# 5 compiler messages saved in config.log -if test "$silent" = yes; then - exec 6>/dev/null -else - exec 6>&1 -fi -exec 5>./config.log - -echo "\ -This file contains any messages produced by compilers while -running configure, to aid debugging if configure makes a mistake. -" 1>&5 - -# Strip out --no-create and --no-recursion so they do not pile up. -# Also quote any args containing shell metacharacters. -ac_configure_args= -for ac_arg -do - case "$ac_arg" in - -no-create | --no-create | --no-creat | --no-crea | --no-cre \ - | --no-cr | --no-c) ;; - -no-recursion | --no-recursion | --no-recursio | --no-recursi \ - | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) ;; - *" "*|*" "*|*[\[\]\~\#\$\^\&\*\(\)\{\}\\\|\;\<\>\?]*) - ac_configure_args="$ac_configure_args '$ac_arg'" ;; - *) ac_configure_args="$ac_configure_args $ac_arg" ;; - esac -done - -# NLS nuisances. -# Only set these to C if already set. These must not be set unconditionally -# because not all systems understand e.g. LANG=C (notably SCO). -# Fixing LC_MESSAGES prevents Solaris sh from translating var values in `set'! -# Non-C LC_CTYPE values break the ctype check. -if test "${LANG+set}" = set; then LANG=C; export LANG; fi -if test "${LC_ALL+set}" = set; then LC_ALL=C; export LC_ALL; fi -if test "${LC_MESSAGES+set}" = set; then LC_MESSAGES=C; export LC_MESSAGES; fi -if test "${LC_CTYPE+set}" = set; then LC_CTYPE=C; export LC_CTYPE; fi - -# confdefs.h avoids OS command line length limits that DEFS can exceed. -rm -rf conftest* confdefs.h -# AIX cpp loses on an empty file, so make sure it contains at least a newline. -echo > confdefs.h - -# A filename unique to this package, relative to the directory that -# configure is in, which we can look for to find out if srcdir is correct. -ac_unique_file=makeinfo.0/atnode.exp - -# Find the source files, if location was not specified. -if test -z "$srcdir"; then - ac_srcdir_defaulted=yes - # Try the directory containing this script, then its parent. - ac_prog=$0 - ac_confdir=`echo $ac_prog|sed 's%/[^/][^/]*$%%'` - test "x$ac_confdir" = "x$ac_prog" && ac_confdir=. - srcdir=$ac_confdir - if test ! -r $srcdir/$ac_unique_file; then - srcdir=.. - fi -else - ac_srcdir_defaulted=no -fi -if test ! -r $srcdir/$ac_unique_file; then - if test "$ac_srcdir_defaulted" = yes; then - { echo "configure: error: can not find sources in $ac_confdir or .." 1>&2; exit 1; } - else - { echo "configure: error: can not find sources in $srcdir" 1>&2; exit 1; } - fi -fi -srcdir=`echo "${srcdir}" | sed 's%\([^/]\)/*$%\1%'` - -# Prefer explicitly selected file to automatically selected ones. -if test -z "$CONFIG_SITE"; then - if test "x$prefix" != xNONE; then - CONFIG_SITE="$prefix/share/config.site $prefix/etc/config.site" - else - CONFIG_SITE="$ac_default_prefix/share/config.site $ac_default_prefix/etc/config.site" - fi -fi -for ac_site_file in $CONFIG_SITE; do - if test -r "$ac_site_file"; then - echo "loading site script $ac_site_file" - . "$ac_site_file" - fi -done - -if test -r "$cache_file"; then - echo "loading cache $cache_file" - . $cache_file -else - echo "creating cache $cache_file" - > $cache_file -fi - -ac_ext=c -# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options. -ac_cpp='$CPP $CPPFLAGS' -ac_compile='${CC-cc} -c $CFLAGS $CPPFLAGS conftest.$ac_ext 1>&5' -ac_link='${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS 1>&5' -cross_compiling=$ac_cv_prog_cc_cross - -if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then - # Stardent Vistra SVR4 grep lacks -e, says ghazi@caip.rutgers.edu. - if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then - ac_n= ac_c=' -' ac_t=' ' - else - ac_n=-n ac_c= ac_t= - fi -else - ac_n= ac_c='\c' ac_t= -fi - - - -trap '' 1 2 15 -cat > confcache <<\EOF -# This file is a shell script that caches the results of configure -# tests run on this system so they can be shared between configure -# scripts and configure runs. It is not useful on other systems. -# If it contains results you don't want to keep, you may remove or edit it. -# -# By default, configure uses ./config.cache as the cache file, -# creating it if it does not exist already. You can give configure -# the --cache-file=FILE option to use a different cache file; that is -# what configure does when it calls configure scripts in -# subdirectories, so they share the cache. -# Giving --cache-file=/dev/null disables caching, for debugging configure. -# config.status only pays attention to the cache file if you give it the -# --recheck option to rerun configure. -# -EOF -# The following way of writing the cache mishandles newlines in values, -# but we know of no workaround that is simple, portable, and efficient. -# So, don't put newlines in cache variables' values. -# Ultrix sh set writes to stderr and can't be redirected directly, -# and sets the high bit in the cache file unless we assign to the vars. -(set) 2>&1 | - case `(ac_space=' '; set) 2>&1 | grep ac_space` in - *ac_space=\ *) - # `set' does not quote correctly, so add quotes (double-quote substitution - # turns \\\\ into \\, and sed turns \\ into \). - sed -n \ - -e "s/'/'\\\\''/g" \ - -e "s/^\\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\\)=\\(.*\\)/\\1=\${\\1='\\2'}/p" - ;; - *) - # `set' quotes correctly as required by POSIX, so do not add quotes. - sed -n -e 's/^\([a-zA-Z0-9_]*_cv_[a-zA-Z0-9_]*\)=\(.*\)/\1=${\1=\2}/p' - ;; - esac >> confcache -if cmp -s $cache_file confcache; then - : -else - if test -w $cache_file; then - echo "updating cache $cache_file" - cat confcache > $cache_file - else - echo "not updating unwritable cache $cache_file" - fi -fi -rm -f confcache - -trap 'rm -fr conftest* confdefs* core core.* *.core $ac_clean_files; exit 1' 1 2 15 - -test "x$prefix" = xNONE && prefix=$ac_default_prefix -# Let make expand exec_prefix. -test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' - -# Any assignment to VPATH causes Sun make to only execute -# the first set of double-colon rules, so remove it if not needed. -# If there is a colon in the path, we need to keep it. -if test "x$srcdir" = x.; then - ac_vpsub='/^[ ]*VPATH[ ]*=[^:]*$/d' -fi - -trap 'rm -f $CONFIG_STATUS conftest*; exit 1' 1 2 15 - -# Transform confdefs.h into DEFS. -# Protect against shell expansion while executing Makefile rules. -# Protect against Makefile macro expansion. -cat > conftest.defs <<\EOF -s%#define \([A-Za-z_][A-Za-z0-9_]*\) *\(.*\)%-D\1=\2%g -s%[ `~#$^&*(){}\\|;'"<>?]%\\&%g -s%\[%\\&%g -s%\]%\\&%g -s%\$%$$%g -EOF -DEFS=`sed -f conftest.defs confdefs.h | tr '\012' ' '` -rm -f conftest.defs - - -# Without the "./", some shells look in PATH for config.status. -: ${CONFIG_STATUS=./config.status} - -echo creating $CONFIG_STATUS -rm -f $CONFIG_STATUS -cat > $CONFIG_STATUS <<EOF -#! /bin/sh -# Generated automatically by configure. -# Run this file to recreate the current configuration. -# This directory was configured as follows, -# on host `(hostname || uname -n) 2>/dev/null | sed 1q`: -# -# $0 $ac_configure_args -# -# Compiler output produced by configure, useful for debugging -# configure, is in ./config.log if it exists. - -ac_cs_usage="Usage: $CONFIG_STATUS [--recheck] [--version] [--help]" -for ac_option -do - case "\$ac_option" in - -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) - echo "running \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion" - exec \${CONFIG_SHELL-/bin/sh} $0 $ac_configure_args --no-create --no-recursion ;; - -version | --version | --versio | --versi | --vers | --ver | --ve | --v) - echo "$CONFIG_STATUS generated by autoconf version 2.12.1" - exit 0 ;; - -help | --help | --hel | --he | --h) - echo "\$ac_cs_usage"; exit 0 ;; - *) echo "\$ac_cs_usage"; exit 1 ;; - esac -done - -ac_given_srcdir=$srcdir - -trap 'rm -fr `echo "Makefile" | sed "s/:[^ ]*//g"` conftest*; exit 1' 1 2 15 -EOF -cat >> $CONFIG_STATUS <<EOF - -# Protect against being on the right side of a sed subst in config.status. -sed 's/%@/@@/; s/@%/@@/; s/%g\$/@g/; /@g\$/s/[\\\\&%]/\\\\&/g; - s/@@/%@/; s/@@/@%/; s/@g\$/%g/' > conftest.subs <<\\CEOF -$ac_vpsub -$extrasub -s%@SHELL@%$SHELL%g -s%@CFLAGS@%$CFLAGS%g -s%@CPPFLAGS@%$CPPFLAGS%g -s%@CXXFLAGS@%$CXXFLAGS%g -s%@DEFS@%$DEFS%g -s%@LDFLAGS@%$LDFLAGS%g -s%@LIBS@%$LIBS%g -s%@exec_prefix@%$exec_prefix%g -s%@prefix@%$prefix%g -s%@program_transform_name@%$program_transform_name%g -s%@bindir@%$bindir%g -s%@sbindir@%$sbindir%g -s%@libexecdir@%$libexecdir%g -s%@datadir@%$datadir%g -s%@sysconfdir@%$sysconfdir%g -s%@sharedstatedir@%$sharedstatedir%g -s%@localstatedir@%$localstatedir%g -s%@libdir@%$libdir%g -s%@includedir@%$includedir%g -s%@oldincludedir@%$oldincludedir%g -s%@infodir@%$infodir%g -s%@mandir@%$mandir%g - -CEOF -EOF - -cat >> $CONFIG_STATUS <<\EOF - -# Split the substitutions into bite-sized pieces for seds with -# small command number limits, like on Digital OSF/1 and HP-UX. -ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script. -ac_file=1 # Number of current file. -ac_beg=1 # First line for current file. -ac_end=$ac_max_sed_cmds # Line after last line for current file. -ac_more_lines=: -ac_sed_cmds="" -while $ac_more_lines; do - if test $ac_beg -gt 1; then - sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file - else - sed "${ac_end}q" conftest.subs > conftest.s$ac_file - fi - if test ! -s conftest.s$ac_file; then - ac_more_lines=false - rm -f conftest.s$ac_file - else - if test -z "$ac_sed_cmds"; then - ac_sed_cmds="sed -f conftest.s$ac_file" - else - ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file" - fi - ac_file=`expr $ac_file + 1` - ac_beg=$ac_end - ac_end=`expr $ac_end + $ac_max_sed_cmds` - fi -done -if test -z "$ac_sed_cmds"; then - ac_sed_cmds=cat -fi -EOF - -cat >> $CONFIG_STATUS <<EOF - -CONFIG_FILES=\${CONFIG_FILES-"Makefile"} -EOF -cat >> $CONFIG_STATUS <<\EOF -for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then - # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in". - case "$ac_file" in - *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'` - ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; - *) ac_file_in="${ac_file}.in" ;; - esac - - # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories. - - # Remove last slash and all that follows it. Not all systems have dirname. - ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'` - if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then - # The file is in a subdirectory. - test ! -d "$ac_dir" && mkdir "$ac_dir" - ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`" - # A "../" for each directory in $ac_dir_suffix. - ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'` - else - ac_dir_suffix= ac_dots= - fi - - case "$ac_given_srcdir" in - .) srcdir=. - if test -z "$ac_dots"; then top_srcdir=. - else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;; - /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;; - *) # Relative path. - srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix" - top_srcdir="$ac_dots$ac_given_srcdir" ;; - esac - - - echo creating "$ac_file" - rm -f "$ac_file" - configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure." - case "$ac_file" in - *Makefile*) ac_comsub="1i\\ -# $configure_input" ;; - *) ac_comsub= ;; - esac - - ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"` - sed -e "$ac_comsub -s%@configure_input@%$configure_input%g -s%@srcdir@%$srcdir%g -s%@top_srcdir@%$top_srcdir%g -" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file -fi; done -rm -f conftest.s* - -EOF -cat >> $CONFIG_STATUS <<EOF - -EOF -cat >> $CONFIG_STATUS <<\EOF - -exit 0 -EOF -chmod +x $CONFIG_STATUS -rm -fr confdefs* $ac_clean_files -test "$no_create" = yes || ${CONFIG_SHELL-/bin/sh} $CONFIG_STATUS || exit 1 - diff --git a/texinfo/testsuite/configure.in b/texinfo/testsuite/configure.in deleted file mode 100644 index 8cf18763df0..00000000000 --- a/texinfo/testsuite/configure.in +++ /dev/null @@ -1,5 +0,0 @@ -dnl Process this file with autoconf to produce a configure script. -AC_PREREQ(2.5) -AC_INIT(makeinfo.0/atnode.exp) - -AC_OUTPUT(Makefile) diff --git a/texinfo/testsuite/lib/utils.exp b/texinfo/testsuite/lib/utils.exp deleted file mode 100644 index 713e9f2332a..00000000000 --- a/texinfo/testsuite/lib/utils.exp +++ /dev/null @@ -1,31 +0,0 @@ -# utils.exp, a collection of Tcl/Expect utilities for texinfo tests. - -# ----------default-------------------------------------------- -# default VAR VALUE -# Check whether VAR exists and has a nonempty value; -# if not, use VALUE as the default -# ------------------------------------------------------------- -proc default {varname varval} { - upvar $varname outervar - if { ![info exists outervar] || [string match {} $outervar] } then { - verbose "Defaulting $varname to $varval\n" 1 - set outervar $varval - } else { - verbose "$varname retains existing value $outervar\n" 1 - } - return -} - - -# ----------is_executable-------------------------------------- -# is_executable NAME -# Boolean predicate: is NAME an executable file -# somewhere on our PATH? -# ------------------------------------------------------------- -proc is_executable {name} { - if [ file executable [which $name] ] then { - return 1 - } else { - return 0 - } -} diff --git a/texinfo/testsuite/makeinfo.0/atnode.exp b/texinfo/testsuite/makeinfo.0/atnode.exp deleted file mode 100644 index 19724347cbb..00000000000 --- a/texinfo/testsuite/makeinfo.0/atnode.exp +++ /dev/null @@ -1,19 +0,0 @@ -# Lessons: -# 1) may use \ to continue long lines -# 2) Careful in specifying string end on string match, to be sure -# to exclude errors! (cf output from nonsense.exp) - -catch "exec $MAKEINFO -o ./atnode.info $srcdir/text/atnode.texi" maki_out - -verbose "Makeinfo output: $maki_out" 1 - -setup_xfail "*-*-*" -if [string match \ - "Making*file*atnode*from*atnode.texi'." \ - "$maki_out" \ - ] then { - pass "at sign in node name" -} else { - fail "at sign in node name" -} -clear_xfail "*-*-*" diff --git a/texinfo/testsuite/makeinfo.0/conditions.exp b/texinfo/testsuite/makeinfo.0/conditions.exp deleted file mode 100644 index c62c66a2a04..00000000000 --- a/texinfo/testsuite/makeinfo.0/conditions.exp +++ /dev/null @@ -1,21 +0,0 @@ -# Lessons: -# 1) may use \ to continue long lines -# 2) Careful in specifying string end on string match, to be sure -# to exclude errors! (cf output from nonsense.exp) - -catch "exec $MAKEINFO -o ./conditions.info $srcdir/text/conditions.texi" maki_out - -verbose "Makeinfo output: $maki_out" 1 - -# The gdb manual works around this by putting a blank line after the pair of -# @end if* commands. -setup_xfail "*-*-*" -if [string match \ - "Making*file*conditions*from*conditions.texi'." \ - "$maki_out" \ - ] then { - pass "texinfo conditions" -} else { - fail "texinfo conditions" -} -clear_xfail "*-*-*" diff --git a/texinfo/testsuite/makeinfo.0/mini.exp b/texinfo/testsuite/makeinfo.0/mini.exp deleted file mode 100644 index 17d48bdee61..00000000000 --- a/texinfo/testsuite/makeinfo.0/mini.exp +++ /dev/null @@ -1,17 +0,0 @@ -# Lessons: -# 1) may use \ to continue long lines -# 2) Careful in specifying string end on string match, to be sure -# to exclude errors! (cf output from nonsense.exp) - -catch "exec $MAKEINFO -o ./mini.info $srcdir/text/minimal.texi" maki_out - -verbose "Makeinfo output: $maki_out" 1 - -if [string match \ - "Making*file*mini*from*minimal.texi'." \ - "$maki_out" \ - ] then { - pass "minimal source file" -} else { - fail "minimal source file" -} diff --git a/texinfo/testsuite/makeinfo.0/missnode.exp b/texinfo/testsuite/makeinfo.0/missnode.exp deleted file mode 100644 index fb278f08cfb..00000000000 --- a/texinfo/testsuite/makeinfo.0/missnode.exp +++ /dev/null @@ -1,25 +0,0 @@ -#set real_verbose [set verbose] -#set verbose 2 -catch "exec $MAKEINFO -o ./missnode.info $srcdir/text/missnode.texi" maki_out - -verbose "Makeinfo output: $maki_out" 1 - -if [string match \ - "*Validation error*Next*doesn't exist*" \ - "$maki_out" \ - ] then { - pass "missing Next detection" -} else { - fail "missing Next detection" -} - -if [string match \ - "*Validation error*Menu*doesn't exist*" \ - "$maki_out" \ - ] then { - pass "missing menu entry detection" -} else { - fail "missing menu entry detection" -} - -#set verbose [set real_verbose] diff --git a/texinfo/testsuite/makeinfo.0/nonsense.exp b/texinfo/testsuite/makeinfo.0/nonsense.exp deleted file mode 100644 index 3b19f2680fc..00000000000 --- a/texinfo/testsuite/makeinfo.0/nonsense.exp +++ /dev/null @@ -1,12 +0,0 @@ -catch "exec $MAKEINFO -o ./nonsense.info $srcdir/text/nonsense.texi" maki_out - -verbose "Makeinfo output: $maki_out" 1 - -if [string match \ - "*Unknown info command*" \ - "$maki_out" \ - ] then { - pass "unknown command detection" -} else { - fail "unknown command detection" -} diff --git a/texinfo/testsuite/makeinfo.0/not.exp b/texinfo/testsuite/makeinfo.0/not.exp deleted file mode 100644 index 3c5ac5a5964..00000000000 --- a/texinfo/testsuite/makeinfo.0/not.exp +++ /dev/null @@ -1,15 +0,0 @@ -# lessons: -# 1) ALL expected args to a cmd on one line! -# 2) `*' at end of string match pattern essential---match *complete* string! -# 3) $srcdir (at least when .) expanded in dir where runtest invoked--- -# NOT dir where test lives! -# 4) stderr already folded into stdout; no need for 2>&1 or such things - -catch "exec $MAKEINFO $srcdir/text/not.texi" maki_out -verbose "Makeinfo output: $maki_out" 1 - -if [string match "No*setfilename*found*in*" "$maki_out"] then { - pass "@setfilename required" -} else { - fail "@setfilename required" -} diff --git a/texinfo/testsuite/makeinfo.0/smstruct.exp b/texinfo/testsuite/makeinfo.0/smstruct.exp deleted file mode 100644 index 1a0c00f275c..00000000000 --- a/texinfo/testsuite/makeinfo.0/smstruct.exp +++ /dev/null @@ -1,14 +0,0 @@ -catch "exec $MAKEINFO -o ./smstruct.info $srcdir/text/smstruct.texi" maki_out - -verbose "Makeinfo output: $maki_out" 1 - -if [string match \ - "Making*file*smstruct*from*smstruct.texi'." \ - "$maki_out" \ - ] then { - pass "structured source file" -} else { - fail "structured source file" -} - - diff --git a/texinfo/testsuite/text/atnode.texi b/texinfo/testsuite/text/atnode.texi deleted file mode 100644 index 443738d19aa..00000000000 --- a/texinfo/testsuite/text/atnode.texi +++ /dev/null @@ -1,21 +0,0 @@ -@setfilename atnode - -@node Top -@c @top Toity - -@menu -* @@string:: A node with an at sign in its name -* Joke:: A node without an at sign in its name -@end menu - -@node @@string -@chapter On the Nature of Strings - -They can be thick or thin. - -@node Joke -@chapter Stop me if You've Heard this One - -These three strings (@pxref{@@string}), walked into a bar, and... - -@bye diff --git a/texinfo/testsuite/text/conditions.texi b/texinfo/testsuite/text/conditions.texi deleted file mode 100644 index 5c4a3209720..00000000000 --- a/texinfo/testsuite/text/conditions.texi +++ /dev/null @@ -1,26 +0,0 @@ -@setfilename conditions -@set foo1 -@clear foo2 -@clear bar -@node Top -@top Test of conditions -@menu -@ifclear bar -@ifset foo1 -* Foo1:: This text should be included. -@end ifset -@ifset foo2 -* Foo2:: This text should not be included. -@end ifset -@end ifclear -* Foo3:: And we have no blank line here. -@end menu -@node Foo1 -@chapter Foo1 -@ifset foo2 -@node Foo2 -@chapter Foo2 -@end ifset -@node Foo3 -@chapter Foo3 -@bye diff --git a/texinfo/testsuite/text/dfltnode.texi b/texinfo/testsuite/text/dfltnode.texi deleted file mode 100644 index 3800f42d853..00000000000 --- a/texinfo/testsuite/text/dfltnode.texi +++ /dev/null @@ -1,21 +0,0 @@ -@setfilename smstruct - -@node Top -@top Hoity - -@menu -* First:: The Very First Node -* Second:: Another Whole Node -@end menu - -@node First -@chapter The Very First Node - -This node is a real node, yes indeed. - -@node Second -@chapter Another Whole Node - -Will wonders never cease? - -@bye diff --git a/texinfo/testsuite/text/minimal.texi b/texinfo/testsuite/text/minimal.texi deleted file mode 100644 index 682881d4fd3..00000000000 --- a/texinfo/testsuite/text/minimal.texi +++ /dev/null @@ -1,2 +0,0 @@ -@setfilename mini -@bye diff --git a/texinfo/testsuite/text/missnode.texi b/texinfo/testsuite/text/missnode.texi deleted file mode 100644 index db997de8632..00000000000 --- a/texinfo/testsuite/text/missnode.texi +++ /dev/null @@ -1,22 +0,0 @@ -@setfilename missingnode - -@node Top, First,, -@top Hoity - -@menu -* First:: The very first node -* Second:: Another whole node -* Third:: No such thing -@end menu - -@node First, Second, Top, Top -@chapter The Very First Node - -This node is a real node, yes indeed. - -@node Second, Third, First, Top -@chapter Another Whole Node - -Will wonders never cease? - -@bye diff --git a/texinfo/testsuite/text/nonsense.texi b/texinfo/testsuite/text/nonsense.texi deleted file mode 100644 index b84fb3d7080..00000000000 --- a/texinfo/testsuite/text/nonsense.texi +++ /dev/null @@ -1,3 +0,0 @@ -@setfilename mini -@nonsense -@bye diff --git a/texinfo/testsuite/text/not.texi b/texinfo/testsuite/text/not.texi deleted file mode 100644 index a8d29b95088..00000000000 --- a/texinfo/testsuite/text/not.texi +++ /dev/null @@ -1 +0,0 @@ -Ceci n'est pas un fichier Texinfo. diff --git a/texinfo/testsuite/text/smstruct.texi b/texinfo/testsuite/text/smstruct.texi deleted file mode 100644 index 64f98ea2337..00000000000 --- a/texinfo/testsuite/text/smstruct.texi +++ /dev/null @@ -1,21 +0,0 @@ -@setfilename smstruct - -@node Top, First,, -@top Hoity - -@menu -* First:: The Very First Node -* Second:: Another Whole Node -@end menu - -@node First, Second, Top, Top -@chapter The Very First Node - -This node is a real node, yes indeed. - -@node Second,,First,Top -@chapter Another Whole Node - -Will wonders never cease? - -@bye |