Sorry, that was incorrect - real patches attached. On Mon, Dec 1, 2014 at 1:02 AM, Nathaniel Flath wrote: > Changed it to just a function - you are correct, for this purpose I don't > need a macro. > > On Fri, Nov 21, 2014 at 6:30 PM, Nicolas Goaziou > wrote: > >> Nathaniel Flath writes: >> >> > OK, I think I fixed that. >> >> Thanks. >> >> I didn't verify it compiles, but your macro still looks suspicious. >> >> > +(defmacro org-table-execute-once-per-second (t1 &rest body) >> > + "If there has been more than one second since T1, execute BODY. >> > +Updates T1 to 'current-time' if this condition is met. If T1 is >> > +nil, always execute body." >> > + `(let ((t1 ,t1)) >> > + (if t1 >> > + (let ((curtime (current-time))) >> > + (when (< 0 (nth 1 (time-subtract curtime t1))) >> > + (setq t1 curtime) >> > + ,@body)) >> > + ,@body))) >> >> You shouldn't splice BODY twice in your macro. Also, I don't get why you >> need to (setq t1 curtime). >> >> Do you need a macro at all for this task? ISTM you only need to display >> a message conditionally and update a time value. >> >> >> Regard, >> > >