From 0f1786b7fee58452a3225e4b9b7c94176fff9b5a Mon Sep 17 00:00:00 2001 From: heraplem Date: Sat, 7 Sep 2024 13:57:16 +0200 Subject: [PATCH] fix: recursive directories --- citar-file.el | 19 +++++++++++-------- citar.el | 7 ++++--- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/citar-file.el b/citar-file.el index 25346603..fde126a6 100644 --- a/citar-file.el +++ b/citar-file.el @@ -178,13 +178,16 @@ whether entries have associated files." (when citar-file-variable (lambda (citekey) (and (citar-get-value citar-file-variable citekey) t)))) -(defun citar--library-dirs () +(defun citar-file--library-dirs () "Return all directories to be searched for library files." - (mapcar (lambda (dir) - (cons dir (when citar-library-paths-recursive - (directory-files-recursively dir "" :include-directories - #'file-directory-p)))) - citar-library-paths)) + (apply #'append + (mapcar (lambda (dir) + (cons dir + (when citar-library-paths-recursive + (seq-filter #'file-directory-p + (directory-files-recursively dir "" + :include-directories))))) + citar-library-paths))) (defun citar-file--get-from-file-field (&optional keys) "Return files for KEYS by parsing the `citar-file-variable' field. @@ -200,7 +203,7 @@ files associated with KEYS." (when-let ((filefield citar-file-variable)) (citar--check-configuration 'citar-library-paths 'citar-library-file-extensions 'citar-file-parser-functions) - (let ((dirs (append (citar--library-dirs) + (let ((dirs (append (citar-file--library-dirs) (mapcar #'file-name-directory (citar--bibliography-files))))) (citar--get-resources-using-function (lambda (citekey entry) @@ -221,7 +224,7 @@ files associated with KEYS." "Return list of files for KEYS in ENTRIES." (citar--check-configuration 'citar-library-paths 'citar-library-file-extensions) (citar-file--directory-files - citar-library-paths keys citar-library-file-extensions + (citar-file--library-dirs) keys citar-library-file-extensions citar-file-additional-files-separator)) (defun citar-file--make-filename-regexp (keys extensions &optional additional-sep) diff --git a/citar.el b/citar.el index 6f09e338..07053597 100644 --- a/citar.el +++ b/citar.el @@ -1352,9 +1352,10 @@ it. SOURCE-PLIST must be as specified in the documentation of `citar-add-file-sources'." - (let* ((directory (if (cdr citar-library-paths) - (completing-read "Directory: " citar-library-paths) - (car citar-library-paths))) + (let* ((dirs (citar-file--library-dirs)) + (directory (if (cdr dirs) + (completing-read "Directory: " dirs) + (car dirs))) (extension (or (plist-get source-plist :extension) (read-string "File extension: "))) (destfile (expand-file-name citekey directory))