X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=setup%2Fmagit.el;h=de8011db3f759849517bf4244d6030a4cc65a6c6;hb=9a4a775a68095b49cb14e785a0ccfc6b24849109;hp=506fe7b68f20a01f4febf9c784379db611ae2928;hpb=18f23521dd83f1c70245d66aa1e6eb48c90c1291;p=emacs-init.git diff --git a/setup/magit.el b/setup/magit.el index 506fe7b..de8011d 100644 --- a/setup/magit.el +++ b/setup/magit.el @@ -68,16 +68,28 @@ (global-set-key "\C-cGS" 'magit-status) +(defun my-shell-command-to-string (cmd) + (shell-command cmd " *my-shell-command-to-string*") + (save-current-buffer + (set-buffer " *my-shell-command-to-string*") + (prog1 + (buffer-string) + (kill-buffer " *my-shell-command-to-string*")))) + +(defun git-repo-files () + (let ((default-directory (magit-get-top-dir default-directory))) + (split-string (my-shell-command-to-string "git ls-files") "\n"))) + (defun find-file-in-git-repo () (interactive) - (let* ((repo (magit-get-top-dir default-directory)) - (files (shell-command-to-string (format "cd %s && git ls-files" repo)))) + (let ((repo (magit-get-top-dir default-directory)) + (files (git-repo-files))) (find-file (concat repo (ido-completing-read "Find file in git repo: " (remove-if (lambda (x) (string= "" x)) - (split-string files "\n"))))))) + files)))))) (defun grep-in-git-repo (regexp &optional words-only) (interactive "sGrep files in Git repo regexp: \nP") @@ -108,12 +120,13 @@ (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)) - (ls-lisp-use-insert-directory-program t)) - (dired (cons default-directory (split-string (shell-command-to-string "git ls-files") "\n"))))) + (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"))))) (global-set-key "\C-cGD" 'dired-git-files)