help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Is it possible to run rgrep in emacs on Win32?


From: Steinar Bang
Subject: Re: Is it possible to run rgrep in emacs on Win32?
Date: Fri, 13 Apr 2012 13:34:09 +0200
User-agent: Gnus/5.130004 (Ma Gnus v0.4) Emacs/23.4 (gnu/linux)

>>>>> Steinar Bang <sb@dod.no>:
>>>>> Eli Zaretskii <eliz@gnu.org>:

>> First, try Emacs 23.3 or later, there were some changes made there to
>> fix problems with very long command lines, perhaps you are hitting
>> that limit. 

> Thanks!  Will try!

Tried emacs 23.4 which was the newest 23.x available.  That got me a bit
further:

C:\ProgramFiles\GnuWin32\bin\find . "(" -path "*/SCCS" -o -path "*/RCS" -o 
-path "*/CVS" -o -path "*/MCVS" -o -path "*/.svn" -o -path "*/.git" -o -path 
"*/.hg" -o -path "*/.bzr" -o -path "*/_MTN" -o -path "*/_darcs" -o -path 
"*/{arch}" ")" -prune -o "(" -name ".#*" -o -name "*.o" -o -name "*~" -o -name 
"*.bin" -o -name "*.bak" -o -name "*.obj" -o -name "*.map" -o -name "*.ico" -o 
-name "*.pif" -o -name "*.lnk" -o -name "*.a" -o -name "*.ln" -o -name "*.blg" 
-o -name "*.bbl" -o -name "*.dll" -o -name "*.drv" -o -name "*.vxd" -o -name 
"*.386" -o -name "*.elc" -o -name "*.lof" -o -name "*.glo" -o -name "*.idx" -o 
-name "*.lot" -o -name "*.fmt" -o -name "*.tfm" -o -name "*.class" -o -name 
"*.fas" -o -name "*.lib" -o -name "*.mem" -o -name "*.x86f" -o -name "*.sparcf" 
-o -name "*.fasl" -o -name "*.ufsl" -o -name "*.fsl" -o -name "*.dxl" -o -name 
"*.pfsl" -o -name "*.dfsl" -o -name "*.p64fsl" -o -name "*.d64fsl" -o -name 
"*.dx64fsl" -o -name "*.lo" -o -name "*.la" -o -name "*.gmo" -o -name "*.mo" -o 
-name "*.toc" -o -name "*.aux" -o -name "*.cp" -o -name "*.fn" -o -name "*.ky" 
-o -name "*.pg" -o -name "*.tp" -o -name "*.vr" -o -name "*.cps" -o -name 
"*.fns" -o -name "*.kys" -o -name "*.pgs" -o -name "*.tps" -o -name "*.vrs" -o 
-name "*.pyc" -o -name "*.pyo" ")" -prune -o  -type f "(" -iname "*.csproj" ")" 
-print0 | "xargs" -0 -e grep -i -nH -e "searchterm"
'"xargs"' is not recognized as an internal or external command,
operable program or batch file.

In my .emacs I had the following:
;; Make rgrep find the find program from GnuWin32
(setq find-program "C:\\ProgramFiles\\GnuWin32\\bin\\find")

So I looked in grep.el (which defines the find-program variable) and
found that it had an xargs-program variable as well.  Defined it like
this in .emacs (note that it is necessary to start a new emacs for the
changes to take effect.  Just evaluating that setq in the *scratch*
buffer won't work):
;; Make rgrep find the xargs program from GnuWin32
(setq xargs-program "C:\\ProgramFiles\\GnuWin32\\bin\\xargs")

This worked better, but I got a more or less expected error message that
it couldn't find "grep":

C:\ProgramFiles\GnuWin32\bin\find . "(" -path "*/SCCS" -o -path "*/RCS" -o 
-path "*/CVS" -o -path "*/MCVS" -o -path "*/.svn" -o -path "*/.git" -o -path 
"*/.hg" -o -path "*/.bzr" -o -path "*/_MTN" -o -path "*/_darcs" -o -path 
"*/{arch}" ")" -prune -o "(" -name ".#*" -o -name "*.o" -o -name "*~" -o -name 
"*.bin" -o -name "*.bak" -o -name "*.obj" -o -name "*.map" -o -name "*.ico" -o 
-name "*.pif" -o -name "*.lnk" -o -name "*.a" -o -name "*.ln" -o -name "*.blg" 
-o -name "*.bbl" -o -name "*.dll" -o -name "*.drv" -o -name "*.vxd" -o -name 
"*.386" -o -name "*.elc" -o -name "*.lof" -o -name "*.glo" -o -name "*.idx" -o 
-name "*.lot" -o -name "*.fmt" -o -name "*.tfm" -o -name "*.class" -o -name 
"*.fas" -o -name "*.lib" -o -name "*.mem" -o -name "*.x86f" -o -name "*.sparcf" 
-o -name "*.fasl" -o -name "*.ufsl" -o -name "*.fsl" -o -name "*.dxl" -o -name 
"*.pfsl" -o -name "*.dfsl" -o -name "*.p64fsl" -o -name "*.d64fsl" -o -name 
"*.dx64fsl" -o -name "*.lo" -o -name "*.la" -o -name "*.gmo" -o -name "*.mo" -o 
-name "*.toc" -o -name "*.aux" -o -name "*.cp" -o -name "*.fn" -o -name "*.ky" 
-o -name "*.pg" -o -name "*.tp" -o -name "*.vr" -o -name "*.cps" -o -name 
"*.fns" -o -name "*.kys" -o -name "*.pgs" -o -name "*.tps" -o -name "*.vrs" -o 
-name "*.pyc" -o -name "*.pyo" ")" -prune -o  -type f "(" -iname "*.csproj" ")" 
-print0 | "C:\ProgramFiles\GnuWin32\bin\xargs" -0 -e grep -i -nH -e "searchterm"
C:\ProgramFiles\GnuWin32\bin\xargs: grep: No such file or directory

So I added the following to .emacs, and started a fresh emacs 23.4
instance:
;; Make rgrep find the grep program from GnuWin32
(setq grep-program "C:\\ProgramFiles\\GnuWin32\\bin\\grep")

Success!

So in summary:
 - Use emacs 23.4
 - Install FindUtils and grep from GnuWin32 http://gnuwin32.sourceforge.net/
 - Set variables in .emacs to whereever you installed the GnuWin32
   binaries:
    ;; Make rgrep find the GnuWin32 executables it needs
    (setq find-program "C:\\ProgramFiles\\GnuWin32\\bin\\find")
    (setq xargs-program "C:\\ProgramFiles\\GnuWin32\\bin\\xargs")
    (setq grep-program "C:\\ProgramFiles\\GnuWin32\\bin\\grep")

(The use "C:\ProgramFiles" for the GnuWin32 location, is just an old
habit of mine, to give ported unix programs an installation path with no
spaces)



reply via email to

[Prev in Thread] Current Thread [Next in Thread]