# HG changeset patch # User Richard M. Stallman # Date 1019964232 0 # Node ID 0edc2b27187bfcc53a5c70bfa5a10b2555248c27 # Parent 5b9979baa7583e8722682a499ba626cacafd1d76 (custom-load-symbol): Moved from cus-edit.el. (custom-load-recursion): Likewise. diff -r 5b9979baa758 -r 0edc2b27187b lisp/custom.el --- 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