Mercurial > emacs
changeset 44911:0edc2b27187b
(custom-load-symbol): Moved from cus-edit.el.
(custom-load-recursion): Likewise.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Sun, 28 Apr 2002 03:23:52 +0000 |
parents | 5b9979baa758 |
children | 4600e8f9fcdf |
files | lisp/custom.el |
diffstat | 1 files changed, 41 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/custom.el Sun Apr 28 03:18:29 2002 +0000 +++ b/lisp/custom.el Sun Apr 28 03:23:52 2002 +0000 @@ -457,6 +457,47 @@ (unless (member load loads) (put symbol 'custom-loads (cons (purecopy load) loads))))) +;;; Loading files needed to customize a symbol. +;;; This is in custom.el because menu-bar.el needs it for toggle cmds. + +(defvar custom-load-recursion nil + "Hack to avoid recursive dependencies.") + +(defun custom-load-symbol (symbol) + "Load all dependencies for SYMBOL." + (unless custom-load-recursion + (let ((custom-load-recursion t) + (loads (get symbol 'custom-loads)) + load) + (while loads + (setq load (car loads) + loads (cdr loads)) + (cond ((symbolp load) + (condition-case nil + (require load) + (error nil))) + ;; Don't reload a file already loaded. + ((and (boundp 'preloaded-file-list) + (member load preloaded-file-list))) + ((assoc load load-history)) + ;; This was just (assoc (locate-library load) load-history) + ;; but has been optimized not to load locate-library + ;; if not necessary. + ((let (found (regexp (regexp-quote load))) + (dolist (loaded load-history) + (and (string-match regexp (car loaded)) + (eq (locate-library load) (car loaded)) + (setq found t))) + found)) + ;; Without this, we would load cus-edit recursively. + ;; We are still loading it when we call this, + ;; and it is not in load-history yet. + ((equal load "cus-edit")) + (t + (condition-case nil + (load-library load) + (error nil)))))))) + ;;; Initializing. (defvar custom-local-buffer nil