oc: Allow declaring cite styles as a function
* lisp/oc.el (org-cite-register-processor): Allow a function as :cite-styles value. (org-cite-supported-styles): Propagate change above. * testing/lisp/test-oc.el (test-org-cite/supported-styles): Add test.
This commit is contained in:
parent
798435be85
commit
7e2d9091d0
|
@ -97,6 +97,12 @@ argument.
|
|||
|
||||
** Miscellaneous
|
||||
|
||||
*** Citation processors can declare styles dynamically
|
||||
|
||||
When a citation processor is registered, it is now possible to set
|
||||
~:cite-styles~ key to a function, which will be called whenever the
|
||||
list of styles is required.
|
||||
|
||||
*** Org also searches for CSL style files in default directory
|
||||
|
||||
When CSL style file name is relative, Org first looks into
|
||||
|
|
|
@ -409,6 +409,9 @@ optional keys can be set:
|
|||
The \"nil\" style denotes the processor fall-back style. It
|
||||
should have a corresponding entry in the value.
|
||||
|
||||
The value can also be a function. It will be called without
|
||||
any argument and should return a list structured as the above.
|
||||
|
||||
Return a non-nil value on a successful operation."
|
||||
(declare (indent 1))
|
||||
(unless (and name (symbolp name))
|
||||
|
@ -680,7 +683,10 @@ strings."
|
|||
(let ((collection
|
||||
(seq-mapcat
|
||||
(lambda (name)
|
||||
(org-cite-processor-cite-styles (org-cite-get-processor name)))
|
||||
(pcase (org-cite-processor-cite-styles
|
||||
(org-cite-get-processor name))
|
||||
((and (pred functionp) f) (funcall f))
|
||||
(static-data static-data)))
|
||||
(or processors
|
||||
(mapcar (pcase-lambda (`(,_ . (,name . ,_))) name)
|
||||
org-cite-export-processors))))
|
||||
|
|
|
@ -306,6 +306,14 @@
|
|||
(org-cite-register-processor 'test
|
||||
:cite-styles '((("foo" "f")) ((""))))
|
||||
(org-cite-supported-styles))))
|
||||
;; Also support functions generating the list.
|
||||
(should
|
||||
(equal '((("foo" "f")) (("")))
|
||||
(let ((org-cite--processors nil)
|
||||
(org-cite-export-processors '((t test))))
|
||||
(org-cite-register-processor 'test
|
||||
:cite-styles (lambda () '((("foo" "f")) (("")))))
|
||||
(org-cite-supported-styles))))
|
||||
;; Explicitly provide a processor.
|
||||
(should
|
||||
(equal '((("")))
|
||||
|
|
Loading…
Reference in New Issue