Migrate from using Borg to ELPA
[~bandali/configs] / lisp / bandali-utils.el
index 95c2878..6669b2a 100644 (file)
 
 ;;; Code:
 
-(defmacro b/setq-every (value &rest vars)
-  "Set all the variables from VARS to value VALUE."
-  (declare (indent defun) (debug t))
-  `(progn ,@(mapcar (lambda (x) (list 'setq x value)) vars)))
+(require 'cl-lib)
+
+(defmacro csetq (&rest args)
+  "Set the value of user option VAR to VALUE.
+
+More generally, you can use multiple variables and values, as in
+  (csetq VAR VALUE VAR VALUE...)
+This sets each user option VAR's value to the corresponding VALUE.
+
+\(fn [VAR VALUE]...)"
+  (declare (debug setq))
+  `(progn
+     ,@(cl-loop for (var value) on args by 'cddr
+                collect
+                `(funcall (or (get ',var 'custom-set) #'set-default)
+                          ',var ,value))))
 
 (defun b/start-process (program &rest args)
   "Same as `start-process', but doesn't bother about name and buffer."