/* 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.
#include <sys/types.h>
#include <sys/file.h> /* Must be after sys/types.h for USG and BSD4_1*/
-#ifdef USG5
+#ifdef HAVE_FCNTL_H
#include <fcntl.h>
#endif
if (!STRINGP (file))
return Qnil;
-
+
/* Put the file name in NAME as a C string.
If it is relative, combine it with Vdoc_directory. */
documentation:
doc = Qnil;
-
+
if (SYMBOLP (function)
&& (tem = Fget (function, Qfunction_documentation),
!NILP (tem)))
return Fdocumentation_property (function, Qfunction_documentation, raw);
-
+
fun = Findirect_function (function);
if (SUBRP (fun))
{
Lisp_Object tem;
documentation_property:
-
+
tem = Fget (symbol, prop);
if (EQ (tem, make_number (0)))
tem = Qnil;
else if (!STRINGP (tem))
/* Feval protects its argument. */
tem = Feval (tem);
-
+
if (NILP (raw) && STRINGP (tem))
tem = Fsubstitute_command_keys (tem);
return tem;
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;
{
*p = '_';
p++;
}
-#endif /* not VMS4_4 */
-#ifdef VMS4_4
+#else /* VMS4_4 */
strcpy (name, sys_translate_unix (name));
#endif /* VMS4_4 */
#endif /* VMS */
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);
}
bsize = SBYTES (string);
bufp = buf = (unsigned char *) xmalloc (bsize);
- strp = (unsigned char *) SDATA (string);
+ strp = SDATA (string);
while (strp < SDATA (string) + SBYTES (string))
{
if (strp[0] == '\\' && strp[1] == '=')
start = strp;
start_idx = start - SDATA (string);
- while ((strp - (unsigned char *) SDATA (string)
+ while ((strp - SDATA (string)
< SBYTES (string))
&& *strp != ']')
strp++;
strp++; /* skip ] */
/* Save STRP in IDX. */
- idx = strp - (unsigned char *) SDATA (string);
+ idx = strp - SDATA (string);
tem = Fintern (make_string (start, length_byte), Qnil);
+ /* Ignore remappings unless there are no ordinary bindings. */
+ tem = Fwhere_is_internal (tem, keymap, Qt, Qnil, Qt);
+ if (NILP (tem))
+ tem = Fwhere_is_internal (tem, 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;
}
else
{ /* function is on a key */
- tem = Fkey_description (tem);
+ tem = Fkey_description (tem, Qnil);
goto subst_string;
}
}
start = strp;
start_idx = start - SDATA (string);
- while ((strp - (unsigned char *) SDATA (string)
- < SCHARS (string))
+ while ((strp - SDATA (string) < SBYTES (string))
&& *strp != '}' && *strp != '>')
strp++;
strp++; /* skip } or > */
/* Save STRP in IDX. */
- idx = strp - (unsigned char *) SDATA (string);
+ idx = strp - SDATA (string);
/* Get the value of the keymap in TEM, or nil if undefined.
Do this while still in the user's current buffer
{
Qfunction_documentation = intern ("function-documentation");
staticpro (&Qfunction_documentation);
-
+
DEFVAR_LISP ("internal-doc-file-name", &Vdoc_file_name,
doc: /* Name of file containing documentation strings of built-in symbols. */);
Vdoc_file_name = Qnil;
defsubr (&Ssnarf_documentation);
defsubr (&Ssubstitute_command_keys);
}
+
+/* arch-tag: 56281d4d-6949-43e2-be2e-f6517de744ba
+ (do not change this comment) */