その意図は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
そこのビットはかなり不器用で、もっと良くすることができると思います。