# HG changeset patch # User Gerd Moellmann # Date 952438763 0 # Node ID ec8b11f3d3dad3a3afd5e196c7c50711062039e0 # Parent 5ec5275651aa474a63168df306ac1ca7b98ec7fd (Fdocumentation_property): If value is not a string, and doesn't refer to etc/DOC, evaluate it to obtain a string. diff -r 5ec5275651aa -r ec8b11f3d3da src/doc.c --- 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;