summaryrefslogtreecommitdiff
path: root/lisp/loadhist.el
diff options
context:
space:
mode:
authorJuanma Barranquero <lekktu@gmail.com>2007-10-17 23:05:54 +0000
committerJuanma Barranquero <lekktu@gmail.com>2007-10-17 23:05:54 +0000
commitb5307e9c2bd6222f9af6a6792ae69f3bb45fdf45 (patch)
tree6785e4802822a2c4f52d8a4e39ae87ce10f81553 /lisp/loadhist.el
parent640602f766d7431ae40ac5ffa274db405b1c4d7d (diff)
downloademacs-b5307e9c2bd6222f9af6a6792ae69f3bb45fdf45.tar.gz
(feature-symbols, file-provides, file-requires, file-set-intersect,
file-dependents): Simplify. (unload-feature-special-hooks): Update list of special hooks.
Diffstat (limited to 'lisp/loadhist.el')
-rw-r--r--lisp/loadhist.el61
1 files changed, 28 insertions, 33 deletions
diff --git a/lisp/loadhist.el b/lisp/loadhist.el
index 4e9ee480d65..95de0d822a3 100644
--- a/lisp/loadhist.el
+++ b/lisp/loadhist.el
@@ -38,12 +38,11 @@
"Return the file and list of definitions associated with FEATURE.
The value is actually the element of `load-history'
for the file that did (provide FEATURE)."
- (catch 'foundit
- (mapc (lambda (x)
- (if (member (cons 'provide feature) (cdr x))
- (throw 'foundit x)))
- load-history)
- nil))
+ (catch 'foundit
+ (let ((element (cons 'provide feature)))
+ (dolist (x load-history nil)
+ (when (member element (cdr x))
+ (throw 'foundit x))))))
(defun feature-file (feature)
"Return the file name from which a given FEATURE was loaded.
@@ -72,32 +71,25 @@ A library name is equivalent to the file name that `load-library' would load."
"Return the list of features provided by FILE as it was loaded.
FILE can be a file name, or a library name.
A library name is equivalent to the file name that `load-library' would load."
- (let ((symbols (file-loadhist-lookup file))
- provides)
- (mapc (lambda (x)
- (if (and (consp x) (eq (car x) 'provide))
- (setq provides (cons (cdr x) provides))))
- symbols)
- provides))
+ (let (provides)
+ (dolist (x (file-loadhist-lookup file) provides)
+ (when (eq (car-safe x) 'provide)
+ (push x provides)))))
(defun file-requires (file)
"Return the list of features required by FILE as it was loaded.
FILE can be a file name, or a library name.
A library name is equivalent to the file name that `load-library' would load."
- (let ((symbols (file-loadhist-lookup file))
- requires)
- (mapc (lambda (x)
- (if (and (consp x) (eq (car x) 'require))
- (setq requires (cons (cdr x) requires))))
- symbols)
- requires))
+ (let (requires)
+ (dolist (x (file-loadhist-lookup file) requires)
+ (when (eq (car-safe x) 'require)
+ (push x requires)))))
(defsubst file-set-intersect (p q)
"Return the set intersection of two lists."
- (let ((ret nil))
+ (let (ret)
(dolist (x p ret)
- (if (memq x q) (setq ret (cons x ret))))
- ret))
+ (when (memq x q) (push x ret)))))
(defun file-dependents (file)
"Return the list of loaded libraries that depend on FILE.
@@ -107,9 +99,8 @@ A library name is equivalent to the file name that `load-library' would load."
(let ((provides (file-provides file))
(dependents nil))
(dolist (x load-history dependents)
- (if (file-set-intersect provides (file-requires (car x)))
- (setq dependents (cons (car x) dependents))))
- dependents))
+ (when (file-set-intersect provides (file-requires (car x)))
+ (push (car x) dependents)))))
(defun read-feature (prompt &optional loaded-p)
"Read feature name from the minibuffer, prompting with string PROMPT.
@@ -126,15 +117,19 @@ from a file."
(defvaralias 'loadhist-hook-functions 'unload-feature-special-hooks)
(defvar unload-feature-special-hooks
- '(after-change-functions
- after-insert-file-functions auto-fill-function
- before-change-functions blink-paren-function
- buffer-access-fontify-functions command-line-functions
- comment-indent-function kill-buffer-query-functions
- kill-emacs-query-functions lisp-indent-function
- mouse-position-function
+ '(after-change-functions after-insert-file-functions
+ after-make-frame-functions auto-fill-function before-change-functions
+ blink-paren-function buffer-access-fontify-functions command-line-functions
+ comment-indent-function compilation-finish-functions
+ disabled-command-function find-file-not-found-functions
+ font-lock-beginning-of-syntax-function font-lock-fontify-buffer-function
+ font-lock-fontify-region-function font-lock-mark-block-function
+ font-lock-syntactic-face-function font-lock-unfontify-buffer-function
+ font-lock-unfontify-region-function kill-buffer-query-functions
+ kill-emacs-query-functions lisp-indent-function mouse-position-function
redisplay-end-trigger-functions temp-buffer-show-function
window-scroll-functions window-size-change-functions
+ write-contents-functions write-file-functions
write-region-annotate-functions)
"A list of special hooks from Info node `(elisp)Standard Hooks'.