All of lore.kernel.org
 help / color / mirror / Atom feed
From: Junio C Hamano <gitster@pobox.com>
To: "David Kågedal" <davidk@lysator.liu.se>
Cc: Alexandre Julliard <julliard@winehq.org>,
	Git Mailing List <git@vger.kernel.org>
Subject: Re: [PATCH] git.el: Diff only file at point by default
Date: Wed, 27 Aug 2008 12:36:50 -0700	[thread overview]
Message-ID: <7v63pmp7vx.fsf@gitster.siamese.dyndns.org> (raw)
In-Reply-To: <871w0bmn6w.fsf@lysator.liu.se> (David Kågedal's message of "Wed, 27 Aug 2008 00:22:15 +0200")

David Kågedal <davidk@lysator.liu.se> writes:

> Use prefix (C-u) to diff all marked files.
>
> Signed-off-by: David Kågedal <davidk@lysator.liu.se>
> ---
>  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

  reply	other threads:[~2008-08-27 19:38 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-08-22  7:58 [PATCH] git.el: Diff only file at point by default David Kågedal
2008-08-24  1:02 ` Junio C Hamano
2008-08-25  9:30   ` Alexandre Julliard
2008-08-25 13:21     ` David Kågedal
2008-08-26 22:22       ` David Kågedal
2008-08-27 19:36         ` Junio C Hamano [this message]
2008-08-30 18:29         ` Alexandre Julliard

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=7v63pmp7vx.fsf@gitster.siamese.dyndns.org \
    --to=gitster@pobox.com \
    --cc=davidk@lysator.liu.se \
    --cc=git@vger.kernel.org \
    --cc=julliard@winehq.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.