Commit 2068905b authored by Eli Zaretskii's avatar Eli Zaretskii

Fix bug #12395 with doc strings silently omitted from DOC on MS-Windows.

 lib-src/make-docfile.c (scan_lisp_file): Barf if called with a .el file
 other than one of a small list of supported un-compiled files.
 lib-src/makefile.w32-in (lisp1, lisp2): Name .elc files wherever they
 exist.

 lisp/loadup.el: Update comment about uncompiled Lisp files.
parent 4c9e9550
2012-10-20 Eli Zaretskii <eliz@gnu.org>
Prevent silent omission of doc strings from uncompile Lisp files.
* make-docfile.c (scan_lisp_file): Barf if called with a .el file
other than one of a small list of supported un-compiled files.
* makefile.w32-in (lisp1, lisp2): Name .elc files wherever they
exist. (Bug#12395)
2012-10-17 Eli Zaretskii <eliz@gnu.org>
* ntlib.c: Include <mbstring.h>, to avoid compiler warning about
......
......@@ -1025,9 +1025,9 @@ scan_c_file (char *filename, const char *mode)
arglist, but the doc string must still have a backslash and newline
immediately after the double quote.
The only source files that must follow this convention are preloaded
uncompiled ones like loaddefs.el and bindings.el; aside
from that, it is always the .elc file that we look at, and they are no
problem because byte-compiler output follows this convention.
uncompiled ones like loaddefs.el; aside from that, it is always the .elc
file that we should look at, and they are no problem because byte-compiler
output follows this convention.
The NAME and DOCSTRING are output.
NAME is preceded by `F' for a function or `V' for a variable.
An entry is output only if DOCSTRING has \ newline just after the opening ".
......@@ -1104,9 +1104,36 @@ scan_lisp_file (const char *filename, const char *mode)
FILE *infile;
register int c;
char *saved_string = 0;
/* These are the only files that are loaded uncompiled, and must
follow the conventions of the doc strings expected by this
function. These conventions are automatically followed by the
byte compiler when it produces the .elc files. */
static struct {
const char *fn;
size_t fl;
} uncompiled[] = {
{ "loaddefs.el", sizeof("loaddefs.el") - 1 },
{ "loadup.el", sizeof("loadup.el") - 1 },
{ "charprop.el", sizeof("charprop.el") - 1 }
};
int i, match;
size_t flen = strlen (filename);
if (generate_globals)
fatal ("scanning lisp file when -g specified", 0);
if (!strcmp (filename + flen - 3, ".el"))
{
for (i = 0, match = 0; i < sizeof(uncompiled)/sizeof(uncompiled[0]); i++)
{
if (!strcmp (filename + flen - uncompiled[i].fl, uncompiled[i].fn))
{
match = 1;
break;
}
}
if (!match)
fatal ("uncompiled lisp file %s is not supported", filename);
}
infile = fopen (filename, mode);
if (infile == NULL)
......
......@@ -209,38 +209,38 @@ lisp1= \
$(lispsource)emacs-lisp/map-ynp.elc \
$(lispsource)menu-bar.elc \
$(lispsource)international/mule.elc \
$(lispsource)international/mule-conf.el \
$(lispsource)international/mule-conf.elc \
$(lispsource)international/mule-cmds.elc \
$(lispsource)international/characters.elc \
$(lispsource)international/charprop.el \
$(lispsource)case-table.elc
lisp2 = \
$(lispsource)language/chinese.el \
$(lispsource)language/cyrillic.el \
$(lispsource)language/indian.el \
$(lispsource)language/sinhala.el \
$(lispsource)language/english.el \
$(lispsource)language/chinese.elc \
$(lispsource)language/cyrillic.elc \
$(lispsource)language/indian.elc \
$(lispsource)language/sinhala.elc \
$(lispsource)language/english.elc \
$(lispsource)language/ethiopic.elc \
$(lispsource)language/european.elc \
$(lispsource)language/czech.el \
$(lispsource)language/slovak.el \
$(lispsource)language/romanian.el \
$(lispsource)language/greek.el \
$(lispsource)language/czech.elc \
$(lispsource)language/slovak.elc \
$(lispsource)language/romanian.elc \
$(lispsource)language/greek.elc \
$(lispsource)language/hebrew.elc \
$(lispsource)language/japanese.el \
$(lispsource)language/korean.el \
$(lispsource)language/lao.el \
$(lispsource)language/cham.el \
$(lispsource)language/tai-viet.el \
$(lispsource)language/thai.el \
$(lispsource)language/japanese.elc \
$(lispsource)language/korean.elc \
$(lispsource)language/lao.elc \
$(lispsource)language/cham.elc \
$(lispsource)language/tai-viet.elc \
$(lispsource)language/thai.elc \
$(lispsource)language/tibetan.elc \
$(lispsource)language/vietnamese.el \
$(lispsource)language/misc-lang.el \
$(lispsource)language/utf-8-lang.el \
$(lispsource)language/georgian.el \
$(lispsource)language/khmer.el \
$(lispsource)language/burmese.el \
$(lispsource)language/vietnamese.elc \
$(lispsource)language/misc-lang.elc \
$(lispsource)language/utf-8-lang.elc \
$(lispsource)language/georgian.elc \
$(lispsource)language/khmer.elc \
$(lispsource)language/burmese.elc \
$(lispsource)register.elc \
$(lispsource)replace.elc \
$(lispsource)simple.elc \
......@@ -266,7 +266,7 @@ lisp2 = \
$(WINDOW_SUPPORT) \
$(lispsource)widget.elc \
$(lispsource)window.elc \
$(lispsource)version.el
$(lispsource)version.elc
# This is needed the first time we build the tree, since temacs.exe
# does not exist yet, and the DOC rule needs it to rebuild DOC whenever
......
2012-10-20 Eli Zaretskii <eliz@gnu.org>
* loadup.el: Update comment about uncompiled Lisp files. (Bug#12395)
2012-10-20 Jay Belanger <jay.p.belanger@gmail.com>
* calc/calc-units.el (math-extract-units): Properly extract powers
......
......@@ -38,7 +38,8 @@
;; doc strings in the dumped Emacs.) Because of this:
;; ii) If the file is loaded uncompiled, it should (where possible)
;; obey the doc-string conventions expected by make-docfile.
;; obey the doc-string conventions expected by make-docfile. It
;; should also be added to the uncompiled[] list in make-docfile.c.
;;; Code:
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment