mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-11-24 07:20:29 +00:00
oc-csl: Locate etc/csl for system installs and Emacs repo
* lisp/oc-csl.el (org-cite-csl--etc-dir): Add `data-directory' case, using it as the fallback. Also, use the more specific file-directory-p rather than file-exists-p to inspect the candidates. When using Org from the system installation, the CSL files will be available in the etc/org/csl/ subdirectory underneath `data-directory'. (This requires the etc/csl/ files to be synced to the Emacs repo under etc/org/csl.) Give the Org repository and package cases precedence because they are anchored to a specific oc.el location while, for Emacs releases with Org 9.5 or later, the data-directory files will typically always be present.
This commit is contained in:
parent
d0f774b0b4
commit
60b178e596
@ -183,14 +183,20 @@ Used only when `second-field-align' is activated by the used CSL style."
|
||||
|
||||
;;; Internal variables
|
||||
(defconst org-cite-csl--etc-dir
|
||||
(let* ((oc-root (file-name-directory (locate-library "oc")))
|
||||
(oc-etc-dir-1 (expand-file-name "../etc/csl/" oc-root)))
|
||||
;; package.el and straight will put all of org-mode/lisp/ in org-mode/.
|
||||
;; This will cause .. to resolve to the directory above Org.
|
||||
;; To make life easier for people using package.el or straight, we can
|
||||
;; check to see if ../etc/csl exists, and if it doesn't try ./etc/csl.
|
||||
(if (file-exists-p oc-etc-dir-1) oc-etc-dir-1
|
||||
(expand-file-name "etc/csl/" oc-root)))
|
||||
(let ((oc-root (file-name-directory (locate-library "oc"))))
|
||||
(cond
|
||||
;; First check whether it looks like we're running from the main
|
||||
;; Org repository.
|
||||
((let ((csl-org (expand-file-name "../etc/csl/" oc-root)))
|
||||
(and (file-directory-p csl-org) csl-org)))
|
||||
;; Next look for the directory alongside oc.el because package.el
|
||||
;; and straight will put all of org-mode/lisp/ in org-mode/.
|
||||
((let ((csl-pkg (expand-file-name "etc/csl/" oc-root)))
|
||||
(and (file-directory-p csl-pkg) csl-pkg)))
|
||||
;; Finally fall back the location used by shared system installs
|
||||
;; and when running directly from Emacs repository.
|
||||
(t
|
||||
(expand-file-name "org/csl/" data-directory))))
|
||||
"Directory \"etc/\" from repository.")
|
||||
|
||||
(defconst org-cite-csl--fallback-locales-dir org-cite-csl--etc-dir
|
||||
|
Loading…
Reference in New Issue
Block a user