[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: VC top of the tree diff and log
From: |
Dan Nicolaescu |
Subject: |
Re: VC top of the tree diff and log |
Date: |
Wed, 22 Jul 2009 22:43:18 -0700 (PDT) |
Stefan Monnier <address@hidden> writes:
> > Key bindings:
> > for log we could have C-x v L (should be intuitive given that
> > vc-print-log uses C-x v l)
>
> It might be a good idea.
>
> > not sure what would be a good one for diff
>
> I don't understand: why not just use the capitalized = sign?
Sorry, I probably use one of those antique keyboards that don't have
such a sign...
See what I currently have. What do you think?
Index: vc-hooks.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc-hooks.el,v
retrieving revision 1.279
diff -u -3 -p -r1.279 vc-hooks.el
--- vc-hooks.el 26 Jun 2009 23:54:00 -0000 1.279
+++ vc-hooks.el 23 Jul 2009 05:33:31 -0000
@@ -934,6 +934,7 @@ current, and kill the buffer that visits
(define-key map "h" 'vc-insert-headers)
(define-key map "i" 'vc-register)
(define-key map "l" 'vc-print-log)
+ (define-key map "L" 'vc-print-root-log)
(define-key map "m" 'vc-merge)
(define-key map "r" 'vc-retrieve-tag)
(define-key map "s" 'vc-create-tag)
@@ -941,6 +942,7 @@ current, and kill the buffer that visits
(define-key map "v" 'vc-next-action)
(define-key map "+" 'vc-update)
(define-key map "=" 'vc-diff)
+ (define-key map "D" 'vc-root-diff)
(define-key map "~" 'vc-revision-other-window)
map))
(fset 'vc-prefix-map vc-prefix-map)
@@ -969,12 +971,18 @@ current, and kill the buffer that visits
(define-key map [vc-diff]
'(menu-item "Compare with Base Version" vc-diff
:help "Compare file set with the base version"))
+ (define-key map [vc-root-diff]
+ '(menu-item "Compare Tree with Base Version" vc-root-diff
+ :help "Compare current tree with the base version"))
(define-key map [vc-update-change-log]
'(menu-item "Update ChangeLog" vc-update-change-log
:help "Find change log file and add entries from recent
version control logs"))
(define-key map [vc-print-log]
'(menu-item "Show History" vc-print-log
:help "List the change log of the current file set in a
window"))
+ (define-key map [vc-print-root-log]
+ '(menu-item "Show Top of the Tree History " vc-print-root-log
+ :help "List the change log for the current tree in a window"))
(define-key map [separator2] '("----"))
(define-key map [vc-insert-header]
'(menu-item "Insert Header" vc-insert-headers
Index: vc.el
===================================================================
RCS file: /cvsroot/emacs/emacs/lisp/vc.el,v
retrieving revision 1.721
diff -u -3 -p -r1.721 vc.el
--- vc.el 23 Jul 2009 05:21:36 -0000 1.721
+++ vc.el 23 Jul 2009 05:33:32 -0000
@@ -465,6 +465,9 @@
;; `revert' operations itself, without calling the backend system. The
;; default implementation always returns nil.
;;
+;; - root (file)
+;; Return the root of the VC controlled hierarchy for file.
+;;
;; - repository-hostname (dirname)
;;
;; Return the hostname that the backend will have to contact
@@ -1592,6 +1595,33 @@ saving the buffer."
(vc-diff-internal t (vc-deduce-fileset) nil nil (interactive-p))))
;;;###autoload
+(defun vc-root-diff (historic &optional not-urgent)
+ "Display diffs between file revisions.
+Normally this compares the currently selected fileset with their
+working revisions. With a prefix argument HISTORIC, it reads two revision
+designators specifying which revisions to compare.
+
+The optional argument NOT-URGENT non-nil means it is ok to say no to
+saving the buffer."
+ (interactive (list current-prefix-arg t))
+ (if historic
+ ;; FIXME: this does not work right, `vc-version-diff' ends up
+ ;; calling `vc-deduce-fileset' to find the files to diff, and
+ ;; that's not what we want here, we want the diff for the VC root dir.
+ (call-interactively 'vc-version-diff)
+ (when buffer-file-name (vc-buffer-sync not-urgent))
+ (let ((backend
+ (cond ((derived-mode-p 'vc-dir-mode) vc-dir-backend)
+ (vc-mode (vc-backend buffer-file-name))))
+ rootdir working-revision)
+ (unless backend
+ (error "Buffer is not version controlled"))
+ (setq rootdir (vc-call-backend backend 'root default-directory))
+ (setq working-revision (vc-working-revision rootdir))
+ (vc-diff-internal
+ t (list backend (list rootdir) working-revision) nil nil
(interactive-p)))))
+
+;;;###autoload
(defun vc-revision-other-window (rev)
"Visit revision REV of the current file in another window.
If the current file is named `F', the revision is named `F.~REV~'.
@@ -1856,6 +1886,21 @@ If WORKING-REVISION is non-nil, leave th
(vc-print-log-internal backend files working-revision)))
;;;###autoload
+(defun vc-print-root-log ()
+ "List the change log of for the current VC controlled tree in a window."
+ (interactive)
+ (let ((backend
+ (cond ((derived-mode-p 'vc-dir-mode) vc-dir-backend)
+ (vc-mode (vc-backend buffer-file-name))))
+ rootdir working-revision)
+ (unless backend
+ (error "Buffer is not version controlled"))
+ (setq rootdir (vc-call-backend backend 'root default-directory))
+ (setq working-revision (vc-working-revision rootdir))
+ (vc-print-log-internal backend (list rootdir) working-revision)))
+
+
+;;;###autoload
(defun vc-revert ()
"Revert working copies of the selected fileset to their repository contents.
This asks for confirmation if the buffer contents are not identical
- Re: VC top of the tree diff and log, (continued)
- Re: VC top of the tree diff and log, Miles Bader, 2009/07/07
- Re: VC top of the tree diff and log, Dan Nicolaescu, 2009/07/08
- Re: VC top of the tree diff and log, Miles Bader, 2009/07/08
- Re: VC top of the tree diff and log, Dan Nicolaescu, 2009/07/08
- Re: VC top of the tree diff and log, Miles Bader, 2009/07/08
- C-x v l in a dired buffer [was: Re: VC top of the tree diff and log], Dan Nicolaescu, 2009/07/09
- Re: VC top of the tree diff and log, Dan Nicolaescu, 2009/07/09
- Re: VC top of the tree diff and log, Dan Nicolaescu, 2009/07/16
- Re: VC top of the tree diff and log, Juri Linkov, 2009/07/18
Re: VC top of the tree diff and log, Stefan Monnier, 2009/07/11
- Re: VC top of the tree diff and log,
Dan Nicolaescu <=