Mercurial > emacs
changeset 28036:ec8b11f3d3da
(Fdocumentation_property): If value is not a string,
and doesn't refer to etc/DOC, evaluate it to obtain a string.
author | Gerd Moellmann <gerd@gnu.org> |
---|---|
date | Tue, 07 Mar 2000 14:19:23 +0000 |
parents | 5ec5275651aa |
children | acbd35afbe7b |
files | src/doc.c |
diffstat | 1 files changed, 13 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/src/doc.c Tue Mar 07 12:41:05 2000 +0000 +++ b/src/doc.c Tue Mar 07 14:19:23 2000 +0000 @@ -379,12 +379,15 @@ return doc; } -DEFUN ("documentation-property", Fdocumentation_property, Sdocumentation_property, 2, 3, 0, +DEFUN ("documentation-property", Fdocumentation_property, + Sdocumentation_property, 2, 3, 0, "Return the documentation string that is SYMBOL's PROP property.\n\ -This is like `get', but it can refer to strings stored in the\n\ -`etc/DOC' file; and if the value is a string, it is passed through\n\ -`substitute-command-keys'. A non-nil third argument RAW avoids this\n\ -translation.") +Third argument RAW omitted or nil means pass the result through\n\ +`substitute-command-keys' if it is a string.\n\ +\n\ +This is differs from `get' in that it can refer to strings stored in the\n\ +`etc/DOC' file; and that it evaluates documentation properties that\n\ +aren't strings.") (symbol, prop, raw) Lisp_Object symbol, prop, raw; { @@ -393,8 +396,12 @@ tem = Fget (symbol, prop); if (INTEGERP (tem)) tem = get_doc_string (XINT (tem) > 0 ? tem : make_number (- XINT (tem)), 0, 0); - else if (CONSP (tem)) + else if (CONSP (tem) && INTEGERP (XCDR (tem))) tem = get_doc_string (tem, 0, 0); + else if (!STRINGP (tem)) + /* Feval protects its argument. */ + tem = Feval (tem); + if (NILP (raw) && STRINGP (tem)) tem = Fsubstitute_command_keys (tem); return tem;