X-Git-Url: http://g0dil.de/git?a=blobdiff_plain;f=setup%2Fmagit.el;h=8ae6b76d99ec8db12d79c6006d852b7f7016ef2f;hb=a95258bb6a7a2da895b116a83b3fac7bd33b1306;hp=62846ee5e8ae4d4ef6986e88e47163b7d42aa01f;hpb=a8b98925dbb2002173ea88faf2d712909eba82bb;p=emacs-init.git diff --git a/setup/magit.el b/setup/magit.el index 62846ee..8ae6b76 100644 --- a/setup/magit.el +++ b/setup/magit.el @@ -170,5 +170,41 @@ (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) + +(magit-define-popup-switch 'magit-log-popup + ?f "first parent" "--first-parent") + +(require 'ffap) + +(defun g0dil-magit-old-version-jump-to-current () + (interactive) + (let ((current-file (ffap-file-exists-string + (file-name-nondirectory + (replace-regexp-in-string "\\.~.*$" "" (buffer-name)))))) + (if current-file + (g0dil-goto-equivalent-position current-file) + (error "current version of file not found")))) + +(define-key magit-blob-mode-map "c" 'g0dil-magit-old-version-jump-to-current) + +(defun g0dil-magit-diff-jump-to-current () + (interactive) + (let ((section-file-name (loop for ident in (magit-section-ident (magit-current-section)) + if (and (consp ident) (eq (car ident) 'file)) + return (cdr ident) + finally return nil))) + (if (ffap-file-exists-string section-file-name) + (g0dil-goto-equivalent-position section-file-name) + (error "current version of file not found")))) + +(define-key magit-revision-mode-map (kbd "C-c RET") 'g0dil-magit-diff-jump-to-current) + ; ignore whitespace ; (setq magit-diff-options '("-w"))