]> git.eshelyaron.com Git - emacs.git/commitdiff
(grep-template): Add "<X>" to docstring.
authorJuri Linkov <juri@jurta.org>
Thu, 10 Sep 2009 00:58:15 +0000 (00:58 +0000)
committerJuri Linkov <juri@jurta.org>
Thu, 10 Sep 2009 00:58:15 +0000 (00:58 +0000)
(grep-files-aliases): Add "all".  Move "el" and "ch" to the top of
the list.  Move "asm" to the bottom.
(grep-find-ignored-directories): Add `choice' with nil value
to empty the list easily.
(grep-find-ignored-files): New option.
(grep-files-history): Set to nil by default instead of '("ch" "el").
(grep-compute-defaults): Add "<X>" to `grep-template'.
(grep-read-files): Bind new local variables `default-alias' and
`default-extension'.  Use a list of default values for the file prompt.
(lgrep): Add `--exclude=' command line options composed from
`grep-find-ignored-files'.
(rgrep): Add `-name' command line options composed from
`grep-find-ignored-files'.  (Bug#4301)

lisp/ChangeLog
lisp/progmodes/grep.el

index d030d24304e1e9ecb6405bf9c0a0838f8b8500ac..05bcd0ad18bebc21a425249281afe749101ee7f4 100644 (file)
@@ -1,3 +1,26 @@
+2009-09-10  Juri Linkov  <juri@jurta.org>
+
+       * isearch.el (isearch-text-char-description): Propertize escape
+       character sequences with the `escape-glyph' face.  (Bug#4344)
+
+       * simple.el (shell-command): Set asynchronous process filter to
+       `comint-output-filter'.  (Bug#4343)
+
+       * progmodes/grep.el (grep-template): Add "<X>" to docstring.
+       (grep-files-aliases): Add "all".  Move "el" and "ch" to the top of
+       the list.  Move "asm" to the bottom.
+       (grep-find-ignored-directories): Add `choice' with nil value
+       to empty the list easily.
+       (grep-find-ignored-files): New option.
+       (grep-files-history): Set to nil by default instead of '("ch" "el").
+       (grep-compute-defaults): Add "<X>" to `grep-template'.
+       (grep-read-files): Bind new local variables `default-alias' and
+       `default-extension'.  Use a list of default values for the file prompt.
+       (lgrep): Add `--exclude=' command line options composed from
+       `grep-find-ignored-files'.
+       (rgrep): Add `-name' command line options composed from
+       `grep-find-ignored-files'.  (Bug#4301)
+
 2009-09-09  Stefan Monnier  <monnier@iro.umontreal.ca>
 
        * diff-mode.el (diff-hunk-kill): Fix the search of the next hunk
 2009-08-30  Kevin Rodgers  <kevin.d.rodgers@gmail.com>
 
        * progmodes/grep.el (grep-read-files): Strip trailing <N> from
-       buffer names not visiting a file (e.g. cloned buffers).
+       buffer names not visiting a file (e.g. cloned buffers).  (Bug#4210)
 
 2009-08-30  Nick Roberts  <nickrob@snap.net.nz>
 
index bf626f6e308ea8bb9cbfb4b33a9f45718d8b05f7..2c87548e5bf561b2db7d7749bcc890ad989ef060 100644 (file)
@@ -120,6 +120,7 @@ Customize or call the function `grep-apply-setting'."
 The following place holders should be present in the string:
  <C> - place to put -i if case insensitive grep.
  <F> - file names and wildcards to search.
+ <X> - file names and wildcards to exclude.
  <R> - the regular expression searched for.
  <N> - place to insert null-device.
 
@@ -176,18 +177,19 @@ Customize or call the function `grep-apply-setting'."
   :group 'grep)
 
 (defcustom grep-files-aliases
-  '(("asm" .    "*.[sS]")
+  '(("all" .   "* .*")
+    ("el" .    "*.el")
+    ("ch" .    "*.[ch]")
     ("c" .     "*.c")
     ("cc" .    "*.cc *.cxx *.cpp *.C *.CC *.c++")
-    ("cchh" .    "*.cc *.[ch]xx *.[ch]pp *.[CHh] *.CC *.HH *.[ch]++")
+    ("cchh" .  "*.cc *.[ch]xx *.[ch]pp *.[CHh] *.CC *.HH *.[ch]++")
     ("hh" .    "*.hxx *.hpp *.[Hh] *.HH *.h++")
-    ("ch" .    "*.[ch]")
-    ("el" .    "*.el")
     ("h" .     "*.h")
-    ("l" .      "[Cc]hange[Ll]og*")
+    ("l" .     "[Cc]hange[Ll]og*")
     ("m" .     "[Mm]akefile*")
-    ("tex" .    "*.tex")
-    ("texi" .   "*.texi"))
+    ("tex" .   "*.tex")
+    ("texi" .  "*.texi")
+    ("asm" .   "*.[sS]"))
   "*Alist of aliases for the FILES argument to `lgrep' and `rgrep'."
   :type 'alist
   :group 'grep)
