summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2022-09-24 12:15:58 +0200
committerLars Ingebrigtsen <larsi@gnus.org>2022-09-24 12:15:58 +0200
commit6403ede2016d0d16a487d759ef45745c3d4ac24b (patch)
tree6bf274093bad0dcf860a987eb14b0be53c0cc4f4
parent126d5b23cf252ceae537a686e46ba86c0591e658 (diff)
downloademacs-6403ede2016d0d16a487d759ef45745c3d4ac24b.tar.gz
Ensure that cus-load doesn't add things twice
* lisp/cus-dep.el (custom-make-dependencies): Use it. * lisp/custom.el (custom--add-custom-loads): New function.
-rw-r--r--lisp/cus-dep.el5
-rw-r--r--lisp/custom.el7
2 files changed, 8 insertions, 4 deletions
diff --git a/lisp/cus-dep.el b/lisp/cus-dep.el
index 163a2da1f12..3f18202affe 100644
--- a/lisp/cus-dep.el
+++ b/lisp/cus-dep.el
@@ -175,10 +175,7 @@ Usage: emacs -batch -l ./cus-dep.el -f custom-make-dependencies DIRS"
(prin1 (sort found #'string<))))
alist))))))
(dolist (e (sort alist (lambda (e1 e2) (string< (car e1) (car e2)))))
- ;; Don't overwrite elements added by packages.
- (insert "(put '" (car e)
- " 'custom-loads (append '" (cdr e)
- " (get '" (car e) " 'custom-loads)))\n")))
+ (insert "(custom--add-custom-loads '" (car e) " '" (cdr e) ")\n")))
(insert "\
;; The remainder of this file is for handling :version.
diff --git a/lisp/custom.el b/lisp/custom.el
index 352b5b0e160..604b1a3ff48 100644
--- a/lisp/custom.el
+++ b/lisp/custom.el
@@ -1707,6 +1707,13 @@ If a choice with the same tag already exists, no action is taken."
(put variable 'custom-type
(append choices (list choice))))))
+(defun custom--add-custom-loads (symbol loads)
+ ;; Don't overwrite existing `custom-loads'.
+ (dolist (load (get symbol 'custom-loads))
+ (unless (memq load loads)
+ (push load loads)))
+ (put symbol 'custom-loads loads))
+
(provide 'custom)
;;; custom.el ends here