Mercurial > hg > xemacs-beta
diff src/bytecode.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 | 71ee43b8a74d |
children | 9f738305f80f 308d34e9f07d |
line wrap: on
line diff
--- a/src/bytecode.c Thu Apr 15 20:14:08 2010 -0500 +++ b/src/bytecode.c Sat Apr 17 10:40:03 2010 +0100 @@ -2562,22 +2562,36 @@ #endif -/* used only by Snarf-documentation; there must be doc already. */ +/* used only by Snarf-documentation. */ void set_compiled_function_documentation (Lisp_Compiled_Function *f, Lisp_Object new_doc) { - assert (f->flags.documentationp); assert (INTP (new_doc) || STRINGP (new_doc)); - if (f->flags.interactivep && f->flags.domainp) - XCAR (f->doc_and_interactive) = new_doc; - else if (f->flags.interactivep) - XCAR (f->doc_and_interactive) = new_doc; - else if (f->flags.domainp) - XCAR (f->doc_and_interactive) = new_doc; + if (f->flags.documentationp) + { + if (f->flags.interactivep && f->flags.domainp) + XCAR (f->doc_and_interactive) = new_doc; + else if (f->flags.interactivep) + XCAR (f->doc_and_interactive) = new_doc; + else if (f->flags.domainp) + XCAR (f->doc_and_interactive) = new_doc; + else + f->doc_and_interactive = new_doc; + } else - f->doc_and_interactive = new_doc; + { + f->flags.documentationp = 1; + if (f->flags.interactivep || f->flags.domainp) + { + f->doc_and_interactive = Fcons (new_doc, f->doc_and_interactive); + } + else + { + f->doc_and_interactive = new_doc; + } + } }