emacs-orgmode
[Top][All Lists]
Advanced

[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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]