aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/vc
diff options
context:
space:
mode:
authorXue Fuqiao2013-08-04 10:59:08 +0800
committerXue Fuqiao2013-08-04 10:59:08 +0800
commit99191b89ff64172740add88e67f163619a07830c (patch)
tree828d1ac7c917076703b9d4a3746ff7480bd97f0d /lisp/vc
parentab419665caa6e2ad7465cf59ef902cc4ad1d2117 (diff)
parent2ad0a067728ccc7f8b32b0c3db1677ca351943fe (diff)
downloademacs-99191b89ff64172740add88e67f163619a07830c.tar.gz
emacs-99191b89ff64172740add88e67f163619a07830c.zip
Merge from mainline.
Diffstat (limited to 'lisp/vc')
-rw-r--r--lisp/vc/log-view.el43
-rw-r--r--lisp/vc/vc-dir.el2
-rw-r--r--lisp/vc/vc-hooks.el4
3 files changed, 25 insertions, 24 deletions
diff --git a/lisp/vc/log-view.el b/lisp/vc/log-view.el
index de103c0cdb6..be985866532 100644
--- a/lisp/vc/log-view.el
+++ b/lisp/vc/log-view.el
@@ -562,19 +562,7 @@ file(s)."
562 (interactive 562 (interactive
563 (list (if (use-region-p) (region-beginning) (point)) 563 (list (if (use-region-p) (region-beginning) (point))
564 (if (use-region-p) (region-end) (point)))) 564 (if (use-region-p) (region-end) (point))))
565 (let ((fr (log-view-current-tag beg)) 565 (log-view-diff-common beg end))
566 (to (log-view-current-tag end)))
567 (when (string-equal fr to)
568 (save-excursion
569 (goto-char end)
570 (log-view-msg-next)
571 (setq to (log-view-current-tag))))
572 (vc-diff-internal
573 t (list log-view-vc-backend
574 (if log-view-per-file-logs
575 (list (log-view-current-file))
576 log-view-vc-fileset))
577 to fr)))
578 566
579(defun log-view-diff-changeset (beg end) 567(defun log-view-diff-changeset (beg end)
580 "Get the diff between two revisions. 568 "Get the diff between two revisions.
@@ -589,20 +577,29 @@ considered file(s)."
589 (interactive 577 (interactive
590 (list (if (use-region-p) (region-beginning) (point)) 578 (list (if (use-region-p) (region-beginning) (point))
591 (if (use-region-p) (region-end) (point)))) 579 (if (use-region-p) (region-end) (point))))
592 (when (eq (vc-call-backend log-view-vc-backend 'revision-granularity) 'file) 580 (log-view-diff-common beg end t))
581
582(defun log-view-diff-common (beg end &optional whole-changeset)
583 (when (and whole-changeset
584 (eq (vc-call-backend log-view-vc-backend 'revision-granularity)
585 'file))
593 (error "The %s backend does not support changeset diffs" log-view-vc-backend)) 586 (error "The %s backend does not support changeset diffs" log-view-vc-backend))
594 (let ((fr (log-view-current-tag beg)) 587 (let ((to (log-view-current-tag beg))
595 (to (log-view-current-tag end))) 588 (fr (log-view-current-tag end)))
596 (when (string-equal fr to) 589 (when (string-equal fr to)
597 ;; TO and FR are the same, look at the previous revision. 590 ;; TO and FR are the same, look at the previous revision.
598 (setq to (vc-call-backend log-view-vc-backend 'previous-revision nil fr))) 591 (setq fr (vc-call-backend log-view-vc-backend 'previous-revision nil fr)))
599 (vc-diff-internal 592 (vc-diff-internal
600 t 593 t (list log-view-vc-backend
601 ;; We want to see the diff for all the files in the changeset, so 594 ;; The value passed here should follow what
602 ;; pass NIL for the file list. The value passed here should 595 ;; `vc-deduce-fileset' returns. If we want to see the
603 ;; follow what `vc-deduce-fileset' returns. 596 ;; diff for all the files in the changeset, pass NIL for
604 (list log-view-vc-backend nil) 597 ;; the file list.
605 to fr))) 598 (unless whole-changeset
599 (if log-view-per-file-logs
600 (list (log-view-current-file))
601 log-view-vc-fileset)))
602 fr to)))
606 603
607(provide 'log-view) 604(provide 'log-view)
608 605
diff --git a/lisp/vc/vc-dir.el b/lisp/vc/vc-dir.el
index 441b3725968..5ddcfd57748 100644
--- a/lisp/vc/vc-dir.el
+++ b/lisp/vc/vc-dir.el
@@ -282,7 +282,7 @@ See `run-hooks'."
282 (define-key map "Q" 'vc-dir-query-replace-regexp) 282 (define-key map "Q" 'vc-dir-query-replace-regexp)
283 (define-key map (kbd "M-s a C-s") 'vc-dir-isearch) 283 (define-key map (kbd "M-s a C-s") 'vc-dir-isearch)
284 (define-key map (kbd "M-s a M-C-s") 'vc-dir-isearch-regexp) 284 (define-key map (kbd "M-s a M-C-s") 'vc-dir-isearch-regexp)
285 (define-key map "I" 'vc-dir-ignore) 285 (define-key map "G" 'vc-dir-ignore)
286 286
287 ;; Hook up the menu. 287 ;; Hook up the menu.
288 (define-key map [menu-bar vc-dir-mode] 288 (define-key map [menu-bar vc-dir-mode]
diff --git a/lisp/vc/vc-hooks.el b/lisp/vc/vc-hooks.el
index 284481ee524..ae9aa0118ae 100644
--- a/lisp/vc/vc-hooks.el
+++ b/lisp/vc/vc-hooks.el
@@ -918,6 +918,7 @@ current, and kill the buffer that visits the link."
918 (define-key map "c" 'vc-rollback) 918 (define-key map "c" 'vc-rollback)
919 (define-key map "d" 'vc-dir) 919 (define-key map "d" 'vc-dir)
920 (define-key map "g" 'vc-annotate) 920 (define-key map "g" 'vc-annotate)
921 (define-key map "G" 'vc-ignore)
921 (define-key map "h" 'vc-insert-headers) 922 (define-key map "h" 'vc-insert-headers)
922 (define-key map "i" 'vc-register) 923 (define-key map "i" 'vc-register)
923 (define-key map "l" 'vc-print-log) 924 (define-key map "l" 'vc-print-log)
@@ -1002,6 +1003,9 @@ current, and kill the buffer that visits the link."
1002 (bindings--define-key map [vc-register] 1003 (bindings--define-key map [vc-register]
1003 '(menu-item "Register" vc-register 1004 '(menu-item "Register" vc-register
1004 :help "Register file set into a version control system")) 1005 :help "Register file set into a version control system"))
1006 (bindings--define-key map [vc-ignore]
1007 '(menu-item "Ignore File..." vc-ignore
1008 :help "Ignore a file under current version control system"))
1005 (bindings--define-key map [vc-dir] 1009 (bindings--define-key map [vc-dir]
1006 '(menu-item "VC Dir" vc-dir 1010 '(menu-item "VC Dir" vc-dir
1007 :help "Show the VC status of files in a directory")) 1011 :help "Show the VC status of files in a directory"))