|
@@ -421,9 +421,6 @@ Return a non-nil value on a successful operation."
|
|
|
(defun org-cite-get-processor (name)
|
|
|
"Return citation processor named after symbol NAME.
|
|
|
Return nil if no such processor is found."
|
|
|
- ;; Opportunistically try to load the library providing the
|
|
|
- ;; processor.
|
|
|
- (require (intern (concat "oc-" (symbol-name name))) nil t)
|
|
|
(seq-find (lambda (p) (eq name (org-cite-processor-name p)))
|
|
|
org-cite--processors))
|
|
|
|
|
@@ -454,6 +451,13 @@ PROCESSOR is the name of a cite processor, as a symbol. CAPABILITY is
|
|
|
|
|
|
|
|
|
;;; Internal functions
|
|
|
+(defun org-cite--try-load-processor (name)
|
|
|
+ "Try loading citation processor NAME if unavailable.
|
|
|
+NAME is a symbol. When the NAME processor is unregistered, try
|
|
|
+loading \"oc-NAME\" library beforehand, then cross fingers."
|
|
|
+ (unless (org-cite-get-processor name)
|
|
|
+ (require (format "oc-%s" name) nil t)))
|
|
|
+
|
|
|
(defun org-cite--set-post-blank (datum blanks)
|
|
|
"Set `:post-blank' property from element or object before DATUM to BLANKS.
|
|
|
DATUM is an element or object. BLANKS is an integer. DATUM is modified
|
|
@@ -1279,6 +1283,7 @@ side-effect."
|
|
|
(pcase processor
|
|
|
('nil nil)
|
|
|
(`(,name . ,_)
|
|
|
+ (org-cite--try-load-processor name)
|
|
|
(cond
|
|
|
((not (org-cite-get-processor name))
|
|
|
(user-error "Unknown processor %S" name))
|
|
@@ -1428,10 +1433,11 @@ channel, as a property list."
|
|
|
"Follow citation or citation-reference DATUM.
|
|
|
Following is done according to the processor set in `org-cite-follow-processor'.
|
|
|
ARG is the prefix argument received when calling `org-open-at-point', or nil."
|
|
|
+ (unless org-cite-follow-processor
|
|
|
+ (user-error "No processor set to follow citations"))
|
|
|
+ (org-cite--try-load-processor org-cite-follow-processor)
|
|
|
(let ((name org-cite-follow-processor))
|
|
|
(cond
|
|
|
- ((null name)
|
|
|
- (user-error "No processor set to follow citations"))
|
|
|
((not (org-cite-get-processor name))
|
|
|
(user-error "Unknown processor %S" name))
|
|
|
((not (org-cite-processor-has-capability-p name 'follow))
|
|
@@ -1649,10 +1655,11 @@ More specifically,
|
|
|
Insertion is done according to the processor set in `org-cite-insert-processor'.
|
|
|
ARG is the prefix argument received when calling interactively the function."
|
|
|
(interactive "P")
|
|
|
+ (unless org-cite-insert-processor
|
|
|
+ (user-error "No processor set to insert citations"))
|
|
|
+ (org-cite--try-load-processor org-cite-insert-processor)
|
|
|
(let ((name org-cite-insert-processor))
|
|
|
(cond
|
|
|
- ((null name)
|
|
|
- (user-error "No processor set to insert citations"))
|
|
|
((not (org-cite-get-processor name))
|
|
|
(user-error "Unknown processor %S" name))
|
|
|
((not (org-cite-processor-has-capability-p name 'insert))
|