Use prefix (C-u) to diff all marked files. Signed-off-by: David Kågedal <davidk@xxxxxxxxxxxxxx> --- contrib/emacs/git.el | 62 +++++++++++++++++++++++++++++--------------------- 1 files changed, 36 insertions(+), 26 deletions(-) Here is an updated patch that udpate the stage diff commands as well. It doesn't touch git-diff-file-merge-head since that already uses prefix arguments. Don't know if there is a solution to that. diff --git a/contrib/emacs/git.el b/contrib/emacs/git.el index c1cf1cb..de9d0f4 100644 --- a/contrib/emacs/git.el +++ b/contrib/emacs/git.el @@ -771,6 +771,11 @@ Return the list of files that haven't been handled." (setq file (pop files)) (setq node (ewoc-next status node)))))))) +(defun git-current-file () + "Return the file at point." + (unless git-status (error "Not in git-status buffer.")) + (ewoc-data (ewoc-locate git-status))) + (defun git-marked-files () "Return a list of all marked files, or if none a list containing just the file at cursor position." (unless git-status (error "Not in git-status buffer.")) @@ -1137,10 +1142,11 @@ Return the list of files that haven't been handled." (when (eq (window-buffer) (current-buffer)) (shrink-window-if-larger-than-buffer))) -(defun git-diff-file () - "Diff the marked file(s) against HEAD." - (interactive) - (let ((files (git-marked-files))) +(defun git-diff-file (arg) + "Diff the current file against HEAD. +With a prefix arg, diff the marked files instead." + (interactive "P") + (let ((files (if arg (git-marked-files) (list (git-current-file))))) (git-setup-diff-buffer (apply #'git-run-command-buffer "*git-diff*" "diff-index" "-p" "-M" "HEAD" "--" (git-get-filenames files))))) @@ -1154,31 +1160,35 @@ Return the list of files that haven't been handled." (apply #'git-run-command-buffer "*git-diff*" "diff-index" "-p" "-M" (or (nth (1- arg) merge-heads) "HEAD") "--" (git-get-filenames files))))) -(defun git-diff-unmerged-file (stage) - "Diff the marked unmerged file(s) against the specified stage." - (let ((files (git-marked-files))) +(defun git-diff-unmerged-file (stage arg) + "Diff the files against the specified stage." + (let ((files (if arg (git-marked-files) (list (git-current-file))))) (git-setup-diff-buffer (apply #'git-run-command-buffer "*git-diff*" "diff-files" "-p" stage "--" (git-get-filenames files))))) -(defun git-diff-file-base () - "Diff the marked unmerged file(s) against the common base file." - (interactive) - (git-diff-unmerged-file "-1")) - -(defun git-diff-file-mine () - "Diff the marked unmerged file(s) against my pre-merge version." - (interactive) - (git-diff-unmerged-file "-2")) - -(defun git-diff-file-other () - "Diff the marked unmerged file(s) against the other's pre-merge version." - (interactive) - (git-diff-unmerged-file "-3")) - -(defun git-diff-file-combined () - "Do a combined diff of the marked unmerged file(s)." - (interactive) - (git-diff-unmerged-file "-c")) +(defun git-diff-file-base (arg) + "Diff the current file against the common base file. +With a prefix arg, diff the marked files instead." + (interactive "P") + (git-diff-unmerged-file "-1" arg)) + +(defun git-diff-file-mine (arg) + "Diff the current file against my pre-merge version. +With a prefix arg, diff the marked files instead." + (interactive "P") + (git-diff-unmerged-file "-2" arg)) + +(defun git-diff-file-other (arg) + "Diff the current file against the other's pre-merge version. +With a prefix arg, diff the marked files instead." + (interactive "P") + (git-diff-unmerged-file "-3" arg)) + +(defun git-diff-file-combined (arg) + "Do a combined diff of the marked unmerged file(s). +With a prefix arg, diff the marked files instead." + (interactive "P") + (git-diff-unmerged-file "-c" arg)) (defun git-diff-file-idiff () "Perform an interactive diff on the current file." -- 1.6.0.rc2.7.gbf8a -- David Kågedal -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html