【发布时间】:2011-08-10 16:35:54
【问题描述】:
我正在尝试从一个小型 Emacs Lisp 实用程序运行 rgrep 命令,但遇到了一个奇怪的错误。命令说明为:
rgrep 是一个交互式编译的 Lisp 函数。
(rgrep REGEXP &optional FILES DIR CONFIRM)
在以 DIR 为根的目录树中的 FILES 中递归 grep 查找 REGEXP。 搜索仅限于匹配 shell 模式 FILES 的文件名。 FILES 可以使用
grep-files-aliases', e.g. enteringch' 中定义的缩写,相当于`*.[ch]'。使用 C-u 前缀,可以编辑构造的 shell 命令行 在执行之前。带两个C-u前缀,直接编辑运行 `grep-find-command'。
在缓冲区中收集输出。虽然 find 异步运行,但您可以 在 grep 输出缓冲区中使用 C-x ` (M-x next-error) 或 RET 转到 grep 找到匹配的行。
此命令与 M-x lgrep 和 M-x 共享参数历史记录 grep 查找。
我试着跑:
(rgrep "something" "all" "~/projects/")
我得到了
*** Eval error *** Wrong type argument: stringp, nil
显然所有的参数都是字符串,所以我不明白这个 nil 是从哪里来的。
我在 Debian 测试上运行 Emacs 23.3。
提前感谢您的帮助!
【问题讨论】:
-
对我来说很好用。尝试在没有 .emacs (
emacs -q) 的情况下在 Emacs 中运行。此外,在运行它之前,添加(setq debug-on-error t)以获取回溯,这将提供更多信息。 -
您可能在运行该代码之前已经交互式地运行了 rgrep,并且您对 grep-find-template 的值不是 nil。
标签: emacs