add magit-diff-master-mergebase command
[emacs-init.git] / setup / magit.el
index 8a3d27b..a886155 100644 (file)
 
 (defun git-files-find-class-decl (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 -nwHF %s | grep -Ew '(class|struct)' | cat -"
+      (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)
   (interactive "P")
   (quit-window kill-buffer))
 
+(defun magit-diff-master-mergebase (&optional args files)
+  (interactive (magit-diff-arguments))
+  (magit-diff-working-tree
+   (magit-git-string "merge-base" "master" "HEAD") args files))
+
+(magit-define-popup-action 'magit-diff-popup
+  ?m "Diff merge-base master" 'magit-diff-master-mergebase)
+
 ; ignore whitespace
 ; (setq magit-diff-options '("-w"))