[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] [RFC] [PATCH] Automatically quote the arguments to an eval macro
From: |
Nicolas Goaziou |
Subject: |
Re: [O] [RFC] [PATCH] Automatically quote the arguments to an eval macro |
Date: |
Thu, 05 Nov 2015 09:40:32 +0100 |
Hello,
Aaron Ecay <address@hidden> writes:
> Currently, eval macros need to quote their arguments:
>
> #+macro: identity (eval "$1")
>
> This means:
> 1. Users need to remember to put quotes around $n all the time
> 2. It’s impossible to pass arguments with a " character to a macro
This can be fixed by removing the `literal' optional argument from
`replace-regexp-in-string' call in `org-macro-expand'.
> The attached patch changes the behavior of eval macro arguments so that
> $1 etc. expand to the argument with quotation marks. That is, the
> following is now the correct way to write a macro (note lack of "s):
>
> #+macro: identity (eval $1)
I'm not totally opposed to it but it introduces a limitation: all
arguments must be strings. This is not strictly required, actually. As
a consequence, I slightly prefer fixing the current situation instead.
Is there any strong reason to force string?
> * lisp/org-macro.el (org-macro-expand): Automatically quote the
> arguments to an eval macro.
You would also need to update `org-macro-initialize-templates' and
`org-export-as'.
> + (cond
> + (evalp (format "%S" arg-val))
> + (arg-val arg-val)
Nitpick: this is equivalent to (arg-val)
Regards,
--
Nicolas Goaziou