Function: documentation
documentation is a function defined in doc.c.
Signature
(documentation FUNCTION &optional RAW)
Documentation
Return the documentation string of FUNCTION.
Unless a non-nil second argument RAW is given, the
string is passed through substitute-command-keys.
Probably introduced at or before Emacs version 21.1.
Source Code
// Defined in /usr/src/emacs/src/doc.c
{
Lisp_Object doc;
bool try_reload = true;
documentation:
doc = Qnil;
if (SYMBOLP (function))
{
Lisp_Object tem = Fget (function, Qfunction_documentation);
if (!NILP (tem))
return Fdocumentation_property (function, Qfunction_documentation,
raw);
}
Lisp_Object fun = Findirect_function (function, Qnil);
if (NILP (fun))
xsignal1 (Qvoid_function, function);
if (CONSP (fun) && EQ (XCAR (fun), Qmacro))
fun = XCDR (fun);
doc = call1 (Qfunction_documentation, fun);
/* If DOC is 0, it's typically because of a dumped file missing
from the DOC file (bug in src/Makefile.in). */
if (BASE_EQ (doc, make_fixnum (0)))
doc = Qnil;
if (FIXNUMP (doc) || CONSP (doc))
{
Lisp_Object tem;
tem = get_doc_string (doc, 0);
if (NILP (tem) && try_reload)
{
/* The file is newer, we need to reset the pointers. */
try_reload = reread_doc_file (Fcar_safe (doc));
if (try_reload)
{
try_reload = false;
goto documentation;
}
}
else
doc = tem;
}
if (NILP (raw))
doc = call1 (Qsubstitute_command_keys, doc);
return doc;
}