Modify 'defflag' macro to accept a default value
This commit is contained in:
parent
16c2ad9fe8
commit
40432de56c
|
@ -80,14 +80,18 @@ For example, `(fg42/merge-flags (list f1 f2 f3) f4 -f2)' will return `(f1 f3 f4)
|
|||
`(fg42/-merge-flags ,flags-set ,@(mapcar (lambda (x) `',x) new-flags)))
|
||||
|
||||
|
||||
(defmacro defflag (flag-name docstring)
|
||||
"Define a new flag FLAG-NAME with the given DOCSTRING."
|
||||
(let ((var-name (intern (format "fg42/-flag-%s" flag-name))))
|
||||
(defmacro defflag (flag-name docstring &optional default-value)
|
||||
"Define a new flag FLAG-NAME with the given DOCSTRING.
|
||||
If the DEFAULT-VALUE is a non nil value, then the flag will be
|
||||
added to the activa flags list."
|
||||
(let ((var-name (intern (format "fg42/-flag-%s" flag-name)))
|
||||
(set-default (if default-value `((add-to-list 'fg42/flags ',flag-name)) ())))
|
||||
`(if (boundp ',var-name)
|
||||
(warn (format "Flag name `%s' already defined" ,(format "%s" flag-name)))
|
||||
(progn
|
||||
(defvar ,var-name t)
|
||||
(add-to-list 'fg42/available-flags ',flag-name)))))
|
||||
(add-to-list 'fg42/available-flags ',flag-name)
|
||||
,@set-default))))
|
||||
|
||||
|
||||
(defmacro when-flag (flag &rest body)
|
||||
|
|
Loading…
Reference in New Issue