]> git.eshelyaron.com Git - emacs.git/commitdiff
(symbol-file-load-history-loaded)
authorMiles Bader <miles@gnu.org>
Tue, 9 Oct 2001 11:14:31 +0000 (11:14 +0000)
committerMiles Bader <miles@gnu.org>
Tue, 9 Oct 2001 11:14:31 +0000 (11:14 +0000)
(load-symbol-file-load-history, symbol-file): Moved from `help.el'.

lisp/subr.el

index 5e52728cb3a0f95b7b0b91687c8e8b8f6e3be9fd..204aa62a2d2b9cf3339559a6b0dacc7b3d8a3a55 100644 (file)
@@ -797,6 +797,45 @@ other hooks, such as major mode hooks, can do the job."
         (if append
             (append (symbol-value list-var) (list element))
           (cons element (symbol-value list-var))))))
+
+\f
+;;; 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))
+
 \f
 ;;;; Specifying things to do after certain files are loaded.