diff options
author | Kyle Meyer <kyle@kyleam.com> | 2014-02-02 23:59:45 -0500 |
---|---|---|
committer | Kyle Meyer <kyle@kyleam.com> | 2014-02-03 00:50:18 -0500 |
commit | 5164c4d378ed8bb9a6335dd6c177be7027140014 (patch) | |
tree | 50737e5ce5987d6e1bb9867405aec539f2d79597 | |
parent | f8725fe18333d96b23e7f1473de991114f8f181a (diff) | |
download | bog-5164c4d378ed8bb9a6335dd6c177be7027140014.tar.gz |
Add function to create combined BibTeX file
-rw-r--r-- | bog-tests.el | 14 | ||||
-rw-r--r-- | bog.el | 27 |
2 files changed, 41 insertions, 0 deletions
diff --git a/bog-tests.el b/bog-tests.el index 24b5d0d..5b0cd79 100644 --- a/bog-tests.el +++ b/bog-tests.el @@ -157,3 +157,17 @@ (should new-buffer) (kill-buffer new-buffer) (delete-file new-file)))) + +;; `bog-collect-references' + +(ert-deftest bog-collect-references () + (with-temp-buffer + (insert "abc1900word\nhij2000word\nefg1800word\n") + (should (equal (bog-collect-references) + '("abc1900word" "efg1800word" "hij2000word"))))) + +(ert-deftest bog-collect-references-no-sort () + (with-temp-buffer + (insert "abc1900word\nhij2000word\nefg1800word\n") + (should (equal (bog-collect-references t) + '("efg1800word" "hij2000word" "abc1900word"))))) @@ -262,6 +262,33 @@ file." (unless was-open (kill-buffer buffer))))) +;;;###autoload +(defun bog-create-combined-bib () + "Create buffer that has entries for all citekeys in buffer." + (interactive) + (let ((bib-buffer (get-buffer-create "*Bib*")) + (refs (-map 'bog-citekey-as-bib (bog-collect-references)))) + (--each refs (unless (file-exists-p it) (error "%s does not exist" it))) + (switch-to-buffer-other-window bib-buffer) + (--each refs + (insert "\n") + (insert-file-contents it) + (goto-char (point-max))) + (bibtex-mode))) + +(defun bog-collect-references (&optional no-sort) + "Return names in buffer that match `bog-citekey-format'. +If NO-SORT, citekeys are returned in reverse order that they +occur in buffer instead of alphabetical order." + (let (refs) + (save-excursion + (goto-char (point-min)) + (while (re-search-forward bog-citekey-format nil t) + (add-to-list 'refs (match-string-no-properties 0))) + (if no-sort + refs + (--sort (string-lessp it other) refs))))) + (defun bog-citekey-as-bib (citekey) (expand-file-name (concat citekey ".bib") bog-bib-directory)) |