Commit b5307e9c authored by Juanma Barranquero's avatar Juanma Barranquero
Browse files

(feature-symbols, file-provides, file-requires, file-set-intersect,

file-dependents): Simplify.
(unload-feature-special-hooks): Update list of special hooks.
parent 640602f7
2007-10-17 Juanma Barranquero <lekktu@gmail.com>
* loadhist.el (feature-symbols, file-provides, file-requires)
(file-set-intersect, file-dependents): Simplify.
(unload-feature-special-hooks): Update list of special hooks.
2007-10-17 Tassilo Horn <tassilo@member.fsf.org> 2007-10-17 Tassilo Horn <tassilo@member.fsf.org>
* bindings.el (completion-ignored-extensions): Remove pdf and dvi * bindings.el (completion-ignored-extensions): Remove pdf and dvi
...@@ -11,7 +17,7 @@ ...@@ -11,7 +17,7 @@
text and image display. Add binding C-c C-e to switch to an text and image display. Add binding C-c C-e to switch to an
editing mode. editing mode.
(doc-view-ghostscript-options, doc-view-ps->pdf): Add "-dSAFER" to (doc-view-ghostscript-options, doc-view-ps->pdf): Add "-dSAFER" to
avoid security problems when rendering files untrusted sources. avoid security problems when rendering files from untrusted sources.
2007-10-17 Aaron Hawley <aaronh@garden.org> 2007-10-17 Aaron Hawley <aaronh@garden.org>
......
...@@ -38,12 +38,11 @@ ...@@ -38,12 +38,11 @@
"Return the file and list of definitions associated with FEATURE. "Return the file and list of definitions associated with FEATURE.
The value is actually the element of `load-history' The value is actually the element of `load-history'
for the file that did (provide FEATURE)." for the file that did (provide FEATURE)."
(catch 'foundit (catch 'foundit
(mapc (lambda (x) (let ((element (cons 'provide feature)))
(if (member (cons 'provide feature) (cdr x)) (dolist (x load-history nil)
(throw 'foundit x))) (when (member element (cdr x))
load-history) (throw 'foundit x))))))
nil))
(defun feature-file (feature) (defun feature-file (feature)
"Return the file name from which a given FEATURE was loaded. "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." ...@@ -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. "Return the list of features provided by FILE as it was loaded.
FILE can be a file name, or a library name. FILE can be a file name, or a library name.
A library name is equivalent to the file name that `load-library' would load." A library name is equivalent to the file name that `load-library' would load."
(let ((symbols (file-loadhist-lookup file)) (let (provides)
provides) (dolist (x (file-loadhist-lookup file) provides)
(mapc (lambda (x) (when (eq (car-safe x) 'provide)
(if (and (consp x) (eq (car x) 'provide)) (push x provides)))))
(setq provides (cons (cdr x) provides))))
symbols)
provides))
(defun file-requires (file) (defun file-requires (file)
"Return the list of features required by FILE as it was loaded. "Return the list of features required by FILE as it was loaded.
FILE can be a file name, or a library name. FILE can be a file name, or a library name.
A library name is equivalent to the file name that `load-library' would load." A library name is equivalent to the file name that `load-library' would load."
(let ((symbols (file-loadhist-lookup file)) (let (requires)
requires) (dolist (x (file-loadhist-lookup file) requires)
(mapc (lambda (x) (when (eq (car-safe x) 'require)
(if (and (consp x) (eq (car x) 'require)) (push x requires)))))
(setq requires (cons (cdr x) requires))))
symbols)
requires))
(defsubst file-set-intersect (p q) (defsubst file-set-intersect (p q)
"Return the set intersection of two lists." "Return the set intersection of two lists."
(let ((ret nil)) (let (ret)
(dolist (x p ret) (dolist (x p ret)
(if (memq x q) (setq ret (cons x ret)))) (when (memq x q) (push x ret)))))
ret))
(defun file-dependents (file) (defun file-dependents (file)
"Return the list of loaded libraries that depend on 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." ...@@ -107,9 +99,8 @@ A library name is equivalent to the file name that `load-library' would load."
(let ((provides (file-provides file)) (let ((provides (file-provides file))
(dependents nil)) (dependents nil))
(dolist (x load-history dependents) (dolist (x load-history dependents)
(if (file-set-intersect provides (file-requires (car x))) (when (file-set-intersect provides (file-requires (car x)))
(setq dependents (cons (car x) dependents)))) (push (car x) dependents)))))
dependents))
(defun read-feature (prompt &optional loaded-p) (defun read-feature (prompt &optional loaded-p)
"Read feature name from the minibuffer, prompting with string PROMPT. "Read feature name from the minibuffer, prompting with string PROMPT.
...@@ -126,15 +117,19 @@ from a file." ...@@ -126,15 +117,19 @@ from a file."
(defvaralias 'loadhist-hook-functions 'unload-feature-special-hooks) (defvaralias 'loadhist-hook-functions 'unload-feature-special-hooks)
(defvar unload-feature-special-hooks (defvar unload-feature-special-hooks
'(after-change-functions '(after-change-functions after-insert-file-functions
after-insert-file-functions auto-fill-function after-make-frame-functions auto-fill-function before-change-functions
before-change-functions blink-paren-function blink-paren-function buffer-access-fontify-functions command-line-functions
buffer-access-fontify-functions command-line-functions comment-indent-function compilation-finish-functions
comment-indent-function kill-buffer-query-functions disabled-command-function find-file-not-found-functions
kill-emacs-query-functions lisp-indent-function font-lock-beginning-of-syntax-function font-lock-fontify-buffer-function
mouse-position-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 redisplay-end-trigger-functions temp-buffer-show-function
window-scroll-functions window-size-change-functions window-scroll-functions window-size-change-functions
write-contents-functions write-file-functions
write-region-annotate-functions) write-region-annotate-functions)
"A list of special hooks from Info node `(elisp)Standard Hooks'. "A list of special hooks from Info node `(elisp)Standard Hooks'.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment