Tor-björn Claesson <tclaes...@gmail.com> writes: >> Could we make !prefix, and !citation work in lambdas? We should be able >> to. > > Sure! It took me some trial and error to get the list splicing right but > now it works in lambdas to. I added another helper to do let binding.
I think that a simple (let ((!prefix ...) ...) (lambda ...)) will work. But you should test without C-x C-e. Need to reload the whole library. >> We can even make the prefix work as a standalone command. Simply using >> interactive spec. >> >> (interactive >> (list (let ((obj (org-element-context))) >> (pcase (org-element-type obj) >> ((or citation citation-reference) obj) >> (_ (user-error "No citation at point")))))) > > I was not able to get this to work. Just replace the interactive spec with my version and then M-x org-cite-basic-follow with point on citation in Org document. >> `org-open-at-point' may be called with point at citation rather than >> citation reference. Citation object does not have :key property. >> >> I think that we should drop !citation-key spec and instead specify that >> the command may be called with citation or citation-reference object in >> !citation. > > `org-cite-basic-goto' handles this by prompting the user for a key, if > it is called with a citation object. I adopted this approach. (I find the > !citation-key useful for a lot of things I like to do to citations, and > would like to keep it.) I am not sure if it is a good idea. Commands in org-cite-basic-follow-actions may or may not need it, while your code will _aways_ prompt user about citation key; even when the citation key is never used. If you realy, really want it, we can go into `cl-symbol-macrolet' and lazy evaluation, but will be tricky (especially arranging for (setq !citation-key ...) to work. -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>