diff lisp/subr.el @ 83238:223c12363c0c

Merged in changes from CVS trunk. Patches applied: * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-747 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-748 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-749 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-750 Merge from gnus--rel--5.10 * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-751 Update from CVS * miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-752 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-78 Merge from emacs--cvs-trunk--0 * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-79 Update from CVS * miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-80 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-278
author Karoly Lorentey <lorentey@elte.hu>
date Thu, 06 Jan 2005 15:00:09 +0000
parents 4ee39d9428b0 f38536b30f3a
children 025da3ba778e
line wrap: on
line diff
--- a/lisp/subr.el	Thu Dec 23 16:43:51 2004 +0000
+++ b/lisp/subr.el	Thu Jan 06 15:00:09 2005 +0000
@@ -823,7 +823,7 @@
 (defalias 'unfocus-frame 'ignore "")
 
 
-;;;; Obsolescence declarations for variables.
+;;;; Obsolescence declarations for variables, and aliases.
 
 (make-obsolete-variable 'directory-sep-char "do not use it." "21.1")
 (make-obsolete-variable 'mode-line-inverse-video "use the appropriate faces instead." "21.1")
@@ -840,6 +840,8 @@
 (make-obsolete-variable 'x-lost-selection-hooks 'x-lost-selection-functions "21.4")
 (defvaralias 'x-sent-selection-hooks 'x-sent-selection-functions)
 (make-obsolete-variable 'x-sent-selection-hooks 'x-sent-selection-functions "21.4")
+
+(defvaralias 'messages-buffer-max-lines 'message-log-max)
 
 ;;;; Alternate names for functions - these are not being phased out.
 
@@ -1012,19 +1014,33 @@
 ;;; 	  nil nil t)
 ;;;     (setq symbol-file-load-history-loaded t)))
 
-(defun symbol-file (function)
-  "Return the input source from which FUNCTION was loaded.
+(defun symbol-file (symbol &optional type)
+  "Return the input source in which SYMBOL was defined.
 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."
-  (if (and (symbolp function) (fboundp function)
-	   (eq 'autoload (car-safe (symbol-function function))))
-      (nth 1 (symbol-function function))
+It can also be nil, if the definition is not associated with any file.
+
+If TYPE is nil, then any kind of definition is acceptable.
+If type is `defun' or `defvar', that specifies function
+definition only or variable definition only."
+  (if (and (or (null type) (eq type 'defun))
+	   (symbolp symbol) (fboundp symbol)
+	   (eq 'autoload (car-safe (symbol-function symbol))))
+      (nth 1 (symbol-function symbol))
     (let ((files load-history)
 	  file)
       (while files
-	(if (member function (cdr (car files)))
+	(if (if type
+		(if (eq type 'defvar)
+		    ;; Variables are present just as their names.
+		    (member symbol (cdr (car files)))
+		  ;; Other types are represented as (TYPE . NAME).
+		  (member (cons type symbol) (cdr (car files))))
+	      ;; We accept all types, so look for variable def
+	      ;; and then for any other kind.
+	      (or (member symbol (cdr (car files)))
+		  (rassq symbol (cdr (car files)))))
 	    (setq file (car (car files)) files nil))
 	(setq files (cdr files)))
       file)))