X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=org-ref.el;h=842483791e20db7ee4cbfaccc994535d4590a5ef;hb=91d1ffcf510555e3c8f04765e5889f18c3bb13d5;hp=aca0b56468aa46db11b83df8d39b7e0e6a8500fa;hpb=c384cbac7abf81c4e9494d6801c4a398e8cd35b7;p=org-ref.git
diff --git a/org-ref.el b/org-ref.el
index aca0b56..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,7 +515,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-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
@@ -582,7 +590,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-set-dialect (parsebib-find-bibtex-dialect) t)
(bibtex-search-entry key nil 0)
(setq entry (bibtex-parse-entry))
(format "** %s - %s
@@ -974,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)))))
@@ -1541,7 +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 nil t)
+ (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
@@ -1568,7 +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 nil t)
+ (bibtex-set-dialect (parsebib-find-bibtex-dialect) t)
(bibtex-search-entry key)
(org-ref-open-bibtex-notes)))))
@@ -1583,7 +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 nil t)
+ (bibtex-set-dialect (parsebib-find-bibtex-dialect) t)
(bibtex-search-entry key)
(org-ref-bib-citation))))))
@@ -1656,7 +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 nil t)
+ (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.
@@ -1714,13 +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 nil t)
+ (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 nil t)
+ (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
@@ -1797,7 +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 nil t)
+ (bibtex-set-dialect (parsebib-find-bibtex-dialect) t)
(bibtex-search-entry key)
(org-ref-bib-citation))))
"\n"
@@ -2102,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)
@@ -2112,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))
@@ -2180,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
@@ -2206,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 ()
@@ -2749,7 +2754,7 @@ Shows bad citations, ref links and labels"
(bibfile (cdr results)))
(with-temp-buffer
(insert-file-contents bibfile)
- (bibtex-set-dialect nil t)
+ (bibtex-set-dialect (parsebib-find-bibtex-dialect) t)
(bibtex-search-entry key nil 0)
(prog1 (reftex-get-bib-field "year" (bibtex-parse-entry t))
))))
@@ -3237,7 +3242,7 @@ With two prefix args, insert a label link."
(save-excursion
(with-temp-buffer
(insert-file-contents bibfile)
- (bibtex-set-dialect nil t)
+ (bibtex-set-dialect (parsebib-find-bibtex-dialect) t)
(bibtex-search-entry key)
(org-ref-bib-citation)))
"!!! No entry found !!!" )))
@@ -3253,13 +3258,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-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 nil t)
+ (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