2013-07-18 60 views
4

我想给一些选项来magit-grep的magit-grep,如何包含或排除文件扩展名?

与选项运行它foo结果

git --no-pager grep -n foo 

我想给选项,它

git --no-pager grep -n foo (options to include *.html and exclude *.py, etc) 

一点也没有不一定是magit-grep,emacs中最好的git grep解决方案是什么?


magit-grep的

(magit-define-command grep (&optional pattern) 
    (interactive) 
    (let ((pattern (or pattern 
        (read-string "git grep: " 
            (shell-quote-argument (grep-tag-default)))))) 
    (with-current-buffer (generate-new-buffer "*Magit Grep*") 
     (let ((default-directory (magit-get-top-dir))) 
     (insert magit-git-executable " " 
       (mapconcat 'identity magit-git-standard-options " ") 
       " grep -n " 
       (shell-quote-argument pattern) "\n\n") 
     (magit-git-insert (list "grep" "--line-number" pattern)) 
     (grep-mode) 
     (pop-to-buffer (current-buffer)))))) 
+0

I认为只是'git grep'表达式' - '* .html''应该这样做。也许你可以扩展这个函数来询问你是否有文件掩码,如果给出通用的参数。 – 2013-07-19 13:50:09

回答

2

一种可能性是OG git-grepgit-ls-files组合:

git grep ... `git ls-files | grep -- '\.html$'` 

但这只能如果git-ls-files输出不超过最大命令行系统上的大小(在现代系统上是几十万)。

4

我删除了magit-grep,因为它只是rgrep的严重瘫痪版本。 vc-git-grep实际上是一种改进,所以你应该使用它。 (现在magit-grep被定义为vc命令的别名,以避免打扰任何以前使用过magit变种的人。“通过查看其他地方已经存在并添加我们的代码来添加功能的经典案例”:-)

相关问题