]> code.delx.au - gnu-emacs/commitdiff
Fix bug #12395 with doc strings silently omitted from DOC on MS-Windows.
authorEli Zaretskii <eliz@gnu.org>
Sat, 20 Oct 2012 10:01:19 +0000 (12:01 +0200)
committerEli Zaretskii <eliz@gnu.org>
Sat, 20 Oct 2012 10:01:19 +0000 (12:01 +0200)
 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.

lib-src/ChangeLog
lib-src/make-docfile.c
lib-src/makefile.w32-in
lisp/ChangeLog
lisp/loadup.el

index 1f28000e11002158d2ededbe2a9aa7ecc9ddf4ea..07fd4658172028b8ecc8411348bdbc25ebb855b3 100644 (file)
@@ -1,3 +1,12 @@
+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
index 411b7057861a8aa5aea983263962159ec9ca6b1b..555a563d748753a97b0e7f431b81652c3cbc1d9e 100644 (file)
@@ -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)
index ecc5fb866b3d947c76b58de7651b15d9091927f4..640e8a7c468778e4b848adafb39abcb7264b81b0 100644 (file)
@@ -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
index 7830f8312daf6261b8bad3f3d7e570dac950a02f..323ba976c80b7ddd215eacb5eb442a1c928823f9 100644 (file)
@@ -1,3 +1,7 @@
+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
index e0f5c6265b98c39a5bfc10bfad8fdebe77118628..e5f2cb014d3806d784d20db3f2b580eda5193768 100644 (file)
@@ -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: