changeset 47355:9e3ee43b5262

(symbol-file): Also work for autoloaded funcs. (syntax-after): New fun moved from syntax.el.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Mon, 09 Sep 2002 23:13:18 +0000
parents 27533450eb3b
children c4da69acaa79
files lisp/subr.el
diffstat 1 files changed, 19 insertions(+), 9 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/subr.el	Mon Sep 09 22:45:09 2002 +0000
+++ b/lisp/subr.el	Mon Sep 09 23:13:18 2002 +0000
@@ -919,14 +919,16 @@
 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))
+  (if (and (symbolp function) (fboundp function)
+	   (eq 'autoload (car-safe (symbol-function function))))
+      (nth 1 (symbol-function function))
+    (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.
@@ -952,7 +954,7 @@
 	      (featurep file)
 	    ;; Make sure `load-history' contains the files dumped with
 	    ;; Emacs for the case that FILE is one of them.
-	    ;;; (load-symbol-file-load-history)
+	    ;; (load-symbol-file-load-history)
 	    (assoc file load-history))
 	  (eval form))))
   form)
@@ -1862,6 +1864,14 @@
     (set-char-table-parent table (or oldtable (standard-syntax-table)))
     table))
 
+(defun syntax-after (pos)
+  "Return the syntax of the char after POS."
+  (unless (or (< pos (point-min)) (>= pos (point-max)))
+    (let ((st (if parse-sexp-lookup-properties
+		  (get-char-property pos 'syntax-table))))
+      (if (consp st) st
+	(aref (or st (syntax-table)) (char-after pos))))))
+
 (defun add-to-invisibility-spec (arg)
   "Add elements to `buffer-invisibility-spec'.
 See documentation for `buffer-invisibility-spec' for the kind of elements