David Kågedal <davidk@xxxxxxxxxxxxxx> writes: > 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. Yeah, me neither. But otherwise looks quite straightforward conversion to me. Alexandre? > 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