Emacs rgrep定制

时间:2010-01-03 05:53:15

标签: emacs elisp

我在〜/ .emacs中有以下自定义函数:

(defun xi-rgrep (term)
  (grep-compute-defaults)
    (interactive "sSearch Term: ")
    (rgrep term "*.[ch]*" "../"))

这个函数只运行rgrep用于我感兴趣的文件/目录中输入的术语。但是,我想匹配原始rgrep功能,将默认搜索词作为该点的单词(我认为这是术语?)。我该如何实现这一目标?我尝试了几件事,包括运行(grep-read-regexp),但还没有成功。

2 个答案:

答案 0 :(得分:5)

您可以使用'thingatpt包,如下所示:

(require 'thingatpt)
(defun xi-rgrep (term)
   (interactive (list (completing-read "Search Term: " nil nil nil (thing-at-point 'word))))
  (grep-compute-defaults)
  (rgrep term "*.[ch]*" "../"))

答案 1 :(得分:2)

这是另一种不需要'thingatpt包并使用(grep-read-regexp)的方法:

(defun xi-rgrep ()
  (interactive)
  (grep-compute-defaults)
  (rgrep (grep-read-regexp) "*.[ch]*" "../"))

我更喜欢这个,因为'thingatpt需要设置边界,如果你想用符号来表示字符,例如下划线,这通常是变量的情况。