How can I modify the default FILES pattern in rgrep for C++ mode?

For C mode the default is *.[ch]. For C++, it is *.cc *.cxx *.cpp *.C *.CC *.c++.

I would like to change it to *.cc *.[ch]xx *.[ch]pp *.[CHh] *.CC *.HH *.[ch]++.


M-xcustomize-variableRETgrep-files-aliases and then use the interface to change the value of this variable.

Alternatively, you could put:

(setf (cdr (assoc "cc" grep-files-aliases))
      (assoc "cchh" grep-files-aliases))

For future reference, you could have looked up the help for rgrep (by typing C-h frgrep) where it says:

Recursively grep for REGEXP in FILES in directory tree rooted at DIR. The search is limited to file names matching shell pattern FILES. FILES may use abbreviations defined in grep-files-aliases, e.g. entering ch is equivalent to *.[ch].

| improve this answer | |
  • I had to use (eval-after-load "grep" '(setf (cdr (assoc "cc" grep-files-aliases)) (cdr (assoc "cchh" grep-files-aliases)))), because grep-files-aliases was void while loading my init file. – 0x5453 Aug 12 '16 at 13:52
  • @0x5453 Right, I didn't think grep package wouldn't be loaded by default. – wvxvw Aug 13 '16 at 14:27
  • When I add the above to my init.el file I get the following message upon using rgrep: split-string: Wrong type argument: stringp, ("cchh" . "*.cc *.[ch]xx *.[ch]pp *.[CHh] *.CC *.HH *.[ch]++") – Wouter Beek Oct 12 '17 at 18:10

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.