From f6ee1260dd77f78131492db51f2c170a54db0218 Mon Sep 17 00:00:00 2001 From: Gerd Moellmann Date: Tue, 7 Mar 2000 14:19:23 +0000 Subject: [PATCH] (Fdocumentation_property): If value is not a string, and doesn't refer to etc/DOC, evaluate it to obtain a string. --- src/doc.c | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/doc.c b/src/doc.c index 6aa79dcb6df..7f3cea1a2db 100644 --- a/src/doc.c +++ b/src/doc.c @@ -379,12 +379,15 @@ string is passed through `substitute-command-keys'.") 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 @@ translation.") 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; -- 2.39.5