X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=setup%2Fmagit.el;h=db2f66e90b52729a9f2507dd384e273e97c6cb54;hb=a377b8462f3a4476de74877ffdfb08103e24bb4d;hp=de8011db3f759849517bf4244d6030a4cc65a6c6;hpb=3d083fc4afbb0cca3dfac5b491589eefefd4022b;p=emacs-init.git diff --git a/setup/magit.el b/setup/magit.el index de8011d..db2f66e 100644 --- a/setup/magit.el +++ b/setup/magit.el @@ -120,16 +120,31 @@ (grep (format "git ls-files -z | xargs -r0 grep -nwHF %s | cat -" symbol))))) (global-set-key "\C-cGF" 'git-files-find-symbol) + (defun dired-git-files () (interactive) - (let ((default-directory (magit-get-top-dir default-directory)) + (let ((default-directory (magit-get-top-dir default-directory))\ (ls-lisp-use-insert-directory-program t) files) - (setq files (shell-command-to-string "git ls-files")) - (dired (cons default-directory (split-string files "\n"))))) + (setq files (delete-if '(lambda (file) (string= file "")) + (split-string (shell-command-to-string "git ls-files") "\n"))) + (dired (cons default-directory files)))) (global-set-key "\C-cGD" 'dired-git-files) +(defun dired-grep-git-files (regexp &optional words-only) + (interactive "sRegexp: \nP") + (let ((default-directory (magit-get-top-dir default-directory)) + (cmd (format "git ls-files -z | xargs -r0 grep -l -E%s -- %s | cat -" + (if words-only " -w" "") (shell-quote-argument regexp)))) + (if (not default-directory) + (error "not in Git repository")) + (setq files (delete-if '(lambda (file) (string= file "")) + (split-string (shell-command-to-string cmd) "\n"))) + (dired (cons default-directory files)))) + +(global-set-key "\C-cGH" 'dired-grep-git-files) + (defun magit-svn-fetch () (interactive) (magit-run-git-async "svn" "fetch"))