2010-01-03 58 views
4

我在〜/的.emacs以下的自定义函数:的Emacs rgrep定制

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

此功能只是运行在文件输入的字词rgrep /目录我很感兴趣。然而,我想匹配原始的rgrep功能,使默认搜索词成为该词的词(我认为这是一个词?)。我如何实现这一目标?我已经尝试了几种方法,包括运行(grep-read-regexp),但没有成功。

回答

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]*" "../")) 
+0

这很好,谢谢。 – 2010-01-03 17:01:16

2

这里是另一种方式,它不需要在'thingatpt包和用途(grep的读取 - 正则表达式):

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

我喜欢如果你想使用符号(例如下划线)来表示这些变量,那么这个'thingatpt需要设置边界。