意图是使用git grep
作为M-x grep
命令,并利用所有与其相关的缓冲区优势。期望功能如下:
- 它将读取点处的单词/内容作为默认值(已完成,有点)
- 如果设置了区域,则它将读取当前区域作为默认参数。
以下是我目前的代码:
(defun bw-read-string-at-point ()
(interactive)
(let ((word (word-at-point)))
(set-text-properties 0 (length word) nil word)
word))
(defun bw-git-grep (search-str)
"Uses `git-grep` to find `search-str`"
(interactive
(list
(read-string (format "Search for (%s): " (bw-read-string-at-point)))))
(let ((search-str (if (= (length search-str) 0)
(bw-read-string-at-point) search-str)))
(grep (concat "git --no-pager grep -i -I -nH --no-color --extended-regexp " search-str))))
我觉得这里的interactive
有些笨拙,可以改进得更好。
grep-tag-default
是从哪里来的?我在 Emacs 24.2 中找不到它。编辑:实际上没关系,我找到了。由于某种原因,C-h f
找不到它。 - Brad Wright(require 'grep)
来确保grep-tag-default
被定义。 - Stefan