changeset 23853:e9fe8ed71303

(symbol-file-load-history-loaded): Variable renamed, and defvar moved from loadhist.el. (symbol-file): Renamed from describe-function-find-file. Load fns-VERSION.el here. (describe-variable, describe-function-1): Use symbol-file.
author Karl Heuer <kwzh@gnu.org>
date Thu, 10 Dec 1998 03:25:33 +0000
parents dc812cd8bd1b
children cb2244476b40
files lisp/help.el
diffstat 1 files changed, 23 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/help.el	Thu Dec 10 03:25:15 1998 +0000
+++ b/lisp/help.el	Thu Dec 10 03:25:33 1998 +0000
@@ -541,7 +541,27 @@
 	      (error nil)))
       (set-syntax-table stab))))
 
-(defun describe-function-find-file (function)
+(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 symbol-file (function)
+  "Return the input source from which SYM 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."
+  (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))
   (let ((files load-history)
 	file functions)
     (while files
@@ -610,7 +630,7 @@
       (princ "("))
     (princ string)
     (or file-name
-	(setq file-name (describe-function-find-file function)))
+	(setq file-name (symbol-file function)))
     (if file-name
 	(progn
 	  (princ " in `")
@@ -749,7 +769,7 @@
 	  ;; Make a hyperlink to the library if appropriate.  (Don't
 	  ;; change the format of the buffer's initial line in case
 	  ;; anything expects the current format.)
-	  (let ((file-name (describe-function-find-file variable)))
+	  (let ((file-name (symbol-file variable)))
 	    (when file-name
 	      (princ "\n\nDefined in `")
 	      (princ file-name)