目的是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
那里有点笨拙,可以做得更好。