diff options
-rw-r--r-- | bog-tests.el | 28 | ||||
-rw-r--r-- | bog.el | 41 |
2 files changed, 23 insertions, 46 deletions
diff --git a/bog-tests.el b/bog-tests.el index 6f64593..48da709 100644 --- a/bog-tests.el +++ b/bog-tests.el @@ -110,44 +110,32 @@ ;; `bog-citekey-action' -(ert-deftest bog-citekey-action-on-heading () - (let ((citekey "name2010word") - (action '(lambda (ck) ck))) +(ert-deftest bog-citekey-from-notes-on-heading () + (let ((citekey "name2010word")) (with-temp-buffer (insert (format "\n* top level\n\n** %s\n\nsome text\n" citekey)) (org-mode) (show-all) (re-search-backward bog-citekey-format) - (should (equal (bog-citekey-action action nil nil) citekey))))) + (should (equal (bog-citekey-from-notes) citekey))))) -(ert-deftest bog-citekey-action-on-in-text-citekey () - (let ((citekey "name2010word") - (action '(lambda (ck) ck))) +(ert-deftest bog-citekey-from-notes-on-in-text-citekey () + (let ((citekey "name2010word")) (with-temp-buffer (insert (format "\n* top level\n\n** other2000key\n\nsome text and %s\n" citekey)) (org-mode) (show-all) (re-search-backward bog-citekey-format) - (should (equal (bog-citekey-action action nil nil) citekey))))) + (should (equal (bog-citekey-from-notes) citekey))))) -(ert-deftest bog-citekey-action-no-citekey () +(ert-deftest bog-citekey-from-notes-no-citekey () (with-temp-buffer (insert "\n* top level\n\n** second\n\n") (org-mode) (show-all) - (should-error (bog-citekey-action nil nil nil)))) - -(ert-deftest bog-citekey-action-askfunc () - (let* ((citekey "name2010word") - (ask-func '(lambda () citekey)) - (action '(lambda (ck) ck))) - (with-temp-buffer - (insert "\n* top level\n\n** second\n\n") - (org-mode) - (show-all) - (should (equal (bog-citekey-action action ask-func t) citekey))))) + (should-error (bog-citekey-from-notes)))) ;;; BibTeX functions @@ -153,20 +153,6 @@ It should contain the placeholder \"%s\" for the query." ;;; General utilities -(defun bog-citekey-action (action ask-func ask-citekey) - "Perform ACTION on file associtated with a citekey. - -ASK-FUNC should be a function that queries the user for a citekey -when ASK-CITEKEY is non-nil. Otherwise, the citekey will be taken -from the text under point if it matches `bog-citekey-format' or -using `bog-citekey-func'. - -ACTION will be called with the resulting citekey as an argument." - (let ((citekey (or (and ask-citekey (funcall ask-func)) - (bog-citekey-at-point) - (funcall bog-citekey-func)))) - (funcall action citekey))) - (defun bog-select-citekey (citekeys) "Prompt for citekey from CITEKEYS" (funcall bog-completing-read "Select citekey: " citekeys)) @@ -191,6 +177,11 @@ year, and the first meaningful word in the title)." (bog-citekey-only-p maybe-citekey)) maybe-citekey))) +(defun bog-citekey-from-notes () + "Get the citekey from the context of the Org file." + (or (bog-citekey-at-point) + (funcall bog-citekey-func))) + (defun bog-citekey-from-heading-title () "Retrieve citekey from first parent heading that matches `bog-citekey-format'." @@ -241,9 +232,9 @@ available citekeys. Otherwise, the citekey will be taken from the text under point if it matches `bog-citekey-format' or using `bog-citekey-func'." (interactive "P") - (bog-citekey-action 'bog-open-citekey-pdf - '(lambda () (bog-select-citekey (bog-pdf-citekeys))) - arg)) + (let ((citekey (or (and arg (bog-select-citekey (bog-pdf-citekeys))) + (bog-citekey-from-notes)))) + (bog-open-citekey-pdf citekey))) (defun bog-open-citekey-pdf (citekey) (let ((pdf-file (bog-citekey-as-pdf citekey))) @@ -257,9 +248,8 @@ text under point if it matches `bog-citekey-format' or using The citekey will be taken from the text under point if it matches `bog-citekey-format' or using `bog-citekey-func'." (interactive) - (bog-citekey-action 'bog-rename-staged-pdf - nil - nil)) + (let ((citekey (bog-citekey-from-notes))) + (bog-rename-staged-pdf citekey))) (defun bog-rename-staged-pdf (citekey) (let* ((pdf-file (bog-citekey-as-pdf citekey)) @@ -302,9 +292,9 @@ available citekeys. Otherwise, the citekey will be taken from the text under point if it matches `bog-citekey-format' or using `bog-citekey-func'." (interactive "P") - (bog-citekey-action bog-find-citekey-bib-func - '(lambda () (bog-select-citekey (bog-bib-citekeys))) - arg)) + (let ((citekey (or (and arg (bog-select-citekey (bog-pdf-citekeys))) + (bog-citekey-from-notes)))) + (funcall bog-find-citekey-bib-func citekey))) (defun bog-find-citekey-bib-file (citekey) "Open BibTeX file of CITEKEY contained in `bog-bib-directory'." @@ -401,9 +391,8 @@ The URL will be taken from `bog-web-search-url'. The citekey is split by groups in `bog-citekey-format' and joined by \"+\" to form the query string." (interactive) - (bog-citekey-action 'bog-open-citekey-on-web - nil - nil)) + (let ((citekey (bog-citekey-from-notes))) + (bog-open-citekey-on-web citekey))) (defun bog-open-citekey-on-web (citekey) (let ((url (bog-citekey-as-search-url citekey))) |