[Emacs] Simpler and more effective csetq
This commit is contained in:
parent
26e8a61c1b
commit
a1c1387df9
@ -527,9 +527,13 @@ to the one ~setq~ uses?
|
|||||||
"Bind each custom variable FORM to the value of its VAL.
|
"Bind each custom variable FORM to the value of its VAL.
|
||||||
|
|
||||||
FORMS is a list of pairs of values [FORM VAL].
|
FORMS is a list of pairs of values [FORM VAL].
|
||||||
|
`customize-set-variable' is called sequentially on each pairs
|
||||||
|
contained in FORMS. This means `csetq' has a similar behaviour as
|
||||||
|
`setq': each VAL expression are evaluated sequentially, i.e. the
|
||||||
|
first VAL is evaluated before the second, and so on. This means
|
||||||
|
the value of the first FORM can be used to set the second FORM.
|
||||||
|
|
||||||
If FORM has a custom setter, use it to set FORM to VAL.
|
The return value of `csetq' is the value of the last VAL.
|
||||||
Otherwise, use `set-default'.
|
|
||||||
|
|
||||||
\(fn [FORM VAL]...)"
|
\(fn [FORM VAL]...)"
|
||||||
(declare (debug (&rest sexp form))
|
(declare (debug (&rest sexp form))
|
||||||
@ -537,15 +541,9 @@ Otherwise, use `set-default'.
|
|||||||
;; Check if we have an even number of arguments
|
;; Check if we have an even number of arguments
|
||||||
(when (= (mod (length forms) 2) 1)
|
(when (= (mod (length forms) 2) 1)
|
||||||
(signal 'wrong-number-of-arguments (list 'csetq (1+ (length forms)))))
|
(signal 'wrong-number-of-arguments (list 'csetq (1+ (length forms)))))
|
||||||
(let (sexps)
|
|
||||||
;; Transform FORMS into a list of pairs (FORM . VALUE)
|
;; Transform FORMS into a list of pairs (FORM . VALUE)
|
||||||
`(progn ,@(progn
|
`(progn ,@(cl-loop for (form value) on forms by 'cddr
|
||||||
(while forms
|
collect `(customize-set-variable ',form ,value))))
|
||||||
(let ((form (pop forms))
|
|
||||||
(value (pop forms)))
|
|
||||||
(push `(customize-set-variable ',form ,value)
|
|
||||||
sexps)))
|
|
||||||
(reverse sexps)))))
|
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
I first got inspired by [[https://oremacs.com/2015/01/17/setting-up-ediff/][this blog article]] (archived article, just in
|
I first got inspired by [[https://oremacs.com/2015/01/17/setting-up-ediff/][this blog article]] (archived article, just in
|
||||||
|
Loading…
Reference in New Issue
Block a user