emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] Changes to emacs/lisp/custom.el


From: Richard M. Stallman
Subject: [Emacs-diffs] Changes to emacs/lisp/custom.el
Date: Sat, 27 Apr 2002 23:23:52 -0400

Index: emacs/lisp/custom.el
diff -c emacs/lisp/custom.el:1.51 emacs/lisp/custom.el:1.52
*** emacs/lisp/custom.el:1.51   Fri Apr 19 03:42:31 2002
--- emacs/lisp/custom.el        Sat Apr 27 23:23:52 2002
***************
*** 457,462 ****
--- 457,503 ----
      (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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]