diff lisp/loadup.el @ 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 bedf3747a6d7
children 5efbd1253905
line wrap: on
line diff
--- a/lisp/loadup.el	Thu Apr 15 20:14:08 2010 -0500
+++ b/lisp/loadup.el	Sat Apr 17 10:40:03 2010 +0100
@@ -220,10 +220,22 @@
   (load "site-init" t))
 
 ;; Add information from this file to the load history. Delete information
-;; for those files in preloaded-file-list; the symbol file information can
-;; be taken from DOC, and #'unload-feature makes very little sense for
-;; dumped functionality.
-(setq load-history (cons (nreverse current-load-list) (last load-history))
+;; that is available from DOC for those files in preloaded-file-list; in
+;; practice, this boils down to #'provide and #'require calls, and variables
+;; without documentation. Yes, this is a bit ugly.
+(setq load-history (cons (nreverse current-load-list)
+                         (delete*
+                          nil
+                          (mapc #'(lambda (element)
+                                    (remassq 'defun element)
+                                    (delete-if
+                                     #'(lambda (elt)
+                                         (and
+                                          (symbolp elt)
+                                          (get elt 'variable-documentation)))
+                                     element))
+                                load-history)
+                          :key #'cdr))
       ;; Clear current-load-list; this (and adding information to
       ;; load-history) is normally done in lread.c after reading the
       ;; entirety of a file, something which never happens for loadup.el.