summaryrefslogtreecommitdiff
path: root/bog.el
diff options
context:
space:
mode:
Diffstat (limited to 'bog.el')
-rw-r--r--bog.el41
1 files changed, 15 insertions, 26 deletions
diff --git a/bog.el b/bog.el
index 2efb801..aed8146 100644
--- a/bog.el
+++ b/bog.el
@@ -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)))