X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=org-ref.el;h=f866ab975b4667bb7fe5db8e82e762e37eac2b38;hp=46dfbe2c05dbb2f4b105d175d112ebcd94947805;hb=8e149d3157543add01560c9e5face7a75cbb8b18;hpb=e14de16a0d794827ce2eae9e3c48c1bf2e2c9fa2 diff --git a/org-ref.el b/org-ref.el index 46dfbe2..f866ab9 100644 --- a/org-ref.el +++ b/org-ref.el @@ -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 "()" path)) + ((eq format 'html) (format "()" 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 "(%s)" path)) + ((eq format 'html) (format "%s" 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