From 40432de56cf828b10daab063e9f70612be0b330e Mon Sep 17 00:00:00 2001 From: Sameer Rahmani Date: Fri, 7 May 2021 14:09:16 +0100 Subject: [PATCH] Modify 'defflag' macro to accept a default value --- core/fg42/flags.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/core/fg42/flags.el b/core/fg42/flags.el index 1f5e5ce..593f2b4 100644 --- a/core/fg42/flags.el +++ b/core/fg42/flags.el @@ -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)