summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Schulte <eric.schulte@gmx.com>2012-12-26 08:39:53 -0700
committerEric Schulte <eric.schulte@gmx.com>2012-12-26 08:40:44 -0700
commitf47a7176b87be3741b7882c6edefd20bd4b1ab36 (patch)
tree648506044462d3a19cd1eb9c36a4d774efa9d6a3
parent99c8732bf89a55b50dba6262ef16a43c5222e59f (diff)
downloadorg-mode-f47a7176b87be3741b7882c6edefd20bd4b1ab36.tar.gz
import whole bibtex files into Org-mode
* lisp/org-bibtex.el (org-bibtex-read-buffer): Reads all bibtex entries in a buffer. (org-bibtex-read-file): Read all bibtex entries in a file. (org-bibtex-import-from-file): Import all bibtex entries from a file into the current buffer.
-rw-r--r--lisp/org-bibtex.el29
1 files changed, 29 insertions, 0 deletions
diff --git a/lisp/org-bibtex.el b/lisp/org-bibtex.el
index cafd3bb..d62c14b 100644
--- a/lisp/org-bibtex.el
+++ b/lisp/org-bibtex.el
@@ -624,6 +624,27 @@ This uses `bibtex-parse-entry'."
(save-excursion (bibtex-beginning-of-entry) (bibtex-parse-entry)))
org-bibtex-entries)))
+(defun org-bibtex-read-buffer (buffer)
+ "Read all bibtex entries in BUFFER and save to `org-bibtex-entries'.
+Return the number of saved entries."
+ (interactive "bbuffer: ")
+ (let ((start-length (length org-bibtex-entries)))
+ (with-current-buffer buffer
+ (save-excursion
+ (goto-char (point-max))
+ (while (not (= (point) (point-min)))
+ (backward-char 1)
+ (org-bibtex-read)
+ (bibtex-beginning-of-entry))))
+ (let ((added (- (length org-bibtex-entries) start-length)))
+ (message "parsed %d entries" added)
+ added)))
+
+(defun org-bibtex-read-file (file)
+ "Read FILE with `org-bibtex-read-buffer'."
+ (interactive "ffile: ")
+ (org-bibtex-read-buffer (find-file-noselect file 'nowarn 'rawfile)))
+
(defun org-bibtex-write ()
"Insert a heading built from the first element of `org-bibtex-entries'."
(interactive)
@@ -665,6 +686,14 @@ This uses `bibtex-parse-entry'."
(org-bibtex-write)
(error "Yanked text does not appear to contain a BibTeX entry"))))
+(defun org-bibtex-import-from-file (file)
+ "Read bibtex entries from FILE and insert as Org-mode headlines after point."
+ (interactive "ffile: ")
+ (dotimes (_ (org-bibtex-read-file file))
+ (save-excursion (org-bibtex-write))
+ (re-search-forward org-property-end-re)
+ (open-line 1) (forward-char 1)))
+
(defun org-bibtex-export-to-kill-ring ()
"Export current headline to kill ring as bibtex entry."
(interactive)