]> git.donarmstrong.com Git - org-ref.git/blobdiff - org-ref.org
add with-affiliates and catch all cite types
[org-ref.git] / org-ref.org
index d2674294649c8282d73beab5fbde3c8ce130247e..c9518c8865c0a02181fc9e67e9896a94826880c9 100644 (file)
@@ -12,6 +12,7 @@ This document is an experiment at creating a literate program to provide similar
 4. Exportable links to LaTeX
 5. Utility functions for dealing with bibtex files and org-files
 
+Some additional features include
 1. Get minibuffer messages for the cite/ref/label link under point
 
 With helm integration (default) you can:
@@ -484,7 +485,7 @@ This code provides some functions to generate a simple sorted bibliography in ht
 
 #+BEGIN_SRC emacs-lisp :tangle org-ref.el
 (defun org-ref-get-bibtex-keys ()
-  "return a list of unique keys in the buffer."
+  "Return a list of unique keys in the buffer."
   (let ((keys '()))
     (org-element-map (org-element-parse-buffer) 'link
       (lambda (link)
@@ -494,7 +495,9 @@ This code provides some functions to generate a simple sorted bibliography in ht
                (key
                 (org-ref-split-and-strip-string (plist-get plist ':path)))
              (when (not (-contains? keys key))
-               (setq keys (append keys (list key)))))))))
+               (setq keys (append keys (list key))))))))
+      ;; set with-affiliated to get keys in captions
+      nil nil nil t)
     ;; Sort keys alphabetically
     (setq keys (cl-sort keys 'string-lessp :key 'downcase))
     keys))
@@ -1296,7 +1299,8 @@ Use C-u C-u to insert a [[#custom-id]] link
                                   ((equal helm-current-prefix-arg '(16))
                                    (insert
                                     (format "[[#%s]]" label)))
-                                  ))))))))
+                                  ))
+                             ))))))
 #+END_SRC
 
 #+RESULTS:
@@ -2610,13 +2614,21 @@ Makes a new buffer with clickable links."
     (org-element-map (org-element-parse-buffer) 'link
       (lambda (link)
        (let ((plist (nth 1 link)))
-         (when (equal (plist-get plist ':type) "cite")
-           (dolist (key (org-ref-split-and-strip-string (plist-get plist ':path)) )
+         (when (-contains? org-ref-cite-types (plist-get plist :type))
+           (dolist (key (org-ref-split-and-strip-string (plist-get plist :path)))
              (when (not (index key bibtex-keys))
-               (setq bad-citations (append bad-citations
-                                           `(,(format "%s [[elisp:(progn (switch-to-buffer-other-frame \"%s\")(goto-char %s))][not found here]]\n"
-                                                      key (buffer-name)(plist-get plist ':begin)))))
-               ))))))
+               (message-box "%s" link)
+               (setq
+                bad-citations
+                (append
+                 bad-citations
+                 `(,(format "%s [[elisp:(progn (switch-to-buffer-other-frame \"%s\")(goto-char %s))][not found here]]\n"
+                            key
+                            (buffer-name)
+                            (plist-get plist :begin)))))
+               )))))
+      ;; set with-affilates to t to get citations in a caption
+      nil nil nil t)
 
     (if bad-citations
       (progn
@@ -3272,10 +3284,12 @@ C-u C-u will change the key at point to the selected keys.
               (replace-regexp-in-string
                (car (org-ref-get-bibtex-key-and-file)) ; key
                (mapconcat 'identity keys ",")          ; new keys
-               (org-element-property :raw-link object)
-               )
+               (org-element-property :raw-link object))
               ;; replace space at end to avoid collapsing into next word.
-              last-char)))
+              last-char))
+       ;; and we want to go to the end of the new link
+       (goto-char
+        (org-element-property :end (org-element-context))))
        (t
        (message "Not found"))))