Function: indent-bars--alt-custom
indent-bars--alt-custom is a macro defined in indent-bars.el.
Signature
(indent-bars--alt-custom ALT OPT ALT-DESCRIPTION STD-VAL &optional ADD-INHERIT NO-INHERIT &rest R)
Documentation
Define a custom ALT variable for option OPT.
The new custom options default value is set to STD-VAL. This creates a new variable indent-bars-alt-opt, based on indent-bars-opt (referred to as the parent variable). ALT-DESCRIPTION will be used to identify the alternate variable in the customize interface.
If ADD-INHERIT is non-nil, expand the type to a cons:
(inherit . type)
where INHERIT is either inherit or no-inherit, depending
on the value of NO-INHERIT.
Additional `defcustom` keyword arguments can be given as R.
Source Code
;; Defined in /nix/store/zkcdcnmcj3605fj09x584bf58d85brax-emacs-packages-deps/share/emacs/site-lisp/elpa/indent-bars-1.0.1/indent-bars.el
;;;;; Alternate Style Support
(defmacro indent-bars--alt-custom
(alt opt alt-description std-val &optional add-inherit no-inherit &rest r)
"Define a custom ALT variable for option OPT.
The new custom options default value is set to STD-VAL. This
creates a new variable indent-bars-alt-opt, based on
indent-bars-opt (referred to as the parent variable).
ALT-DESCRIPTION will be used to identify the alternate variable
in the customize interface.
If ADD-INHERIT is non-nil, expand the type to a cons:
(inherit . type)
where INHERIT is either `inherit' or `no-inherit', depending
on the value of NO-INHERIT.
Additional `defcustom` keyword arguments can be given as R."
(require 'cus-edit)
(let* ((optname (symbol-name opt))
(indent-bars--custom-set-inhibit t)
(group (intern (concat "indent-bars-" alt "-style")))
(symname (concat "indent-bars-" optname))
(sym (intern (concat "indent-bars-" optname)))
(tsym (intern (concat "indent-bars-" alt "-" optname)))
(type (custom-variable-type sym))
(choice (cond ((eq (car type) 'choice) type)
((eq (car type) 'list)
(seq-find
(lambda (el) (and (consp el) (eq (car el) 'choice)))
type))
(t (setq type `(choice ,type))))))
;; Add an unspecified choice
(when-let* ((tag-pos (member :tag choice)))
(setq choice (cdr tag-pos))) ;after tag
(setcdr choice
(push
`(const :tag ,(concat "No-value (use parent " optname ")") unspecified)
(cdr choice)))
;; Add leading inherit flag, if needed
(when (or no-inherit add-inherit)
(setq type
`(cons :tag ,(concat alt-description " Style")
(choice :tag
,(concat "Inherit missing data from `indent-bars-"
optname "'")
(const :tag "Do not inherit" no-inherit)
(const :tag "Inherit" inherit))
,type)
std-val `( ,(if no-inherit 'no-inherit 'inherit) . ,std-val )))
`(defcustom ,tsym ',std-val
,(concat "Alternate " alt-description " version of `" symname "'.")
:type ',type
:link '(variable-link ,sym)
:set #'indent-bars--custom-set
:initialize #'custom-initialize-default
:group ',group
,@r)))