非交互式执行rgrep

Boz*_*sov 8 emacs

我正在尝试从一个小的Emacs Lisp实用程序运行rgrep命令,但我得到一个奇怪的错误.命令描述是:

rgrep是一个交互式编译的Lisp函数.

(rgrep REGEXP和可选的FILES DIR CONFIRM)

以DIR为根的目录树中的FILES中递归grep for REGEXP.搜索仅限于与shell模式FILES匹配的文件名.FILES可以使用grep-files-aliases', e.g. enteringch'中定义的缩写,相当于`*.[ch]'.

使用Cu前缀,您可以在执行之前编辑构造的shell命令行.使用两个Cu前缀,直接编辑并运行`grep-find-command'.

在缓冲区中收集输出.当find以异步方式运行时,您可以使用Cx`(Mx next-error)或grep输出缓冲区中的RET来转到找到grep匹配的行.

此命令与Mx lgrep和Mx grep-find共享参数历史记录.

我试着跑:

(rgrep "something" "all" "~/projects/")
Run Code Online (Sandbox Code Playgroud)

我明白了

 *** Eval error ***  Wrong type argument: stringp, nil
Run Code Online (Sandbox Code Playgroud)

显然所有的参数都是字符串,所以我无法理解这个零来自何处.

我在Debian测试中运行Emacs 23.3.

在此先感谢您的帮助!

elb*_*rez 5

我认为这是因为您没有定义“grep-find-template”。这当然是(已调试)命令在我的版本上产生错误的原因。查看该变量的帮助。

干杯。

附:这是交互调用与否的区别..

"find . <X> -type f <F> -print0 | \"xargs\" -0 -e grep <C> -nH -e <R>"
Run Code Online (Sandbox Code Playgroud)

.. 以交互方式调用时由“grep-calc-defaults”设置

pps。我认为你只需要小心你的电话。如果未找到匹配项,您将收到“Grep 异常退出,代码为 123”错误。

mkdir -p ~/a/b
cp ~/.bash* ~/a/b
emacs -q

C-x b <RET> *scratch*
(grep-compute-defaults)
(rgrep "^.*\\?\=.*$" "*bash*" "~/a")
Run Code Online (Sandbox Code Playgroud)

..很多比赛!