Sure, my fault. I just thought that it will be easier for people that didn't have my earlier version yet. Here is the patch, thanks. --- diff --git a/elisp/hideif.el b/elisp/hideif.el index 2e35fcd..a85e28e 100755 --- a/elisp/hideif.el +++ b/elisp/hideif.el @@ -1574,6 +1574,7 @@ Return a list of the arguments, if '...' exists the first arg will be hif-etc." ;; or we save the tokens, parse it after parameter replacement (expr (and tokens (or (and hif-simple-token-only + (listp tokens) (= (length tokens) 1) (hif-parse-if-exp tokens)) `(hif-define-macro ,parmlist ,tokens)))) @@ -1581,9 +1582,10 @@ Return a list of the arguments, if '...' exists the first arg will be hif-etc." (assoc (intern name) hide-ifdef-env)))) (and name (if SA - (setcdr SA expr) ;; Lazy evaluation, eval only if hif-lookup find it + (or (setcdr SA expr) t) ;; Lazy evaluation, eval only if hif-lookup find it ;; define it anyway, even if nil it's still in list and therefore considerred defined (push (cons (intern name) expr) hide-ifdef-env))))) + ;; #undef (and name (hif-undefine-symbol (intern name)))))) t)) @@ -1835,7 +1837,7 @@ If prefixed, it will also hide #ifdefs themselves." "Compress the define list ENV into a list of defined symbols only." (let ((new-defs nil)) (dolist (def env new-defs) - (if (hif-lookup (car def)) (push (car env) new-defs))))) + (if (hif-lookup (car def)) (push (car def) new-defs))))) (defun hide-ifdef-set-define-alist (name) "Set the association for NAME to `hide-ifdef-env'."