Mercurial > hg > xemacs-beta
diff src/doc.c @ 5206:39d74978fd32
Keep around file info for dumped functions and variables without docstrings.
src/ChangeLog addition:
2010-04-17 Aidan Kehoe <kehoea@parhasard.net>
* doc.c (Fdocumentation):
If we have a zero length doc string in DOC, as may happen for
undocumented compiled function objects which nonetheless have file
information stored, return nil.
(Fsnarf_documentation):
DOC info existing for compiled functions without docstrings is
perfectly legitimate, now the file is also used to store file names.
* bytecode.c (set_compiled_function_documentation):
Allow this function to set the documentation successfully for
compiled function objects that don't currently have documentation;
most relevant for functions without docstrings which have file
information stored in DOC.
lib-src/ChangeLog addition:
2010-04-17 Aidan Kehoe <kehoea@parhasard.net>
* make-docfile.c (scan_lisp_file):
Even if a function doesn't have a doc string, store its file name
in DOC.
lisp/ChangeLog addition:
2010-04-17 Aidan Kehoe <kehoea@parhasard.net>
* loadup.el (load-history): Be a bit more discriminate in the
entries we remove from load-history, only removing those where the
information is entirely available from DOC.
Fixes problems finding the files that dumped undocumented
variables were loaded from, reported by Didier Verna.
* loadhist.el (symbol-file): Correct a regexp here, I had
forgotten to double a backslash.
author | Aidan Kehoe <kehoea@parhasard.net> |
---|---|
date | Sat, 17 Apr 2010 10:40:03 +0100 |
parents | 16112448d484 |
children | 308d34e9f07d |
line wrap: on
line diff
--- a/src/doc.c Thu Apr 15 20:14:08 2010 -0500 +++ b/src/doc.c Sat Apr 17 10:40:03 2010 +0100 @@ -613,7 +613,15 @@ if (STRINGP (tem)) doc = tem; else if (NATNUMP (tem) || CONSP (tem)) - doc = get_doc_string (tem); + { + doc = get_doc_string (tem); + /* We may have zero length strings in the docfile for file + information. */ + if (STRINGP (doc) && 0 == XSTRING_LENGTH (doc)) + { + return Qnil; + } + } else return Qnil; } @@ -903,33 +911,24 @@ slots for it. */ Lisp_Compiled_Function *f = XCOMPILED_FUNCTION (fun); - /* This compiled-function object must have a - slot for the docstring, since we've found a - docstring for it. Unless there were multiple - definitions of it, and the latter one didn't - have any doc, which is a legal if slightly - bogus situation, so don't blow up. */ + /* If there were multiple definitions for this function, + and the latter one didn't + have any doc, warn and don't blow up. */ + Lisp_Object old = + compiled_function_documentation (f); + if (!ZEROP (old) && !NILP (old)) + { + weird_doc (sym, "duplicate", "bytecode", pos); + /* In the case of duplicate doc file entries, + always take the later one. But if the doc is + not an int (a string, say) leave it alone. */ + if (!INTP (old)) + goto weird; + } - if (! (f->flags.documentationp)) - { - weird_doc (sym, "no doc slot", "bytecode", pos); - goto weird; - } - else - { - Lisp_Object old = - compiled_function_documentation (f); - if (!ZEROP (old)) - { - weird_doc (sym, "duplicate", "bytecode", pos); - /* In the case of duplicate doc file entries, - always take the later one. But if the doc is - not an int (a string, say) leave it alone. */ - if (!INTP (old)) - goto weird; - } - set_compiled_function_documentation (f, offset); - } + /* This may be a function or variable where we want + to make the file name available. */ + set_compiled_function_documentation (f, offset); } else {