X-Git-Url: https://git.donarmstrong.com/?p=org-ref.git;a=blobdiff_plain;f=org-ref.el;h=842483791e20db7ee4cbfaccc994535d4590a5ef;hp=4a8796980717ee75bba826805dc22fbb1d5ce1cf;hb=d9d107c9e0aeb8c285c6aeef774059fee0bbac6d;hpb=5d9b13dc9c509e506a989e31aa14197c6566ced5 diff --git a/org-ref.el b/org-ref.el index 4a87969..8424837 100644 --- a/org-ref.el +++ b/org-ref.el @@ -89,6 +89,12 @@ You should use full-paths for each file." :type 'string :group 'org-ref) +(defcustom org-ref-note-title-format + "** TODO %y - %t" + "String to format the title of a note. See the `org-ref-reftex-format-citation' docstring for the escape codes." + :type 'string + :group 'org-ref) + (defcustom org-ref-open-notes-function (lambda () (org-show-entry) @@ -458,8 +464,11 @@ environment, only %l is available." ((= l ?E) (car (reftex-get-bib-names "editor" entry))) ((= l ?h) (org-ref-reftex-get-bib-field "howpublished" entry)) ((= l ?i) (org-ref-reftex-get-bib-field "institution" entry)) - ((= l ?j) (org-ref-reftex-get-bib-field "journal" entry)) - ((= l ?k) (org-ref-reftex-get-bib-field "key" entry)) + ((= l ?j) (let ((jt (reftex-get-bib-field "journal" entry))) + (if (string= "" jt) + (reftex-get-bib-field "journaltitle" entry) + jt))) + ((= l ?k) (org-ref-reftex-get-bib-field "=key=" entry)) ((= l ?m) (org-ref-reftex-get-bib-field "month" entry)) ((= l ?n) (org-ref-reftex-get-bib-field "number" entry)) ((= l ?o) (org-ref-reftex-get-bib-field "organization" entry)) @@ -488,7 +497,6 @@ environment, only %l is available." (while (string-match "[ ,.;:]*%<" format) (setq format (replace-match "" t t format))) ;; also replace carriage returns, tabs, and multiple whitespaces - (setq format (replace-regexp-in-string "\n\\|\t\\|\s+" " " format)) format) (defun org-ref-get-bibtex-entry-citation (key) @@ -507,6 +515,7 @@ Format according to the type in `org-ref-bibliography-entry-format'." (with-temp-buffer (insert-file-contents file) + (bibtex-set-dialect (parsebib-find-bibtex-dialect) 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 +590,7 @@ Format according to the type in `org-ref-bibliography-entry-format'." (with-temp-buffer (insert-file-contents file) + (bibtex-set-dialect (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key nil 0) (setq entry (bibtex-parse-entry)) (format "** %s - %s @@ -972,7 +982,7 @@ ARG does nothing." (org-ref-count-labels label)))) (lambda (keyword desc format) (cond - ((eq format 'html) (format "()" keyword)) + ((eq format 'html) (format "
" keyword)) ((eq format 'latex) (format "\\label{%s}" keyword))))) @@ -1539,6 +1549,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 (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) ;; I like this better than bibtex-url which does not always find ;; the urls @@ -1565,6 +1576,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 (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) (org-ref-open-bibtex-notes))))) @@ -1579,6 +1591,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 (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) (org-ref-bib-citation)))))) @@ -1651,6 +1664,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 (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) (setq doi (bibtex-autokey-get-field "doi")) ;; in case doi is a url, remove the url part. @@ -1708,11 +1722,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 (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) (bibtex-autokey-get-field "url")))) (doi (save-excursion (with-temp-buffer (insert-file-contents bibfile) + (bibtex-set-dialect (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) ;; I like this better than bibtex-url which does not always find ;; the urls @@ -1789,6 +1805,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 (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) (org-ref-bib-citation)))) "\n" @@ -2093,7 +2110,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) @@ -2103,7 +2120,10 @@ This assumes you are in an article." (year (reftex-get-bib-field "year" entry)) (author (replace-regexp-in-string "\n\\|\t\\|\s+" " " (reftex-get-bib-field "author" entry))) (key (reftex-get-bib-field "=key=" entry)) - (journal (reftex-get-bib-field "journal" entry)) + (journal (let ((jt (reftex-get-bib-field "journal" entry))) + (if (string= "" jt) + (reftex-get-bib-field "journaltitle" entry) + jt))) (volume (reftex-get-bib-field "volume" entry)) (pages (reftex-get-bib-field "pages" entry)) (doi (reftex-get-bib-field "doi" entry)) @@ -2171,16 +2191,7 @@ construct the heading by hand." (bibtex-expand-strings t) (entry (cl-loop for (key . value) in (bibtex-parse-entry t) collect (cons (downcase key) value))) - (title (replace-regexp-in-string "\n\\|\t\\|\s+" " " (reftex-get-bib-field "title" entry))) - (year (reftex-get-bib-field "year" entry)) - (author (replace-regexp-in-string "\n\\|\t\\|\s+" " " (reftex-get-bib-field "author" entry))) - (key (reftex-get-bib-field "=key=" entry)) - (journal (reftex-get-bib-field "journal" entry)) - (volume (reftex-get-bib-field "volume" entry)) - (pages (reftex-get-bib-field "pages" entry)) - (doi (reftex-get-bib-field "doi" entry)) - (url (reftex-get-bib-field "url" entry)) - ) + (key (reftex-get-bib-field "=key=" entry))) ;; save key to clipboard to make saving pdf later easier by pasting. (with-temp-buffer @@ -2197,38 +2208,41 @@ construct the heading by hand." (if (re-search-forward (format ":Custom_ID: %s$" key) nil 'end) (funcall org-ref-open-notes-function) ;; no entry found, so add one - (insert (format "\n** TODO %s - %s" year title)) - (insert (format" + (insert (org-ref-reftex-format-citation entry (concat "\n" org-ref-note-title-format))) + (insert (org-ref-reftex-format-citation + entry + (concat " :PROPERTIES: - :Custom_ID: %s - :AUTHOR: %s - :JOURNAL: %s - :YEAR: %s - :VOLUME: %s - :PAGES: %s - :DOI: %s - :URL: %s + :Custom_ID: %k + :AUTHOR: %9a + :JOURNAL: %j + :YEAR: %y + :VOLUME: %v + :PAGES: %p + :DOI: %D + :URL: %U :END: -[[cite:%s]] [[file:%s/%s.pdf][pdf]]\n\n" -key author journal year volume pages doi url key org-ref-pdf-directory key)) -(save-buffer)))) +" + (format "[[cite:%s]] [[file:%s/%s.pdf][pdf]]\n\n" + key org-ref-pdf-directory key)))) + (save-buffer)))) (defun org-ref-open-notes-from-reftex () "Call reftex, and open notes for selected entry." (interactive) (let ((bibtex-key ))) - ;; now look for entry in the notes file - (if org-ref-bibliography-notes - (find-file-other-window org-ref-bibliography-notes) - (error "Org-ref-bib-bibliography-notes is not set to anything")) + ;; now look for entry in the notes file + (if org-ref-bibliography-notes + (find-file-other-window org-ref-bibliography-notes) + (error "Org-ref-bib-bibliography-notes is not set to anything")) - (goto-char (point-min)) + (goto-char (point-min)) - (re-search-forward (format - ":Custom_ID: %s$" - (cl-first (reftex-citation t)) nil 'end)) - (funcall org-ref-open-notes-function)) + (re-search-forward (format + ":Custom_ID: %s$" + (cl-first (reftex-citation t)) nil 'end)) + (funcall org-ref-open-notes-function)) ;; ** Open bibtex entry in browser (defun org-ref-open-in-browser () @@ -2740,6 +2754,7 @@ Shows bad citations, ref links and labels" (bibfile (cdr results))) (with-temp-buffer (insert-file-contents bibfile) + (bibtex-set-dialect (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key nil 0) (prog1 (reftex-get-bib-field "year" (bibtex-parse-entry t)) )))) @@ -3227,6 +3242,7 @@ With two prefix args, insert a label link." (save-excursion (with-temp-buffer (insert-file-contents bibfile) + (bibtex-set-dialect (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) (org-ref-bib-citation))) "!!! No entry found !!!" ))) @@ -3242,11 +3258,13 @@ Checks for pdf and doi, and add appropriate functions." (url (save-excursion (with-temp-buffer (insert-file-contents bibfile) + (bibtex-set-dialect (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) (bibtex-autokey-get-field "url")))) (doi (save-excursion (with-temp-buffer (insert-file-contents bibfile) + (bibtex-set-dialect (parsebib-find-bibtex-dialect) t) (bibtex-search-entry key) ;; I like this better than bibtex-url which does not always find ;; the urls