From 448a01706c7f407014018ab0bed004fc26a575f2 Mon Sep 17 00:00:00 2001 From: Miles Bader Date: Tue, 9 Oct 2001 11:14:31 +0000 Subject: [PATCH] (symbol-file-load-history-loaded) (load-symbol-file-load-history, symbol-file): Moved from `help.el'. --- lisp/subr.el | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/lisp/subr.el b/lisp/subr.el index 5e52728cb3a..204aa62a2d2 100644 --- a/lisp/subr.el +++ b/lisp/subr.el @@ -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)))))) + + +;;; 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. -- 2.39.2