Subject: bug#9414: Use of 'grep-find-ignored-directories' exclude files from search.

From: Oleksandr Gavenko <[email-masked]>
Date: Thu, 01 Sep 2011 00:44:11 +0300

GNU Emacs 23.3.1 (i386-mingw-nt6.1.7601) of 2011-03-10 on 3249CTO

If set:

   (add-to-list 'grep-find-ignored-directories "build" t)

and try search M-x rgrep in hierarchy:

   build/xxx
   src/yyy
   src/build
   build

   $ mkdir  build src;
   $ touch  build/xxx src/yyy src/build

'find' part of 'rgrep' print only (I simplify expression of 'rgrep'):

   $ find . '(' -path '*/build' -o -path '*/lib' ')' \
      -prune -o  -type f  -print
./src/yyy

Correct one is:

   $ find . '(' -type d -path '*/build' -o -path '*/lib' ')' \
      -prune -o  -type f  -print
./src/build
./src/yyy

So any dir added to 'grep-find-ignored-directories' also affected to
*regular* file names...

I previously file bug to findutils, but I am wrong:

   http://savannah.gnu.org/bugs/?34159

This is Emacs bug.

I suggest fix in patch.
=== modified file 'lisp/progmodes/grep.el'
--- lisp/progmodes/grep.el	2011-02-10 19:13:31 +0000
+++ lisp/progmodes/grep.el	2011-08-31 21:35:14 +0000
@@ -958,7 +958,7 @@
 		       (and grep-find-ignored-directories
 			    (concat (shell-quote-argument "(")
 				    ;; we should use shell-quote-argument here
-				    " -path "
+				    " -type d -path "
 				    (mapconcat
 				     #'(lambda (ignore)
 					 (cond ((stringp ignore)