Hi and thanks for replying! Ihor Radchenko <yanta...@posteo.net> writes: > > I do think that having extended menus for org-open-at-point could be > useful. Not by default, but, for example, with a prefix argument. >
This is a good point, but of much larger scope than just replacing the follower of the basic citation-processor. > > Your example demonstrates the following options: > 1. Plain old opening bibtex entry > 2. Copying citation key > 3. Opening DOI-derived link in browser > 4. Opening PDF (but I am not sure how you want to find the PDF name from > bibtex record) > > I am not sure how useful is copying the citation key, but various extra > menus like opening DOI/ISBN/URL links might be of use. > PDFs might be useful, but it is not clear how to know where such PDF is > located for arbitrary user. > > Any other suggestions? > Maybe from > https://github.com/jkitchin/org-ref/blob/fd178abf12a85f8e12005d1df683564bdc534124/org-ref-citation-links.el#L525 > ? Notes and PDF depends heavily on user preferences - and should maybe be left out for now? org-ref allows customizing org-ref-open-pdf-function, with a default one using bibtex-completion-find-pdf, which finds a pdf in bibtex-completion-library-path called citekey with one of the extension listed in bibtex-completion-pdf-extension. Maybe it is a good idea to start small, for example provide 1. Open bibtex-entry 2. Copy DOI 3. Opening DOI/ISBN/URL links in browser Further functionality can easily be added per user, and good solutions incorporated by default in the future? I have played some more with this - would it be a good idea to include macros to get citekey, datum and _? I would be happy to clean this up a bit, add DOI/ISBN/URL-functionality, documentation and prepare a bug report/patch. (defmacro org-cite-basic-follow--citekey () '(org-element-property :key (car (oref (transient-prefix-object) scope)))) (defmacro org-cite-basic-follow--datum () '(car (oref (transient-prefix-object) scope))) (defmacro org-cite-basic-follow--_ () '(cadr (oref (transient-prefix-object) scope))) (transient-define-prefix org-cite-basic-follow (datum _) "How should we follow references?" [["Open" ("b" "bibliography entry" (lambda () (interactive) (org-cite-basic-goto (org-cite-basic-follow--datum) (org-cite-basic-follow--_))))] ["Copy" ("d" "DOI" (lambda () (interactive) (kill-new (save-excursion (with-temp-buffer (mapc #'insert-file-contents org-cite-global-bibliography) (bibtex-set-dialect (parsebib-find-bibtex-dialect) t) (bibtex-search-entry (org-cite-basic-follow--citekey)) (setq doi (bibtex-autokey-get-field "doi")) (replace-regexp-in-string "^http://dx.doi.org/" "" doi))))))]] (interactive) (transient-setup 'org-cite-basic-follow nil nil :scope (list datum _))) Best regards, Tor-björn Claesson