Commit 8f772dfd authored by Richard M. Stallman's avatar Richard M. Stallman
Browse files

(custom-load-symbol): Moved from cus-edit.el.

(custom-load-recursion): Likewise.
parent e8e98f20
......@@ -457,6 +457,47 @@ LOAD should be either a library file name, or a feature name."
(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))
(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)))
;; 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"))
(condition-case nil
(load-library load)
(error nil))))))))
;;; Initializing.
(defvar custom-local-buffer nil
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