\f
* Lisp changes in Emacs 23.2
+** New hook `after-load-functions' run after loading an Elisp file.
+
** You can control which binding is preferentially shown in menus and
docstrings by adding a `:advertised-binding' property to the corresponding
command's symbol. That property can hold a single binding or a list
+2009-09-15 Stefan Monnier <monnier@iro.umontreal.ca>
+
+ * subr.el (after-load-functions): New hook.
+ (do-after-load-evaluation): Run it. Use string-match-p to detect
+ `obsolete' packages, rather than painfully extracting the relevant
+ directory name.
+
2009-09-15 Glenn Morris <rgm@gnu.org>
* apropos.el (apropos-documentation-check-doc-file): Avoid assignment to
(featurep file))
(eval form))))
+(defvar after-load-functions nil
+ "Special hook run after loading a file.
+Each function there is called with a single argument, the absolute
+name of the file just loaded.")
+
(defun do-after-load-evaluation (abs-file)
"Evaluate all `eval-after-load' forms, if any, for ABS-FILE.
ABS-FILE, a string, should be the absolute true name of a file just loaded.
(mapc #'eval (cdr a-l-element))))
after-load-alist)
;; Complain when the user uses obsolete files.
- (when (equal "obsolete"
- (file-name-nondirectory
- (directory-file-name (file-name-directory abs-file))))
+ (when (string-match-p "/obsolete/[^/]*\\'" abs-file)
(run-with-timer 0 nil
(lambda (file)
(message "Package %s is obsolete!"
(substring file 0
(string-match "\\.elc?\\>" file))))
- (file-name-nondirectory abs-file))))
+ (file-name-nondirectory abs-file)))
+ ;; Finally, run any other hook.
+ (run-hook-with-args 'after-load-functions abs-file))
(defun eval-next-after-load (file)
"Read the following input sexp, and run it whenever FILE is loaded.