changeset 39725:c64d3e3adf5d

(symbol-file-load-history-loaded) (load-symbol-file-load-history, symbol-file): Moved from `help.el'.
author Miles Bader <miles@gnu.org>
date Tue, 09 Oct 2001 11:14:31 +0000
parents 6d912cac53cf
children 19d78cd38271
files lisp/subr.el
diffstat 1 files changed, 39 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/subr.el	Tue Oct 09 10:18:43 2001 +0000
+++ b/lisp/subr.el	Tue Oct 09 11:14:31 2001 +0000
@@ -797,6 +797,45 @@
 	 (if append
 	     (append (symbol-value list-var) (list element))
 	   (cons element (symbol-value list-var))))))
+
+
+;;; Load history
+
+(defvar symbol-file-load-history-loaded nil
+  "Non-nil means we have loaded the file `fns-VERSION.el' in `exec-directory'.
+That file records the part of `load-history' for preloaded files,
+which is cleared out before dumping to make Emacs smaller.")
+
+(defun load-symbol-file-load-history ()
+  "Load the file `fns-VERSION.el' in `exec-directory' if not already done.
+That file records the part of `load-history' for preloaded files,
+which is cleared out before dumping to make Emacs smaller."
+  (unless symbol-file-load-history-loaded
+    (load (expand-file-name
+	   ;; fns-XX.YY.ZZ.el does not work on DOS filesystem.
+	   (if (eq system-type 'ms-dos)
+	       "fns.el"
+	     (format "fns-%s.el" emacs-version))
+	   exec-directory)
+	  ;; The file name fns-%s.el already has a .el extension.
+	  nil nil t)
+    (setq symbol-file-load-history-loaded t)))
+
+(defun symbol-file (function)
+  "Return the input source from which FUNCTION was loaded.
+The value is normally a string that was passed to `load':
+either an absolute file name, or a library name
+\(with no directory name and no `.el' or `.elc' at the end).
+It can also be nil, if the definition is not associated with any file."
+  (load-symbol-file-load-history)
+  (let ((files load-history)
+	file functions)
+    (while files
+      (if (memq function (cdr (car files)))
+	  (setq file (car (car files)) files nil))
+      (setq files (cdr files)))
+    file))
+
 
 ;;;; Specifying things to do after certain files are loaded.