From 6fcff1aeac097ca46874e5c1f0127e6ab2e7d2c5 Mon Sep 17 00:00:00 2001 From: "Tom Breton (Tehom)" Date: Sun, 13 Feb 2011 22:39:56 -0500 Subject: [PATCH] New function fileset-whole-get-filelist. --- fileset-whole.el | 44 +++++++++++++++++++++++++++++++++++++++----- 1 file changed, 39 insertions(+), 5 deletions(-) diff --git a/fileset-whole.el b/fileset-whole.el index a2137ed..1c30ee3 100644 --- a/fileset-whole.el +++ b/fileset-whole.el @@ -289,6 +289,38 @@ If FILESET is a string, return the fileset of that name." fileset) (t (error "Can't convert to fileset: %s" fileset)))) +;;;_ . fileset-whole-get-filelist + +;;This may be a bugfix towards filesets, because +;;`filesets-get-filelist' fails on :pattern or :tree. It's also an +;;extension, to allow multiple :files-type clauses. +(defun fileset-whole-get-filelist (fileset) + "Return a list of all files in FILESET. +Use instead of `filesets-get-filelist'." + + (let* + ( + (entries (cdr fileset)) + (files + (apply #'nconc + (mapcar + #'(lambda (entry) + (mapcar + #'expand-file-name + (case (car entry) + ((:pattern :tree :ingroup) + (filesets-get-filelist + (cdr entry) (car entry) nil)) + (:files (cdr entry)) + (:file + (list (cdr entry))) + ;;Anything else: nil + (t ()) + ))) + entries)))) + files)) + + ;;;_ . fileset-whole-pick-file ;;This is suitable as a destination-file function for ;;`org-remember-templates' @@ -308,7 +340,7 @@ files that satisfy it." (fileset (filesets-get-fileset-from-name fileset-name)) (files - (filesets-get-filelist fileset nil nil)) + (fileset-whole-get-filelist fileset)) (files ;;$$IMPROVE ME Support filtering by extension, by ;;mode-symbol, or by regexp. @@ -324,11 +356,13 @@ files that satisfy it." (let* ((fileset (filesets-whole->fileset fileset)) - (files (filesets-get-filelist fileset nil nil)) + (files (fileset-whole-get-filelist fileset)) (prefix - (reduce - #'fill-common-string-prefix - files))) + (if files + (reduce + #'fill-common-string-prefix + files) + (error "No files found for %s" fileset)))) (file-name-directory prefix))) -- 2.11.4.GIT