# HG changeset patch # User Glenn Morris # Date 1287801966 25200 # Node ID 1529ab88805c71e8dbdae5ab8564ff0e19781e08 # Parent 811daa44285f696abad7c3e84df7546f2f7fb2b6 Replace digest-doc and sorted-doc C programs with Lisp commands. * lib-src/digest-doc.c, lib-src/sorted-doc.c: Remove files. * lib-src/Makefile.in (UTILITIES): Remove digest-doc and sorted-doc. (digest-doc${EXEEXT}, sorted-doc${EXEEXT}): Remove rules. * lib-src/makefile.w32-in (ALL): Remove digest-doc and sorted-doc. ($(BLD)/sorted-doc.exe, $(BLD)/digest-doc.exe, sorted-doc, digest-doc) ($(BLD)/digest-doc.$(O), $(BLD)/sorted-doc.$(O)): Remove rules. (install): Don't install digest-doc.exe or sorted-doc.exe. * lisp/help-fns.el (doc-file-to-man, doc-file-to-info): New commands. * doc/lispref/help.texi (Documentation Basics): Remove mentions of digest-doc and sorted-doc. * INSTALL, nt/README, nt/README.W32: Do not mention digest-doc and sorted-doc. * etc/NEWS: Mention this change. diff -r 811daa44285f -r 1529ab88805c INSTALL --- a/INSTALL Fri Oct 22 19:36:28 2010 -0700 +++ b/INSTALL Fri Oct 22 19:46:06 2010 -0700 @@ -676,8 +676,7 @@ the paths to the values specified in `./Makefile'. 2) Go to directory `./lib-src' and run `make'. This creates -executables named `ctags' and `etags' and `make-docfile' and -`digest-doc' and `test-distrib'. And others. +executables named `etags', `make-docfile', and others. 3) Go to directory `./src' and run `make'. This refers to files in the `./lisp' and `./lib-src' subdirectories using names `../lisp' and @@ -709,8 +708,6 @@ are intended to be run by users; they are handled below. - The programs `make-docfile' and `test-distrib' were used in building Emacs, and are not needed any more. -- The programs `digest-doc' and `sorted-doc' convert a `DOC' file into - a file for users to read. There is no important reason to move them. 2) Copy the files in `./info' to the place specified in `./lisp/site-init.el' or `./lisp/paths.el'. Note that if the diff -r 811daa44285f -r 1529ab88805c doc/lispref/ChangeLog --- a/doc/lispref/ChangeLog Fri Oct 22 19:36:28 2010 -0700 +++ b/doc/lispref/ChangeLog Fri Oct 22 19:46:06 2010 -0700 @@ -1,3 +1,8 @@ +2010-10-23 Glenn Morris + + * help.texi (Documentation Basics): Remove mentions of digest-doc and + sorted-doc. + 2010-10-15 Eli Zaretskii * os.texi (Dynamic Libraries): New node, with slightly modified diff -r 811daa44285f -r 1529ab88805c doc/lispref/help.texi --- a/doc/lispref/help.texi Fri Oct 22 19:36:28 2010 -0700 +++ b/doc/lispref/help.texi Fri Oct 22 19:46:06 2010 -0700 @@ -1,7 +1,8 @@ @c -*-texinfo-*- @c This is part of the GNU Emacs Lisp Reference Manual. @c Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1998, 1999, 2001, -@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 +@c Free Software Foundation, Inc. @c See the file elisp.texi for copying conditions. @setfilename ../../info/help @node Documentation, Files, Modes, Top @@ -106,12 +107,6 @@ documentation string from the appropriate file; this is transparent to the user. -@c Wordy to prevent overfull hbox. --rjc 15mar92 - The @file{emacs/lib-src} directory contains two utilities that you can -use to print nice-looking hardcopy for the file -@file{emacs/etc/DOC-@var{version}}. These are @file{sorted-doc} and -@file{digest-doc}. - @node Accessing Documentation @section Access to Documentation Strings @@ -701,6 +696,3 @@ if the user types the help character again. @end defopt -@ignore - arch-tag: ba36b4c2-e60f-49e2-bc25-61158fdcd815 -@end ignore diff -r 811daa44285f -r 1529ab88805c etc/NEWS --- a/etc/NEWS Fri Oct 22 19:36:28 2010 -0700 +++ b/etc/NEWS Fri Oct 22 19:46:06 2010 -0700 @@ -209,6 +209,9 @@ ** The user option `remote-file-name-inhibit-cache' controls whether the remote file-name cache is used for read access. +** The standalone programs lib-src/digest-doc and sorted-doc have been +replaced with Lisp commands `doc-file-to-man' and `doc-file-to-info'. + * Editing Changes in Emacs 24.1 diff -r 811daa44285f -r 1529ab88805c lib-src/ChangeLog --- a/lib-src/ChangeLog Fri Oct 22 19:36:28 2010 -0700 +++ b/lib-src/ChangeLog Fri Oct 22 19:46:06 2010 -0700 @@ -1,3 +1,13 @@ +2010-10-23 Glenn Morris + + * digest-doc.c, sorted-doc.c: Remove files. + * Makefile.in (UTILITIES): Remove digest-doc and sorted-doc. + (digest-doc${EXEEXT}, sorted-doc${EXEEXT}): Remove rules. + * makefile.w32-in (ALL): Remove digest-doc and sorted-doc. + ($(BLD)/sorted-doc.exe, $(BLD)/digest-doc.exe, sorted-doc, digest-doc) + ($(BLD)/digest-doc.$(O), $(BLD)/sorted-doc.$(O)): Remove rules. + (install): Don't install digest-doc.exe or sorted-doc.exe. + 2010-10-10 Dan Nicolaescu * Makefile.in (PROFILING_LDFLAGS): Remove, not needed. diff -r 811daa44285f -r 1529ab88805c lib-src/Makefile.in --- a/lib-src/Makefile.in Fri Oct 22 19:36:28 2010 -0700 +++ b/lib-src/Makefile.in Fri Oct 22 19:46:06 2010 -0700 @@ -118,8 +118,7 @@ # Things that Emacs runs internally, or during the build process, # which should not be installed in bindir. -UTILITIES = profile${EXEEXT} digest-doc${EXEEXT} sorted-doc${EXEEXT} \ - movemail${EXEEXT} fakemail${EXEEXT} \ +UTILITIES = profile${EXEEXT} movemail${EXEEXT} fakemail${EXEEXT} \ hexl${EXEEXT} update-game-score${EXEEXT} DONT_INSTALL= test-distrib${EXEEXT} make-docfile${EXEEXT} @@ -353,12 +352,6 @@ $(CC) ${ALL_CFLAGS} ${srcdir}/make-docfile.c $(LOADLIBES) \ -o make-docfile -digest-doc${EXEEXT}: ${srcdir}/digest-doc.c - $(CC) ${ALL_CFLAGS} ${srcdir}/digest-doc.c $(LOADLIBES) -o digest-doc - -sorted-doc${EXEEXT}: ${srcdir}/sorted-doc.c - $(CC) ${ALL_CFLAGS} ${srcdir}/sorted-doc.c $(LOADLIBES) -o sorted-doc - movemail${EXEEXT}: movemail.o pop.o $(GETOPTDEPS) $(CC) ${LINK_CFLAGS} ${MOVE_FLAGS} movemail.o pop.o \ $(GETOPTOBJS) $(LOADLIBES) $(LIBS_MOVE) -o movemail diff -r 811daa44285f -r 1529ab88805c lib-src/digest-doc.c --- a/lib-src/digest-doc.c Fri Oct 22 19:36:28 2010 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/* Give this program DOC-mm.nn.oo as standard input and it outputs to - standard output a file of nroff output containing the doc strings. - -Copyright (C) 1987, 1994, 2001, 2002, 2003, 2004, 2005, 2006, 2007, - 2008, 2009, 2010 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 3 of the License, 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. If not, see . - - -See also sorted-doc.c, which produces similar output -but in texinfo format and sorted by function/variable name. */ - -#include - -#ifdef DOS_NT -#include /* for O_BINARY */ -#include /* for setmode */ -#endif - -int -main (void) -{ - register int ch; - register int notfirst = 0; - -#ifdef DOS_NT - /* DOC is a binary file. */ - if (!isatty (fileno (stdin))) - setmode (fileno (stdin), O_BINARY); -#endif - - printf (".TL\n"); - printf ("Command Summary for GNU Emacs\n"); - printf (".AU\nRichard M. Stallman\n"); - while ((ch = getchar ()) != EOF) - { - if (ch == '\037') - { - if (notfirst) - printf ("\n.DE"); - else - notfirst = 1; - - printf ("\n.SH\n"); - - ch = getchar (); - printf (ch == 'F' ? "Function " : "Variable "); - - while ((ch = getchar ()) != '\n') /* Changed this line */ - { - if (ch != EOF) - putchar (ch); - else - { - ungetc (ch, stdin); - break; - } - } - printf ("\n.DS L\n"); - } - else - putchar (ch); - } - return 0; -} - -/* arch-tag: 2ba2c9b0-4157-4eba-bd9f-967e3677e35f - (do not change this comment) */ diff -r 811daa44285f -r 1529ab88805c lib-src/makefile.w32-in --- a/lib-src/makefile.w32-in Fri Oct 22 19:36:28 2010 -0700 +++ b/lib-src/makefile.w32-in Fri Oct 22 19:46:06 2010 -0700 @@ -18,7 +18,7 @@ # along with GNU Emacs. If not, see . -ALL = make-docfile hexl ctags etags movemail ebrowse sorted-doc digest-doc emacsclient +ALL = make-docfile hexl ctags etags movemail ebrowse emacsclient .PHONY: $(ALL) @@ -36,10 +36,6 @@ $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/hexl.$(O) $(LIBS) $(BLD)/fakemail.exe: $(BLD)/fakemail.$(O) $(BLD)/ntlib.$(O) $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/fakemail.$(O) $(BLD)/ntlib.$(O) $(LIBS) -$(BLD)/sorted-doc.exe: $(BLD)/sorted-doc.$(O) - $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/sorted-doc.$(O) $(LIBS) -$(BLD)/digest-doc.exe: $(BLD)/digest-doc.$(O) - $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/digest-doc.$(O) $(LIBS) $(BLD)/test-distrib.exe: $(BLD)/test-distrib.$(O) $(LINK) $(LINK_OUT)$@ $(LINK_FLAGS) $(BLD)/test-distrib.$(O) $(LIBS) @@ -50,8 +46,6 @@ hexl: stamp_BLD $(BLD)/hexl.exe movemail: stamp_BLD $(BLD)/movemail.exe fakemail: stamp_BLD $(BLD)/fakemail.exe -sorted-doc: stamp_BLD $(BLD)/sorted-doc.exe -digest-doc: stamp_BLD $(BLD)/digest-doc.exe emacsclient: stamp_BLD $(BLD)/emacsclient.exe $(BLD)/emacsclientw.exe test-distrib: stamp_BLD $(BLD)/test-distrib.exe @@ -335,8 +329,6 @@ $(CP) $(BLD)/ctags.exe $(INSTALL_DIR)/bin $(CP) $(BLD)/hexl.exe $(INSTALL_DIR)/bin $(CP) $(BLD)/movemail.exe $(INSTALL_DIR)/bin - $(CP) $(BLD)/sorted-doc.exe $(INSTALL_DIR)/bin - $(CP) $(BLD)/digest-doc.exe $(INSTALL_DIR)/bin $(CP) $(BLD)/emacsclient.exe $(INSTALL_DIR)/bin $(CP) $(BLD)/emacsclientw.exe $(INSTALL_DIR)/bin - mkdir "$(INSTALL_DIR)/etc" @@ -404,9 +396,6 @@ $(SRC)/ntlib.h \ $(SRC)/getopt.h -$(BLD)/digest-doc.$(O) : \ - $(SRC)/digest-doc.c - $(BLD)/emacsclient.$(O) : \ $(SRC)/emacsclient.c \ $(EMACS_ROOT)/src/s/ms-w32.h \ @@ -496,12 +485,6 @@ $(BLD)/qsort.$(O) : \ $(SRC)/qsort.c -$(BLD)/sorted-doc.$(O) : \ - $(SRC)/sorted-doc.c \ - $(EMACS_ROOT)/src/s/ms-w32.h \ - $(EMACS_ROOT)/src/m/intel386.h \ - $(EMACS_ROOT)/src/config.h - $(BLD)/tcp.$(O) : \ $(SRC)/tcp.c @@ -519,8 +502,6 @@ # $(BLD)/make-docfile.$(O) $(BLD)/hexl.$(O) $(BLD)/fakemail.$(O): stamp_BLD -$(BLD)/sorted-doc.$(O) $(BLD)/digest-doc.$(O): stamp_BLD - $(BLD)/test-distrib.$(O) $(GETOPTOBJS) $(MOVEMAILOBJS): stamp_BLD $(BLD)/emacsclient.$(O) $(BLD)/etags.$(O) $(BLD)/regex.$(O): stamp_BLD diff -r 811daa44285f -r 1529ab88805c lib-src/sorted-doc.c --- a/lib-src/sorted-doc.c Fri Oct 22 19:36:28 2010 -0700 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,296 +0,0 @@ -/* Give this program DOC-mm.nn.oo as standard input and it outputs to - standard output a file of texinfo input containing the doc strings. - -Copyright (C) 1989, 1992, 1994, 1996, 1999, 2000, 2001, 2002, 2003, - 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 3 of the License, 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. If not, see . */ - - -/* This version sorts the output by function name. */ - -#ifdef HAVE_CONFIG_H -#include -#endif - -#include -#include -#ifdef DOS_NT -#include /* for O_BINARY */ -#include /* for setmode */ -#endif -#ifndef HAVE_STDLIB_H /* config.h includes stdlib. */ -#ifndef WINDOWSNT /* src/s/ms-w32.h includes stdlib.h */ -extern char *malloc (); -#endif -#endif - -#define NUL '\0' -#define MARKER '\037' - -#define DEBUG 0 - -typedef struct line LINE; - -struct line -{ - LINE *next; /* ptr to next or NULL */ - char *line; /* text of the line */ -}; - -typedef struct docstr DOCSTR; - -struct docstr /* Allocated thing for an entry. */ -{ - DOCSTR *next; /* next in the chain */ - char *name; /* name of the function or var */ - LINE *first; /* first line of doc text. */ - char type; /* 'F' for function, 'V' for variable */ -}; - - -/* Print error message. `s1' is printf control string, `s2' is arg for it. */ - -void -error (const char *s1, const char *s2) -{ - fprintf (stderr, "sorted-doc: "); - fprintf (stderr, s1, s2); - fprintf (stderr, "\n"); -} - -/* Print error message and exit. */ - -void -fatal (const char *s1, const char *s2) -{ - error (s1, s2); - exit (EXIT_FAILURE); -} - -/* Like malloc but get fatal error if memory is exhausted. */ - -char * -xmalloc (int size) -{ - char *result = malloc ((unsigned)size); - if (result == NULL) - fatal ("%s", "virtual memory exhausted"); - return result; -} - -char * -xstrdup (const char *str) -{ - char *buf = xmalloc (strlen (str) + 1); - (void) strcpy (buf, str); - return (buf); -} - -/* Comparison function for qsort to call. */ - -int -cmpdoc (const void *va, const void *vb) -{ - DOCSTR *const *a = va; - DOCSTR *const *b = vb; - register int val = strcmp ((*a)->name, (*b)->name); - if (val) return val; - return (*a)->type - (*b)->type; -} - -enum state -{ - WAITING, BEG_NAME, NAME_GET, BEG_DESC, DESC_GET -}; - -const char *states[] = -{ - "WAITING", "BEG_NAME", "NAME_GET", "BEG_DESC", "DESC_GET" -}; - -int -main (void) -{ - register DOCSTR *dp = NULL; /* allocated DOCSTR */ - register LINE *lp = NULL; /* allocated line */ - register char *bp; /* ptr inside line buffer */ - register enum state state = WAITING; /* state at start */ - int cnt = 0; /* number of DOCSTRs read */ - - DOCSTR *docs = NULL; /* chain of allocated DOCSTRS */ - char buf[512]; /* line buffer */ - -#ifdef DOS_NT - /* DOC is a binary file. */ - if (!isatty (fileno (stdin))) - setmode (fileno (stdin), O_BINARY); -#endif - - bp = buf; - - while (1) /* process one char at a time */ - { - /* this char from the DOCSTR file */ - register int ch = getchar (); - - /* Beginnings */ - - if (state == WAITING) - { - if (ch == MARKER) - state = BEG_NAME; - } - else if (state == BEG_NAME) - { - cnt++; - if (dp == NULL) /* first dp allocated */ - { - docs = dp = (DOCSTR*) xmalloc (sizeof (DOCSTR)); - } - else /* all the rest */ - { - dp->next = (DOCSTR*) xmalloc (sizeof (DOCSTR)); - dp = dp->next; - } - lp = NULL; - dp->next = NULL; - bp = buf; - state = NAME_GET; - /* Record whether function or variable. */ - dp->type = ch; - ch = getchar (); - } - else if (state == BEG_DESC) - { - if (lp == NULL) /* first line for dp */ - { - dp->first = lp = (LINE*)xmalloc (sizeof (LINE)); - } - else /* continuing lines */ - { - lp->next = (LINE*)xmalloc (sizeof (LINE)); - lp = lp->next; - } - lp->next = NULL; - bp = buf; - state = DESC_GET; - } - - /* process gets */ - - if (state == NAME_GET || state == DESC_GET) - { - if (ch != MARKER && ch != '\n' && ch != EOF) - { - *bp++ = ch; - } - else /* saving and changing state */ - { - *bp = NUL; - bp = xstrdup (buf); - - if (state == NAME_GET) - dp->name = bp; - else - lp->line = bp; - - bp = buf; - state = (ch == MARKER) ? BEG_NAME : BEG_DESC; - } - } /* NAME_GET || DESC_GET */ - if (ch == EOF) - break; - } - - { - DOCSTR **array; - register int i; /* counter */ - - /* build array of ptrs to DOCSTRs */ - - array = (DOCSTR**)xmalloc (cnt * sizeof (*array)); - for (dp = docs, i = 0; dp != NULL ; dp = dp->next) - array[i++] = dp; - - /* sort the array by name; within each name, by type */ - - qsort ((char*)array, cnt, sizeof (DOCSTR*), cmpdoc); - - /* write the output header */ - - printf ("\\input texinfo @c -*-texinfo-*-\n"); - printf ("@setfilename ../info/summary\n"); - printf ("@settitle Command Summary for GNU Emacs\n"); - printf ("@finalout\n"); - printf ("@unnumbered Command Summary for GNU Emacs\n"); - printf ("@table @asis\n"); - printf ("\n"); - printf ("@iftex\n"); - printf ("@global@let@ITEM@item\n"); - printf ("@def@item{@filbreak@vskip5pt@ITEM}\n"); - printf ("@font@tensy cmsy10 scaled @magstephalf\n"); - printf ("@font@teni cmmi10 scaled @magstephalf\n"); - printf ("@def\\{{@tensy@char110}}\n"); /* this backslash goes with cmr10 */ - printf ("@def|{{@tensy@char106}}\n"); - printf ("@def@{{{@tensy@char102}}\n"); - printf ("@def@}{{@tensy@char103}}\n"); - printf ("@def<{{@teni@char62}}\n"); - printf ("@def>{{@teni@char60}}\n"); - printf ("@chardef@@64\n"); - printf ("@catcode43=12\n"); - printf ("@tableindent-0.2in\n"); - printf ("@end iftex\n"); - - /* print each function from the array */ - - for (i = 0; i < cnt; i++) - { - printf ("\n@item %s @code{%s}\n@display\n", - array[i]->type == 'F' ? "Function" : "Variable", - array[i]->name); - - for (lp = array[i]->first; lp != NULL ; lp = lp->next) - { - for (bp = lp->line; *bp; bp++) - { - /* the characters "@{}" need special treatment */ - if (*bp == '@' || *bp == '{' || *bp == '}') - { - putchar('@'); - } - putchar(*bp); - } - putchar ('\n'); - } - printf("@end display\n"); - /* Try to avoid a save size overflow in the TeX output - routine. */ - if (i%100 == 0 && i > 0 && i != cnt) - printf("\n@end table\n@table @asis\n"); - } - - printf ("@end table\n"); - printf ("@bye\n"); - } - - return EXIT_SUCCESS; -} - -/* arch-tag: ce28f204-1e70-4b34-8210-3d54a5662071 - (do not change this comment) */ - -/* sorted-doc.c ends here */ diff -r 811daa44285f -r 1529ab88805c lisp/ChangeLog --- a/lisp/ChangeLog Fri Oct 22 19:36:28 2010 -0700 +++ b/lisp/ChangeLog Fri Oct 22 19:46:06 2010 -0700 @@ -1,5 +1,7 @@ 2010-10-23 Glenn Morris + * help-fns.el (doc-file-to-man, doc-file-to-info): New commands. + * help.el (finder-by-keyword): Remove unnecessary autoload. 2010-10-22 Glenn Morris diff -r 811daa44285f -r 1529ab88805c lisp/help-fns.el --- a/lisp/help-fns.el Fri Oct 22 19:36:28 2010 -0700 +++ b/lisp/help-fns.el Fri Oct 22 19:46:06 2010 -0700 @@ -887,7 +887,111 @@ (insert "\nThe parent category table is:") (describe-vector table 'help-describe-category-set)))))) + +;;; Replacements for old lib-src/ programs. Don't seem especially useful. + +;; Replaces lib-src/digest-doc.c. +;;;###autoload +(defun doc-file-to-man (file) + "Produce an nroff buffer containing the doc-strings from the DOC file." + (interactive (list (read-file-name "Name of DOC file: " doc-directory + internal-doc-file-name t))) + (or (file-readable-p file) + (error "Cannot read file `%s'" file)) + (pop-to-buffer (generate-new-buffer "*man-doc*")) + (setq buffer-undo-list t) + (insert ".TH \"Command Summary for GNU Emacs\"\n" + ".AU Richard M. Stallman\n") + (insert-file-contents file) + (let (notfirst) + (while (search-forward "" nil 'move) + (if (looking-at "S") + (delete-region (1- (point)) (line-end-position)) + (delete-char -1) + (if notfirst + (insert "\n.DE\n") + (setq notfirst t)) + (insert "\n.SH ") + (insert (if (looking-at "F") "Function " "Variable ")) + (delete-char 1) + (forward-line 1) + (insert ".DS L\n")))) + (insert "\n.DE\n") + (setq buffer-undo-list nil) + (nroff-mode)) + +;; Replaces lib-src/sorted-doc.c. +;;;###autoload +(defun doc-file-to-info (file) + "Produce a texinfo buffer with sorted doc-strings from the DOC file." + (interactive (list (read-file-name "Name of DOC file: " doc-directory + internal-doc-file-name t))) + (or (file-readable-p file) + (error "Cannot read file `%s'" file)) + (let ((i 0) type name doc alist) + (with-temp-buffer + (insert-file-contents file) + ;; The characters "@{}" need special treatment. + (while (re-search-forward "[@{}]" nil t) + (backward-char) + (insert "@") + (forward-char 1)) + (goto-char (point-min)) + (while (search-forward "" nil t) + (unless (looking-at "S") + (setq type (char-after) + name (buffer-substring (1+ (point)) (line-end-position)) + doc (buffer-substring (line-beginning-position 2) + (if (search-forward "" nil 'move) + (1- (point)) + (point))) + alist (cons (list name type doc) alist)) + (backward-char 1)))) + (pop-to-buffer (generate-new-buffer "*info-doc*")) + (setq buffer-undo-list t) + ;; Write the output header. + (insert "\\input texinfo @c -*-texinfo-*-\n" + "@setfilename emacsdoc.info\n" + "@settitle Command Summary for GNU Emacs\n" + "@finalout\n" + "\n@node Top\n" + "@unnumbered Command Summary for GNU Emacs\n\n" + "@table @asis\n\n" + "@iftex\n" + "@global@let@ITEM@item\n" + "@def@item{@filbreak@vskip5pt@ITEM}\n" + "@font@tensy cmsy10 scaled @magstephalf\n" + "@font@teni cmmi10 scaled @magstephalf\n" + "@def\\{{@tensy@char110}}\n" ; this backslash goes with cmr10 + "@def|{{@tensy@char106}}\n" + "@def@{{{@tensy@char102}}\n" + "@def@}{{@tensy@char103}}\n" + "@def<{{@teni@char62}}\n" + "@def>{{@teni@char60}}\n" + "@chardef@@64\n" + "@catcode43=12\n" + "@tableindent-0.2in\n" + "@end iftex\n") + ;; Sort the array by name; within each name, by type (functions first). + (setq alist (sort alist (lambda (e1 e2) + (if (string-equal (car e1) (car e2)) + (<= (cadr e1) (cadr e2)) + (string-lessp (car e1) (car e2)))))) + ;; Print each function. + (dolist (e alist) + (insert "\n@item " + (if (char-equal (cadr e) ?\F) "Function" "Variable") + " @code{" (car e) "}\n@display\n" + (nth 2 e) + "\n@end display\n") + ;; Try to avoid a save size overflow in the TeX output routine. + (if (zerop (setq i (% (1+ i) 100))) + (insert "\n@end table\n@table @asis\n"))) + (insert "@end table\n" + "@bye\n") + (setq buffer-undo-list nil) + (texinfo-mode))) + (provide 'help-fns) -;; arch-tag: 9e10331c-ae81-4d13-965d-c4819aaab0b3 ;;; help-fns.el ends here diff -r 811daa44285f -r 1529ab88805c nt/README --- a/nt/README Fri Oct 22 19:36:28 2010 -0700 +++ b/nt/README Fri Oct 22 19:46:06 2010 -0700 @@ -1,7 +1,7 @@ Emacs for Windows NT/2000 and Windows 95/98/ME - Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, - 2007, 2008, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. See the end of the file for license conditions. This directory contains support for compiling and running GNU Emacs on @@ -61,9 +61,6 @@ a mail spool or POP server to a local user mailbox. See the `Movemail' node of the Emacs manual. - + digest-doc.exe, sorted-doc.exe - Tools for rebuilding the - built-in documentation. - * Further information There is a web page that serves as a FAQ for the Windows port of diff -r 811daa44285f -r 1529ab88805c nt/README.W32 --- a/nt/README.W32 Fri Oct 22 19:36:28 2010 -0700 +++ b/nt/README.W32 Fri Oct 22 19:46:06 2010 -0700 @@ -1,5 +1,5 @@ -Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 - Free Software Foundation, Inc. +Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, + 2010 Free Software Foundation, Inc. See the end of the file for license conditions. Emacs for Windows @@ -106,9 +106,6 @@ a mail spool or POP server to a local user mailbox. See the `Movemail' node of the Emacs manual. - + digest-doc.exe, sorted-doc.exe - Tools for rebuilding the - built-in documentation. - * Image support Emacs has built in support for XBM and PPM/PGM/PBM images, and the