Ihor Radchenko <yanta...@posteo.net> writes: > AFIU, you need to match against lambda simply to avoid the next clause > matching it.
Exactly. > If so, you can change the clause to match all ,fn, except > lambda like the following: > > `(,key > ,desc > (,(and fn (guard (not (eq fn 'lambda)))) > . ,fn-args) > . ,other) > > This is getting ugly though. > An alternative would be simply > > (defun org-cite-basic-follow--parse-suffix-specification (specification) > (pcase specification > ((and val `(,key ,desc (,fn . ,fn-args) . ,other)) > (if (eq fn 'lambda) val > `(,key ,desc > (lambda () > (interactive) > (let ((!citation (car (transient-scope))) > (!prefix (cadr (transient-scope))) > (!citation-key (org-element-property :key (car > (transient-scope))))) > (,fn ,@fn-args))) > ,@other))) > (other other))) I feel that the guard option does the right thing by directly fixing the pattern matching - but what approach do you prefer? Is this starting to be a good time for me to produce a patch? Cheers, Tor-björn