]> code.delx.au - gnu-emacs/blobdiff - src/doc.c
(table group): Add :version.
[gnu-emacs] / src / doc.c
index 930afc88e23f709089de91cd4cde6112d9bb7515..82df9134f61197ed0f7855826506ec9f79bc075d 100644 (file)
--- a/src/doc.c
+++ b/src/doc.c
@@ -1,5 +1,6 @@
 /* Record indices of function doc strings stored in a file.
-   Copyright (C) 1985, 86,93,94,95,97,98,99, 2000 Free Software Foundation, Inc.
+   Copyright (C) 1985, 86,93,94,95,97,98,99,2000,04
+             Free Software Foundation, Inc.
 
 This file is part of GNU Emacs.
 
@@ -569,7 +570,7 @@ records them in function and variable definitions.
 The function takes one argument, FILENAME, a string;
 it specifies the file name (without a directory) of the DOC file.
 That file is found in `../etc' now; later, when the dumped Emacs is run,
-the same file name is found in the `data-directory'.  */)
+the same file name is found in the `doc-directory'.  */)
      (filename)
      Lisp_Object filename;
 {
@@ -612,8 +613,7 @@ the same file name is found in the `data-directory'.  */)
        *p = '_';
       p++;
     }
-#endif /* not VMS4_4 */
-#ifdef VMS4_4
+#else /* VMS4_4 */
   strcpy (name, sys_translate_unix (name));
 #endif /* VMS4_4 */
 #endif /* VMS */
@@ -660,6 +660,9 @@ the same file name is found in the `data-directory'.  */)
              else if (p[1] == 'F')
                store_function_docstring (sym, pos + end + 1 - buf);
 
+             else if (p[1] == 'S')
+               ; /* Just a source file name boundary marker.  Ignore it.  */
+
              else
                error ("DOC file invalid at position %d", pos);
            }
@@ -771,24 +774,18 @@ thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ int
 
          /* Save STRP in IDX.  */
          idx = strp - SDATA (string);
-         tem = Fintern (make_string (start, length_byte), Qnil);
+         name = Fintern (make_string (start, length_byte), Qnil);
+
+         /* Ignore remappings unless there are no ordinary bindings. */
+         tem = Fwhere_is_internal (name, keymap, Qt, Qnil, Qt);
+         if (NILP (tem))
+           tem = Fwhere_is_internal (name, keymap, Qt, Qnil, Qnil);
 
          /* Note the Fwhere_is_internal can GC, so we have to take
             relocation of string contents into account.  */
-         tem = Fwhere_is_internal (tem, keymap, Qt, Qnil, Qnil);
          strp = SDATA (string) + idx;
          start = SDATA (string) + start_idx;
 
-         /* Disregard menu bar bindings; it is positively annoying to
-            mention them when there's no menu bar, and it isn't terribly
-            useful even when there is a menu bar.  */
-         if (!NILP (tem))
-           {
-             firstkey = Faref (tem, make_number (0));
-             if (EQ (firstkey, Qmenu_bar))
-               tem = Qnil;
-           }
-
          if (NILP (tem))       /* but not on any keys */
            {
              int offset = bufp - buf;
@@ -805,7 +802,7 @@ thus, \\=\\=\\=\\= puts \\=\\= into the output, and \\=\\=\\=\\[ puts \\=\\[ int
            }
          else
            {                   /* function is on a key */
-             tem = Fkey_description (tem);
+             tem = Fkey_description (tem, Qnil);
              goto subst_string;
            }
        }