(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.
This commit is contained in:
Stefan Monnier 2009-09-15 03:39:40 +00:00
parent 8547eda321
commit 838ff45802
3 changed files with 18 additions and 4 deletions

View file

@ -210,6 +210,8 @@ functions and variables.
* 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

View file

@ -1,3 +1,10 @@
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

View file

@ -1670,6 +1670,11 @@ This function makes or adds to an entry on `after-load-alist'."
(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.
@ -1682,15 +1687,15 @@ This function is called directly from the C code."
(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.