Mercurial > emacs
changeset 53729:2598e11dc4dd
(file-cache-find-posix-p): New function. Detect Cygwin.
(file-cache-add-directory-using-find): Added Cygwin support.
(file-cache-find-command-posix-flag): New user variable.
(file-cache-add-directory): Check for directories and remove them from
dir-files.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Tue, 27 Jan 2004 18:59:34 +0000 |
parents | ca5369d1b33a |
children | 2a4fc5c14ddd |
files | lisp/filecache.el |
diffstat | 1 files changed, 43 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/filecache.el Tue Jan 27 16:48:17 2004 +0000 +++ b/lisp/filecache.el Tue Jan 27 18:59:34 2004 +0000 @@ -170,6 +170,19 @@ :type 'string :group 'file-cache) +(defcustom file-cache-find-command-posix-flag 'not-defined + "*Set to t, if `file-cache-find-command' handles wildcards POSIX style. +This variable is automatically set to nil or non-nil +if it has the initial value `not-defined' whenever you first +call the `file-cache-add-directory-using-find'. + +Under Windows operating system where Cygwin is available, this value +should be t." + :type '(choice (const :tag "Yes" t) + (const :tag "No" nil) + (const :tag "Unknown" not-defined)) + :group 'file-cache) + (defcustom file-cache-locate-command "locate" "*External program used by `file-cache-add-directory-using-locate'." :type 'string @@ -267,11 +280,13 @@ ;; Filter out files we don't want to see (mapcar '(lambda (file) - (mapcar - '(lambda (regexp) - (if (string-match regexp file) - (setq dir-files (delq file dir-files)))) - file-cache-filter-regexps)) + (if (file-directory-p file) + (setq dir-files (delq file dir-files)) + (mapcar + '(lambda (regexp) + (if (string-match regexp file) + (setq dir-files (delq file dir-files)))) + file-cache-filter-regexps))) dir-files) (file-cache-add-file-list dir-files)))) @@ -317,17 +332,39 @@ file-cache-alist))) ))) +(defun file-cache-find-posix-p () + "Check if `file-cache-find-command' handles wildcards POSIX style." + (or (not (memq system-type '(ms-dos windows-nt))) ;; Include all POSIX systems. + (with-temp-buffer ;; Cygwin? + (call-process file-cache-find-command + nil + (current-buffer) + nil + "--version") + (goto-char (point-min)) + ;; Cygwin + (if (re-search-forward "GNU" nil t) + (buffer-string))))) + (defun file-cache-add-directory-using-find (directory) "Use the `find' command to add files to the file cache. Find is run in DIRECTORY." (interactive "DAdd files under directory: ") (let ((dir (expand-file-name directory))) + (if (eq file-cache-find-command-posix-flag 'not-defined) + (setq file-cache-find-command-posix-flag (file-cache-find-posix-p))) (set-buffer (get-buffer-create file-cache-buffer)) (erase-buffer) (call-process file-cache-find-command nil (get-buffer file-cache-buffer) nil dir "-name" - (if (eq system-type 'windows-nt) "'*'" "*") + (cond + (file-cache-find-command-posix-flag + "\\*") + ((eq system-type 'windows-nt) + "'*'") + (t + "*")) "-print") (file-cache-add-from-file-cache-buffer)))