]> git.donarmstrong.com Git - org-ref.git/blobdiff - org-ref.el
add entries
[org-ref.git] / org-ref.el
index 46dfbe2c05dbb2f4b105d175d112ebcd94947805..f866ab975b4667bb7fe5db8e82e762e37eac2b38 100644 (file)
@@ -328,12 +328,12 @@ You will see a message in the minibuffer when on a cite, ref or label link."
   ":\\([a-zA-Z0-9-_:\\./]*,?\\)*"))
 
 
-(setq org-ref-label-re
-      "label:\\([a-zA-Z0-9-_:]*,?\\)*")
+(defvar org-ref-label-re
+  "label:\\([a-zA-Z0-9-_:]*,?\\)*")
 
 
-(setq org-ref-ref-re
-      "\\(eq\\)?ref:\\([a-zA-Z0-9-_:]*,?\\)*")
+(defvar org-ref-ref-re
+  "\\(eq\\)?ref:\\([a-zA-Z0-9-_:]*,?\\)*")
 
 
 (defface org-ref-cite-face
@@ -507,6 +507,7 @@ Format according to the type in `org-ref-bibliography-entry-format'."
 
     (with-temp-buffer
       (insert-file-contents file)
+      (bibtex-set-dialect nil t)
       (bibtex-search-entry key nil 0)
       (setq bibtex-entry (bibtex-parse-entry))
       ;; downcase field names so they work in the format-citation code
@@ -581,6 +582,7 @@ Format according to the type in `org-ref-bibliography-entry-format'."
 
     (with-temp-buffer
       (insert-file-contents file)
+      (bibtex-set-dialect nil t)
       (bibtex-search-entry key nil 0)
       (setq entry (bibtex-parse-entry))
       (format "** %s - %s
@@ -653,26 +655,27 @@ Format according to the type in `org-ref-bibliography-entry-format'."
                          (split-string
                           (org-element-property :path object) ","))
 
-                    ;; now if we have comma separated bibliographies
-                    ;; we find the one clicked on. we want to
-                    ;; search forward to next comma from point
-                    (save-excursion
-                      (if (search-forward "," link-string-end 1 1)
-                          ;; we found a match
-                          (setq key-end (- (match-end 0) 1))
-                        ;; no comma found so take the point
-                        (setq key-end (point))))
-                    ;; and backward to previous comma from point
-                    (save-excursion
-                      (if (search-backward "," link-string-beginning 1 1)
-                          ;; we found a match
-                          (setq key-beginning (+ (match-beginning 0) 1))
-                        (setq key-beginning (point)))) ; no match found
+                    (let (key-beginning key-end)
+                      ;; now if we have comma separated bibliographies
+                      ;; we find the one clicked on. we want to
+                      ;; search forward to next comma from point
+                      (save-excursion
+                        (if (search-forward "," link-string-end 1 1)
+                            ;; we found a match
+                            (setq key-end (- (match-end 0) 1))
+                          ;; no comma found so take the point
+                          (setq key-end (point))))
+                      ;; and backward to previous comma from point
+                      (save-excursion
+                        (if (search-backward "," link-string-beginning 1 1)
+                            ;; we found a match
+                            (setq key-beginning (+ (match-beginning 0) 1))
+                          (setq key-beginning (point)))) ; no match found
                       ;; save the key we clicked on.
-                    (setq bibfile (org-ref-strip-string
-                                   (buffer-substring key-beginning key-end)))
-                    ;; open file on click
-                    (find-file bibfile)))
+                      (setq bibfile (org-ref-strip-string
+                                     (buffer-substring key-beginning key-end)))
+                      ;; open file on click
+                      (find-file bibfile))))
 
                   ;; formatting code
                   (lambda (keyword desc format)
@@ -719,21 +722,22 @@ Format according to the type in `org-ref-bibliography-entry-format'."
                       (set (make-local-variable 'reftex-default-bibliography)
                            (split-string (org-element-property :path object) ","))
 
-                      ;; now if we have comma separated bibliographies
-                      ;; we find the one clicked on. we want to
-                      ;; search forward to next comma from point
-                      (save-excursion
-                        (if (search-forward "," link-string-end 1 1)
-                            (setq key-end (- (match-end 0) 1)) ; we found a match
-                          (setq key-end (point)))) ; no comma found so take the point
-                      ;; and backward to previous comma from point
-                      (save-excursion
-                        (if (search-backward "," link-string-beginning 1 1)
-                            (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
-                          (setq key-beginning (point)))) ; no match found
-                      ;; save the key we clicked on.
-                      (setq bibfile (org-ref-strip-string (buffer-substring key-beginning key-end)))
-                      (find-file bibfile))) ; open file on click
+                      (let (key-beginning key-end)
+                        ;; now if we have comma separated bibliographies
+                        ;; we find the one clicked on. we want to
+                        ;; search forward to next comma from point
+                        (save-excursion
+                          (if (search-forward "," link-string-end 1 1)
+                              (setq key-end (- (match-end 0) 1)) ; we found a match
+                            (setq key-end (point)))) ; no comma found so take the point
+                        ;; and backward to previous comma from point
+                        (save-excursion
+                          (if (search-backward "," link-string-beginning 1 1)
+                              (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
+                            (setq key-beginning (point)))) ; no match found
+                        ;; save the key we clicked on.
+                        (setq bibfile (org-ref-strip-string (buffer-substring key-beginning key-end)))
+                        (find-file bibfile)))) ; open file on click
 
                     ;; formatting code
                   (lambda (keyword desc format)
@@ -825,21 +829,22 @@ ARG does nothing."
                       (set (make-local-variable 'reftex-default-addbibresource)
                            (split-string (org-element-property :path object) ","))
 
-                      ;; now if we have comma separated bibliographies
-                      ;; we find the one clicked on. we want to
-                      ;; search forward to next comma from point
-                      (save-excursion
-                        (if (search-forward "," link-string-end 1 1)
-                            (setq key-end (- (match-end 0) 1)) ; we found a match
-                          (setq key-end (point)))) ; no comma found so take the point
-                      ;; and backward to previous comma from point
-                      (save-excursion
-                        (if (search-backward "," link-string-beginning 1 1)
-                            (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
-                          (setq key-beginning (point)))) ; no match found
-                      ;; save the key we clicked on.
-                      (setq bibfile (org-ref-strip-string (buffer-substring key-beginning key-end)))
-                      (find-file bibfile))) ; open file on click
+                      (let (key-beginning key-end)
+                        ;; now if we have comma separated bibliographies
+                        ;; we find the one clicked on. we want to
+                        ;; search forward to next comma from point
+                        (save-excursion
+                          (if (search-forward "," link-string-end 1 1)
+                              (setq key-end (- (match-end 0) 1)) ; we found a match
+                            (setq key-end (point)))) ; no comma found so take the point
+                        ;; and backward to previous comma from point
+                        (save-excursion
+                          (if (search-backward "," link-string-beginning 1 1)
+                              (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
+                            (setq key-beginning (point)))) ; no match found
+                        ;; save the key we clicked on.
+                        (setq bibfile (org-ref-strip-string (buffer-substring key-beginning key-end)))
+                        (find-file bibfile)))) ; open file on click
 
                     ;; formatting code
                   (lambda (keyword desc format)
@@ -969,7 +974,7 @@ ARG does nothing."
                    (org-ref-count-labels label))))
  (lambda (keyword desc format)
    (cond
-    ((eq format 'html) (format "(<label>%s</label>)" path))
+    ((eq format 'html) (format "(<label>%s</label>)" keyword))
     ((eq format 'latex)
      (format "\\label{%s}" keyword)))))
 
@@ -1048,7 +1053,7 @@ ARG does nothing."
  ;formatting
  (lambda (keyword desc format)
    (cond
-    ((eq format 'html) (format "(<ref>%s</ref>)" path))
+    ((eq format 'html) (format "<a href=\"#%s\">%s</a>" keyword keyword))
     ((eq format 'latex)
      (format "\\ref{%s}" keyword)))))
 
@@ -1419,28 +1424,30 @@ keyword we clicked on.  We also strip the text properties."
        ;; this means no description in the link
        (progn
          ;; we need the link path start and end
-         (save-excursion
-           (goto-char (org-element-property :begin object))
-           (search-forward link-string nil nil 1)
-           (setq link-string-beginning (match-beginning 0))
-           (setq link-string-end (match-end 0)))
+         (let (link-string-beginning link-string-end)
+           (save-excursion
+             (goto-char (org-element-property :begin object))
+             (search-forward link-string nil nil 1)
+             (setq link-string-beginning (match-beginning 0))
+             (setq link-string-end (match-end 0)))
 
-         ;; The key is the text between commas, or the link boundaries
-         (save-excursion
-           (if (search-forward "," link-string-end t 1)
-               (setq key-end (- (match-end 0) 1)) ; we found a match
-             (setq key-end link-string-end))) ; no comma found so take the end
-         ;; and backward to previous comma from point which defines the start character
-         (save-excursion
-           (if (search-backward "," link-string-beginning 1 1)
-               (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
-             (setq key-beginning link-string-beginning))) ; no match found
-         ;; save the key we clicked on.
-         (setq bibtex-key
-               (org-ref-strip-string
-                (buffer-substring key-beginning key-end)))
-         (set-text-properties 0 (length bibtex-key) nil bibtex-key)
-         bibtex-key)
+           (let (key-beginning key-end)
+             ;; The key is the text between commas, or the link boundaries
+             (save-excursion
+               (if (search-forward "," link-string-end t 1)
+                   (setq key-end (- (match-end 0) 1)) ; we found a match
+                 (setq key-end link-string-end))) ; no comma found so take the end
+             ;; and backward to previous comma from point which defines the start character
+             (save-excursion
+               (if (search-backward "," link-string-beginning 1 1)
+                   (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
+                 (setq key-beginning link-string-beginning))) ; no match found
+             ;; save the key we clicked on.
+             (let ((bibtex-key
+                    (org-ref-strip-string
+                     (buffer-substring key-beginning key-end))))
+               (set-text-properties 0 (length bibtex-key) nil bibtex-key)
+               bibtex-key))))
       ;; link with description. assume only one key
       link-string)))
 
@@ -1534,6 +1541,7 @@ falling back to what the user has set in `org-ref-default-bibliography'"
     (save-excursion
       (with-temp-buffer
         (insert-file-contents bibfile)
+       (bibtex-set-dialect nil t)
         (bibtex-search-entry key)
         ;; I like this better than bibtex-url which does not always find
         ;; the urls
@@ -1560,6 +1568,7 @@ falling back to what the user has set in `org-ref-default-bibliography'"
     (save-excursion
       (with-temp-buffer
         (insert-file-contents bibfile)
+       (bibtex-set-dialect nil t)
         (bibtex-search-entry key)
         (org-ref-open-bibtex-notes)))))
 
@@ -1574,6 +1583,7 @@ falling back to what the user has set in `org-ref-default-bibliography'"
     (message "%s" (progn
                    (with-temp-buffer
                       (insert-file-contents bibfile)
+                     (bibtex-set-dialect nil t)
                       (bibtex-search-entry key)
                       (org-ref-bib-citation))))))
 
@@ -1646,6 +1656,7 @@ Prompt for NEW-FILE includes bib files in `org-ref-default-bibliography', and bi
     (save-excursion
       (with-temp-buffer
         (insert-file-contents bibfile)
+       (bibtex-set-dialect nil t)
         (bibtex-search-entry key)
        (setq doi (bibtex-autokey-get-field "doi"))
        ;; in case doi is a url, remove the url part.
@@ -1703,11 +1714,13 @@ get a lot of options.  LINK-STRING is used by the link function."
         (url (save-excursion
                (with-temp-buffer
                  (insert-file-contents bibfile)
+                 (bibtex-set-dialect nil t)
                  (bibtex-search-entry key)
                  (bibtex-autokey-get-field "url"))))
         (doi (save-excursion
                (with-temp-buffer
                  (insert-file-contents bibfile)
+                 (bibtex-set-dialect nil t)
                  (bibtex-search-entry key)
                  ;; I like this better than bibtex-url which does not always find
                  ;; the urls
@@ -1784,6 +1797,7 @@ get a lot of options.  LINK-STRING is used by the link function."
        (save-excursion
          (with-temp-buffer
            (insert-file-contents bibfile)
+           (bibtex-set-dialect nil t)
            (bibtex-search-entry key)
            (org-ref-bib-citation))))
       "\n"
@@ -2088,7 +2102,7 @@ arg (ALTERNATIVE-CITE) to get a menu of citation types."
 (defun org-ref-bib-citation ()
   "From a bibtex entry, create and return a simple citation string.
 This assumes you are in an article."
-
+  (bibtex-set-dialect nil t)
   (bibtex-beginning-of-entry)
   (let* ((cb (current-buffer))
         (bibtex-expand-strings t)
@@ -2735,6 +2749,7 @@ Shows bad citations, ref links and labels"
         (bibfile (cdr results)))
     (with-temp-buffer
       (insert-file-contents bibfile)
+      (bibtex-set-dialect nil t)
       (bibtex-search-entry key nil 0)
       (prog1 (reftex-get-bib-field "year" (bibtex-parse-entry t))
         ))))
@@ -2926,26 +2941,27 @@ Shows bad citations, ref links and labels"
              (when (> link-string-beginning (point))
                (goto-char link-string-beginning))
 
-             ;; now if we have comma separated bibliographies
-             ;; we find the one clicked on. we want to
-             ;; search forward to next comma from point
-             (save-excursion
-               (if (search-forward "," link-string-end 1 1)
-                   (setq key-end (- (match-end 0) 1)) ; we found a match
-                 (setq key-end (point)))) ; no comma found so take the point
+             (let (key-beginning key-end)
+               ;; now if we have comma separated bibliographies
+               ;; we find the one clicked on. we want to
+               ;; search forward to next comma from point
+               (save-excursion
+                 (if (search-forward "," link-string-end 1 1)
+                     (setq key-end (- (match-end 0) 1)) ; we found a match
+                   (setq key-end (point)))) ; no comma found so take the point
 
-             ;; and backward to previous comma from point
-             (save-excursion
-               (if (search-backward "," link-string-beginning 1 1)
-                   (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
-                 (setq key-beginning (point)))) ; no match found
-             ;; save the key we clicked on.
-             (setq bibfile
-                   (org-ref-strip-string
-                    (buffer-substring key-beginning key-end)))
-             (if (file-exists-p bibfile)
-                 (message "%s exists." bibfile)
-               (message "!!! %s NOT FOUND !!!" bibfile))))))))))
+               ;; and backward to previous comma from point
+               (save-excursion
+                 (if (search-backward "," link-string-beginning 1 1)
+                     (setq key-beginning (+ (match-beginning 0) 1)) ; we found a match
+                   (setq key-beginning (point)))) ; no match found
+               ;; save the key we clicked on.
+               (setq bibfile
+                     (org-ref-strip-string
+                      (buffer-substring key-beginning key-end)))
+               (if (file-exists-p bibfile)
+                   (message "%s exists." bibfile)
+                 (message "!!! %s NOT FOUND !!!" bibfile)))))))))))
 
 ;; ** aliases
 (defalias 'oro 'org-ref-open-citation-at-point)
@@ -3221,6 +3237,7 @@ With two prefix args, insert a label link."
        (save-excursion
          (with-temp-buffer
            (insert-file-contents bibfile)
+           (bibtex-set-dialect nil t)
            (bibtex-search-entry key)
            (org-ref-bib-citation)))
       "!!! No entry found !!!" )))
@@ -3236,11 +3253,13 @@ Checks for pdf and doi, and add appropriate functions."
         (url (save-excursion
                (with-temp-buffer
                  (insert-file-contents bibfile)
+                 (bibtex-set-dialect nil t)
                  (bibtex-search-entry key)
                  (bibtex-autokey-get-field "url"))))
         (doi (save-excursion
                (with-temp-buffer
                  (insert-file-contents bibfile)
+                 (bibtex-set-dialect nil t)
                  (bibtex-search-entry key)
                  ;; I like this better than bibtex-url which does not always find
                  ;; the urls