[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/setup ec23802 04/25: Check for duplicate elements with
From: |
Stefan Monnier |
Subject: |
[elpa] externals/setup ec23802 04/25: Check for duplicate elements with append/remove |
Date: |
Wed, 14 Apr 2021 18:48:59 -0400 (EDT) |
branch: externals/setup
commit ec23802d4c88a3f02ddf5660ee45a5db3e2c6b19
Author: Philip K <philipk@posteo.net>
Commit: Philip K <philipk@posteo.net>
Check for duplicate elements with append/remove
---
setup.el | 36 ++++++++++++++++++++++++++----------
1 file changed, 26 insertions(+), 10 deletions(-)
diff --git a/setup.el b/setup.el
index 07421f7..8f0017b 100644
--- a/setup.el
+++ b/setup.el
@@ -324,16 +324,24 @@ the first FEATURE."
(cond ((symbolp name) t)
((eq (car-safe name) 'append)
(setq name (cadr name)
- val `(append (funcall (or (get ',name 'custom-get)
- #'symbol-value)
- ',name)
- (list ,val))))
+ val (let ((sym (gensym)))
+ `(let ((,sym ,val)
+ (list (funcall (or (get ',name 'custom-get)
+ #'symbol-value)
+ ',name)))
+ (if (member ,sym list)
+ list
+ (append list (list ,sym)))))))
((eq (car-safe name) 'prepend)
(setq name (cadr name)
- val `(cons ,val
- (funcall (or (get ',name 'custom-get)
- #'symbol-value)
- ',name))))
+ val (let ((sym (gensym)))
+ `(let ((,sym ,val)
+ (list (funcall (or (get ',name 'custom-get)
+ #'symbol-value)
+ ',name)))
+ (if (member ,sym list)
+ list
+ (cons ,sym list))))))
((error "Invalid option %S" name)))
`(customize-set-variable ',name ,val "Modified by `setup'"))
:documentation "Set the option NAME to VAL.
@@ -358,10 +366,18 @@ form (remove VAR), VAL is removed from VAR."
(cond ((symbolp name) t)
((eq (car-safe name) 'append)
(setq name (cadr name)
- val `(append ,name (list val))))
+ val (let ((sym (gensym)))
+ `(let ((,sym ,val) (list ,name))
+ (if (member ,sym list)
+ list
+ (append list (list ,sym)))))))
((eq (car-safe name) 'prepend)
(setq name (cadr name)
- val `(cons ,val ,name)))
+ val (let ((sym (gensym)))
+ `(let ((,sym ,val) (list ,name))
+ (if (member ,sym list)
+ list
+ (cons ,sym list))))))
((eq (car-safe name) 'remove)
(setq name (cadr name)
val `(remove ,val ,name)))
- [elpa] externals/setup updated (7a78f66 -> 2503ad0), Stefan Monnier, 2021/04/14
- [elpa] externals/setup 669f0fb 01/25: Drop (remove ...) form for user options, Stefan Monnier, 2021/04/14
- [elpa] externals/setup 5e201d7 06/25: Use custom-load-symbol for modifying :option moderations, Stefan Monnier, 2021/04/14
- [elpa] externals/setup ccf2ebf 09/25: Copy commentary changes to README, Stefan Monnier, 2021/04/14
- [elpa] externals/setup 43092c2 11/25: Mention if no local macros are defined in setup docstring, Stefan Monnier, 2021/04/14
- [elpa] externals/setup 7562f2f 12/25: Prevent :option values from being saved in the user theme, Stefan Monnier, 2021/04/14
- [elpa] externals/setup 9a67209 14/25: Always call custom-load-symbol before customizing an option, Stefan Monnier, 2021/04/14
- [elpa] externals/setup f764229 15/25: Explain how :with-feature sets an implicit mode, Stefan Monnier, 2021/04/14
- [elpa] externals/setup 439b4a8 02/25: Raise an error if lexical binding is not enabled, Stefan Monnier, 2021/04/14
- [elpa] externals/setup a77d9f2 03/25: Don't apply kbd to symbols in :global, :bind, :unbind and :rebind, Stefan Monnier, 2021/04/14
- [elpa] externals/setup ec23802 04/25: Check for duplicate elements with append/remove,
Stefan Monnier <=
- [elpa] externals/setup df6f6eb 13/25: Add note on modifying option names, Stefan Monnier, 2021/04/14
- [elpa] externals/setup 7e3d025 05/25: Update documentation for :option and :local-set, Stefan Monnier, 2021/04/14
- [elpa] externals/setup e1d51a3 07/25: Add (remove VAR) form for :option, Stefan Monnier, 2021/04/14
- [elpa] externals/setup 7699c78 08/25: Reindent commentary examples, Stefan Monnier, 2021/04/14
- [elpa] externals/setup c707965 10/25: Handle symbols in :global, :bind, :unbind and :rebind, Stefan Monnier, 2021/04/14
- [elpa] externals/setup ea52eb1 17/25: Add note that :option does not manipulate user theme., Stefan Monnier, 2021/04/14
- [elpa] externals/setup 2503ad0 25/25: Expand load path for :load-from, Stefan Monnier, 2021/04/14
- [elpa] externals/setup d44d333 20/25: Add :load-from macro, Stefan Monnier, 2021/04/14
- [elpa] externals/setup 5728369 18/25: Fix shell example in README and Commentary section, Stefan Monnier, 2021/04/14
- [elpa] externals/setup 22b5312 23/25: Add :file-match macro, Stefan Monnier, 2021/04/14