@@ -197,7 +199,20 @@ Customize or call the function `grep-apply-setting'."
   "*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)
+  :type '(choice (repeat :tag "Ignored directories" string)
+                (const :tag "No ignored directories" nil))
+  :group 'grep)
+
+(defcustom grep-find-ignored-files
+  (cons ".#*" (delq nil (mapcar (lambda (s)
+                                 (unless (string-match-p "/\\'" s)
+                                   (concat "*" s)))
+                               completion-ignored-extensions)))
+  "*List of file names which `rgrep' and `lgrep' shall exclude.
+If an element is a cons cell, the car is called on the search directory
+to determine whether cdr should not be excluded."
+  :type '(choice (repeat :tag "Ignored file" string)
+                (const :tag "No ignored files" nil))
   :group 'grep)
 
 (defcustom grep-error-screen-columns nil
@@ -421,7 +436,7 @@ This variable's value takes effect when `grep-compute-defaults' is called.")
 
 ;; History of lgrep and rgrep regexp and files args.
 (defvar grep-regexp-history nil)
-(defvar grep-files-history '("ch" "el"))
+(defvar grep-files-history nil)
 
 ;;;###autoload
 (defun grep-process-setup ()
@@ -524,7 +539,7 @@ Set up `compilation-exit-message-function' and run `grep-setup-hook'."
                (format "%s %s " grep-program grep-options)))
        (unless grep-template
          (setq grep-template
-               (format "%s <C> %s <R> <F>" grep-program grep-options)))
+               (format "%s <X> <C> %s <R> <F>" grep-program grep-options)))
        (unless grep-find-use-xargs
          (setq grep-find-use-xargs
                (cond
@@ -753,20 +768,24 @@ substitution string.  Note dynamic scoping of variables.")
         (fn (and bn
                  (stringp bn)
                  (file-name-nondirectory bn)))
+        (default-alias
+          (and fn
+               (let ((aliases grep-files-aliases)
+                     alias)
+                 (while aliases
+                   (setq alias (car aliases)
+                         aliases (cdr aliases))
+                   (if (string-match (wildcard-to-regexp (cdr alias)) fn)
+                       (setq aliases nil)
+                     (setq alias nil)))
+                 (cdr alias))))
+        (default-extension
+          (and fn
+               (let ((ext (file-name-extension fn)))
+                 (and ext (concat "*." ext)))))
         (default
-          (or (and fn
-                   (let ((aliases grep-files-aliases)
-                         alias)
-                     (while aliases
-                       (setq alias (car aliases)
-                             aliases (cdr aliases))
-                       (if (string-match (wildcard-to-regexp (cdr alias)) fn)
-                           (setq aliases nil)
-                         (setq alias nil)))
-                     (cdr alias)))
-              (and fn
-                   (let ((ext (file-name-extension fn)))
-                     (and ext (concat "*." ext))))
+          (or default-alias
+              default-extension
               (car grep-files-history)
               (car (car grep-files-aliases))))
         (files (read-string
@@ -774,7 +793,10 @@ substitution string.  Note dynamic scoping of variables.")
                         "\" in files"
                         (if default (concat " (default " default ")"))
                         ": ")
-                nil 'grep-files-history default)))
+                nil 'grep-files-history
+                (delete-dups
+                 (delq nil (append (list default default-alias default-extension)
+                                   (mapcar 'car grep-files-aliases)))))))
     (and files
         (or (cdr (assoc files grep-files-aliases))
             files))))
@@ -822,7 +844,20 @@ This command shares argument histories with \\[rgrep] and \\[grep]."
        (setq command (grep-expand-template
                       grep-template
                       regexp
-                      files))
+                      files
+                      nil
+                      (and grep-find-ignored-files
+                           (concat " --exclude="
+                                   (mapconcat
+                                    #'(lambda (ignore)
+                                        (cond ((stringp ignore)
+                                               (shell-quote-argument ignore))
+                                              ((consp ignore)
+                                               (and (funcall (car ignore) dir)
+                                                    (shell-quote-argument
+                                                     (cdr ignore))))))
+                                    grep-find-ignored-files
+                                    " --exclude=")))))
        (when command
          (if confirm
              (setq command
@@ -892,26 +927,44 @@ This command shares argument histories with \\[lgrep] and \\[grep-find]."
                                         (concat " -o " find-name-arg " "))
                              " "
                              (shell-quote-argument ")"))
-                      dir
+                     dir
+                     (concat
                       (and grep-find-ignored-directories
                            (concat (shell-quote-argument "(")
                                    ;; we should use shell-quote-argument here
                                    " -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 ")
+                                    #'(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 "))
+                      (and grep-find-ignored-files
+                           (concat (shell-quote-argument "(")
+                                   ;; we should use shell-quote-argument here
+                                   " -name "
+                                   (mapconcat
+                                    #'(lambda (ignore)
+                                        (cond ((stringp ignore)
+                                               (shell-quote-argument ignore))
+                                              ((consp ignore)
+                                               (and (funcall (car ignore) dir)
+                                                    (shell-quote-argument
+                                                     (cdr ignore))))))
+                                    grep-find-ignored-files
+                                    " -o -name ")
                                    " "
                                    (shell-quote-argument ")")
-                                   " -prune -o ")))))
+                                   " -prune -o "))))))
        (when command
          (if confirm
              (setq command