From: "David Kågedal" <davidk@lysator.liu.se>
To: Alexandre Julliard <julliard@winehq.org>,
Junio C Hamano <gitster@pobox.com>
Cc: Git Mailing List <git@vger.kernel.org>
Subject: [PATCH] git.el: Diff only file at point by default
Date: Wed, 27 Aug 2008 00:22:15 +0200 [thread overview]
Message-ID: <871w0bmn6w.fsf@lysator.liu.se> (raw)
In-Reply-To: <873aktnsbf.fsf@lysator.liu.se> ("David Kågedal"'s message of "Mon\, 25 Aug 2008 15\:21\:40 +0200")
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.
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
next prev parent reply other threads:[~2008-08-26 22:23 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 [this message]
2008-08-27 19:36 ` Junio C Hamano
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=871w0bmn6w.fsf@lysator.liu.se \
--to=davidk@lysator.liu.se \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).