X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=setup%2Fmagit.el;h=62846ee5e8ae4d4ef6986e88e47163b7d42aa01f;hb=128ee7f22a27a875314fc50d7fcb503f7ba325d0;hp=de8011db3f759849517bf4244d6030a4cc65a6c6;hpb=9a4a775a68095b49cb14e785a0ccfc6b24849109;p=emacs-init.git diff --git a/setup/magit.el b/setup/magit.el index de8011d..62846ee 100644 --- a/setup/magit.el +++ b/setup/magit.el @@ -4,7 +4,7 @@ (or load-file-name (when (boundp 'bytecomp-filename) bytecomp-filename) buffer-file-name)))) - "magit")) + "magit/lisp")) (add-to-list 'load-path (concat (file-name-directory (directory-file-name @@ -12,7 +12,7 @@ (or load-file-name (when (boundp 'bytecomp-filename) bytecomp-filename) buffer-file-name)))) - "git-modes")) + "with-editor")) (add-to-list 'load-path (concat (file-name-directory (directory-file-name @@ -36,6 +36,9 @@ (require 'magit) +(setq magit-refs-local-branch-format "%C %-48n %U%m\n") +(setq magit-refs-remote-branch-format "%C %-48n %m\n") + (when (eq system-type 'windows-nt) (require 'advice) @@ -77,12 +80,12 @@ (kill-buffer " *my-shell-command-to-string*")))) (defun git-repo-files () - (let ((default-directory (magit-get-top-dir default-directory))) + (let ((default-directory (magit-toplevel 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)) + (let ((repo (magit-toplevel default-directory)) (files (git-repo-files))) (find-file (concat repo @@ -93,10 +96,10 @@ (defun grep-in-git-repo (regexp &optional words-only) (interactive "sGrep files in Git repo regexp: \nP") - (let ((default-directory (magit-get-top-dir default-directory))) + (let ((default-directory (magit-toplevel default-directory))) (if (not default-directory) (error "not a Git directory")) - (grep (format "git ls-files -z | xargs -r0 grep -nH -E%s -- %s | cat -" + (grep (format "git ls-files -z | xargs -r0 grep -d skip -nH -E%s -- %s" (if words-only " -w" "") (shell-quote-argument regexp))))) (setenv "GIT_PAGER" "cat") @@ -105,7 +108,7 @@ (defun find-file-maybe-git (&optional nogit) (interactive "P") - (if (and (not nogit) (magit-get-top-dir default-directory)) + (if (and (not nogit) (magit-toplevel default-directory)) (call-interactively 'find-file-in-git-repo) (call-interactively 'ido-find-file))) @@ -114,22 +117,49 @@ (defun git-files-find-symbol (symbol) (interactive (list (read-string "Symbol: " (current-word)))) - (let ((dir (magit-get-top-dir default-directory))) + (let ((dir (magit-toplevel default-directory))) + (if (not dir) (error "No git repository")) + (let ((default-directory dir)) + (grep (format "git ls-files -z | xargs -r0 grep -d skip -nwHF %s" symbol))))) + +(defun git-files-find-class-decl (symbol) + (interactive (list (read-string "Symbol: " (current-word)))) + (let ((dir (magit-toplevel default-directory))) (if (not dir) (error "No git repository")) (let ((default-directory dir)) - (grep (format "git ls-files -z | xargs -r0 grep -nwHF %s | cat -" symbol))))) + (grep (format (concat "git ls-files -z" + " | xargs -r0 grep -d skip -nwHF %s" + " | grep -Ew '(class|struct|typedef|using)'" + " | grep -vEw 'friend'") + symbol))))) (global-set-key "\C-cGF" 'git-files-find-symbol) +(global-set-key "\C-cGC" 'git-files-find-class-decl) + (defun dired-git-files () (interactive) - (let ((default-directory (magit-get-top-dir default-directory)) + (let ((default-directory (magit-toplevel 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-toplevel default-directory)) + (cmd (format "git ls-files -z | xargs -r0 grep -d skip -l -E%s -- %s" + (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")) @@ -140,4 +170,5 @@ (interactive "P") (quit-window kill-buffer)) -(setq magit-diff-options '("-w")) +; ignore whitespace +; (setq magit-diff-options '("-w"))