From: Sam Steingold Date: Wed, 8 Jul 2009 14:23:57 +0000 (+0000) Subject: (rgrep): Allow grep-find-ignored-directories X-Git-Tag: emacs-pretest-23.1.90~2263 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=49405d0e1be811957433cb0c89a2fbe099fcf5b9;p=emacs.git (rgrep): Allow grep-find-ignored-directories to be a cons cell (test . ignored-directory) to selectively ignore some directories depending on the location of the search. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index b7168fffd3a..80e6d190553 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2009-07-08 Sam Steingold + + * progmodes/grep.el (rgrep): Allow grep-find-ignored-directories + to be a cons cell (test . ignored-directory) to selectively ignore + some directories depending on the location of the search. + 2009-07-08 Michael Albinus * net/tramp.el (tramp-set-file-uid-gid): Handle the case the diff --git a/lisp/progmodes/grep.el b/lisp/progmodes/grep.el index 2c70c61c32a..241a5325a1c 100644 --- a/lisp/progmodes/grep.el +++ b/lisp/progmodes/grep.el @@ -194,7 +194,9 @@ Customize or call the function `grep-apply-setting'." (defcustom grep-find-ignored-directories vc-directory-exclusion-list - "*List of names of sub-directories which `rgrep' shall not recurse into." + "*List of names of sub-directories which `rgrep' shall not recurse into. +If an element is a cons cell, the car is called on the search directory +to determine whether cdr should not be recursed into." :type '(repeat string) :group 'grep) @@ -891,11 +893,18 @@ This command shares argument histories with \\[lgrep] and \\[grep-find]." (concat (shell-quote-argument "(") ;; we should use shell-quote-argument here " -path " - (mapconcat #'(lambda (dir) - (shell-quote-argument - (concat "*/" dir))) - grep-find-ignored-directories - " -o -path ") + (mapconcat + #'(lambda (ignore) + (cond ((stringp ignore) + (shell-quote-argument + (concat "*/" ignore))) + ((consp ignore) + (and (funcall (car ignore) dir) + (shell-quote-argument + (concat "*/" + (cdr ignore))))))) + grep-find-ignored-directories + " -o -path ") " " (shell-quote-argument ")") " -prune -o ")))))