diff lisp/vc/vc.el @ 110748:2279efb0250e

Make 'g' (AKA revert-buffer) rerun the VC log, log-incoming and log-outgoing commands. * lisp/vc/vc.el (vc-log-internal-common): Add a new argument and use it to create a buffer local revert-buffer-function variable. (vc-print-log-internal, vc-log-incoming, vc-log-outgoing): Pass a revert-buffer-function lambda.
author Dan Nicolaescu <dann@ics.uci.edu>
date Sun, 03 Oct 2010 17:26:41 -0700
parents d90a3bc6b730
children 275f265c56c5
line wrap: on
line diff
--- a/lisp/vc/vc.el	Mon Oct 04 00:17:16 2010 +0000
+++ b/lisp/vc/vc.el	Sun Oct 03 17:26:41 2010 -0700
@@ -2027,8 +2027,10 @@
     (setq type (if vc-short-log 'short 'long))
     (lexical-let
 	((working-revision working-revision)
+	 (backend backend)
 	 (limit limit)
 	 (shortlog vc-short-log)
+	 (files files)
 	 (is-start-revision is-start-revision))
       (vc-log-internal-common
        backend buffer-name files type
@@ -2039,7 +2041,9 @@
 	 (vc-print-log-setup-buttons working-revision
 				     is-start-revision limit ret))
        (lambda (bk)
-	 (vc-call-backend bk 'show-log-entry working-revision))))))
+	 (vc-call-backend bk 'show-log-entry working-revision))
+       (lambda (ignore-auto noconfirm)
+	 (vc-print-log-internal backend files working-revision is-start-revision limit))))))
 
 (defvar vc-log-view-type nil
   "Set this to differentiate the different types of logs.")
@@ -2051,7 +2055,8 @@
 			       type
 			       backend-func
 			       setup-buttons-func
-			       goto-location-func)
+			       goto-location-func
+			       rev-buff-func)
   (let (retval)
     (with-current-buffer (get-buffer-create buffer-name)
       (set (make-local-variable 'vc-log-view-type) type))
@@ -2062,7 +2067,9 @@
       ;; to t, so let's keep doing it, just in case.
       (vc-call-backend backend 'log-view-mode)
       (set (make-local-variable 'log-view-vc-backend) backend)
-      (set (make-local-variable 'log-view-vc-fileset) files))
+      (set (make-local-variable 'log-view-vc-fileset) files)
+      (set (make-local-variable 'revert-buffer-function)
+	   rev-buff-func))
     (vc-exec-after
      `(let ((inhibit-read-only t))
 	(funcall ',setup-buttons-func ',backend ',files ',retval)
@@ -2080,7 +2087,14 @@
        (vc-call-backend bk type-arg buf remote-location)))
    (lambda (bk files-arg ret))
    (lambda (bk)
-     (goto-char (point-min)))))
+     (goto-char (point-min)))
+   (lexical-let
+    ((backend backend)
+     (remote-location remote-location)
+     (buffer-name buffer-name)
+     (type type))
+    (lambda (ignore-auto noconfirm)
+      (vc-incoming-outgoing-internal backend remote-location buffer-name type)))))
 
 ;;;###autoload
 (defun vc-print-log (&optional working-revision limit)
@@ -2140,8 +2154,11 @@
 
 ;;;###autoload
 (defun vc-log-incoming (&optional remote-location)
-  "Show a log of changes that will be received with a pull operation from REMOTE-LOCATION."
-  (interactive "sRemote location (empty for default): ")
+  "Show a log of changes that will be received with a pull operation from REMOTE-LOCATION.
+When called interactively with a prefix argument, prompt for REMOTE-LOCATION.."
+  (interactive
+   (when current-prefix-arg
+     (list (read-string "Remote location (empty for default): "))))
   (let ((backend (vc-deduce-backend))
 	rootdir working-revision)
     (unless backend
@@ -2150,8 +2167,11 @@
 
 ;;;###autoload
 (defun vc-log-outgoing (&optional remote-location)
-  "Show a log of changes that will be sent with a push operation to REMOTE-LOCATION."
-  (interactive "sRemote location (empty for default): ")
+  "Show a log of changes that will be sent with a push operation to REMOTE-LOCATION.
+When called interactively with a prefix argument, prompt for REMOTE-LOCATION."
+  (interactive
+   (when current-prefix-arg
+     (list (read-string "Remote location (empty for default): "))))
   (let ((backend (vc-deduce-backend))
 	rootdir working-revision)
     (unless backend