unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Andrii Kolomoiets <andreyk.mad@gmail.com>
To: 38156@debbugs.gnu.org
Subject: bug#38156: 27.0.50; [PATCH] VC: ability to skip update buffers prompt
Date: Sat, 9 Nov 2019 22:29:28 +0200	[thread overview]
Message-ID: <E2036F8D-A903-409F-BD69-498B42BDA506@gmail.com> (raw)

[-- Attachment #1: Type: text/plain, Size: 191 bytes --]

Hi,

The `update' argument of `vc-retrieve-tag' is ignored by git, hg and svn
vc backends so the answer for "Update any affected buffers?" prompt
doesn't matter.  This prompt can be omitted.

[-- Attachment #2: 0001-VC-ability-to-skip-update-buffers-prompt.patch --]
[-- Type: application/octet-stream, Size: 4889 bytes --]

From 21d63d3a4c8e3348f590f4189da36798bc6e1bfd Mon Sep 17 00:00:00 2001
From: Andrii Kolomoiets <andreyk.mad@gmail.com>
Date: Sat, 9 Nov 2019 22:23:13 +0200
Subject: [PATCH] VC: ability to skip update buffers prompt

The `update' argument of `vc-retrieve-tag' is ignored by git, hg and svn vc
backends so the answer for "Update any affected buffers?" prompt doesn't
matter.  This prompt can be omitted.

* lisp/vc/vc.el (vc-default-update-on-retrieve-tag): New function.
(vc-retrieve-tag): Call `update-on-retrieve-tag' backend function to determine
if prompt for update buffers is needed; Include tag name into the "Retrieving
tag" message.
* lisp/vc/vc-git.el (vc-git-update-on-retrieve-tag):
* lisp/vc/vc-hg.el (vc-hg-update-on-retrieve-tag):
* lisp/vc/vc-svn.el (vc-svn-udate-on-retrieve-tag): New functions.  Buffers
update prompt on `vc-retrieve-tag' is omitted.

diff --git a/lisp/vc/vc-git.el b/lisp/vc/vc-git.el
index 3960f725cf..587a37455e 100644
--- a/lisp/vc/vc-git.el
+++ b/lisp/vc/vc-git.el
@@ -47,6 +47,7 @@
 ;; FUNCTION NAME                                   STATUS
 ;; BACKEND PROPERTIES
 ;; * revision-granularity                          OK
+;; - update-on-retrieve-tag                        OK
 ;; STATE-QUERYING FUNCTIONS
 ;; * registered (file)                             OK
 ;; * state (file)                                  OK
@@ -218,6 +219,7 @@ vc-git-history
 
 (defun vc-git-revision-granularity () 'repository)
 (defun vc-git-checkout-model (_files) 'implicit)
+(defun vc-git-update-on-retrieve-tag () nil)
 
 ;;; STATE-QUERYING FUNCTIONS
 
diff --git a/lisp/vc/vc-hg.el b/lisp/vc/vc-hg.el
index cc737b30b1..16e5dd6db0 100644
--- a/lisp/vc/vc-hg.el
+++ b/lisp/vc/vc-hg.el
@@ -40,6 +40,7 @@
 ;; FUNCTION NAME                               STATUS
 ;; BACKEND PROPERTIES
 ;; * revision-granularity                      OK
+;; - update-on-retrieve-tag                    OK
 ;; STATE-QUERYING FUNCTIONS
 ;; * registered (file)                         OK
 ;; * state (file)                              OK
@@ -194,6 +195,7 @@ vc-hg-history
 
 (defun vc-hg-revision-granularity () 'repository)
 (defun vc-hg-checkout-model (_files) 'implicit)
+(defun vc-hg-update-on-retrieve-tag () nil)
 
 ;;; State querying functions
 
diff --git a/lisp/vc/vc-svn.el b/lisp/vc/vc-svn.el
index 942dbd5fa5..ed34b357f9 100644
--- a/lisp/vc/vc-svn.el
+++ b/lisp/vc/vc-svn.el
@@ -127,6 +127,7 @@ vc-svn-admin-directory
 
 (defun vc-svn-revision-granularity () 'repository)
 (defun vc-svn-checkout-model (_files) 'implicit)
+(defun vc-svn-update-on-retrieve-tag () nil)
 
 ;;;
 ;;; State-querying functions
diff --git a/lisp/vc/vc.el b/lisp/vc/vc.el
index 20056dec7f..401b39145c 100644
--- a/lisp/vc/vc.el
+++ b/lisp/vc/vc.el
@@ -110,6 +110,12 @@
 ;;   that return 'file have per-file revision numbering; backends
 ;;   that return 'repository have per-repository revision numbering,
 ;;   so a revision level implicitly identifies a changeset
+;;
+;; - update-on-retrieve-tag
+;;
+;;   Takes no arguments.  Backends that return non-nil can update
+;;   buffers on `vc-retrieve-tag' based on user input.  In this case
+;;   user will be prompted to update buffers on `vc-retrieve-tag'.
 
 ;; STATE-QUERYING FUNCTIONS
 ;;
@@ -2302,14 +2308,15 @@ vc-retrieve-tag
       (vc-read-revision "Tag name to retrieve (default latest revisions): "
                         (list dir)
                         (vc-responsible-backend dir)))))
-  (let ((update (yes-or-no-p "Update any affected buffers? "))
-	(msg (if (or (not name) (string= name ""))
-		 (format "Updating %s... " (abbreviate-file-name dir))
-	       (format "Retrieving tag into %s... "
-		       (abbreviate-file-name dir)))))
+  (let* ((backend (vc-responsible-backend dir))
+         (update (when (vc-call-backend backend 'update-on-retrieve-tag)
+                   (yes-or-no-p "Update any affected buffers? ")))
+	 (msg (if (or (not name) (string= name ""))
+		  (format "Updating %s... " (abbreviate-file-name dir))
+	        (format "Retrieving tag %s into %s... "
+		        name (abbreviate-file-name dir)))))
     (message "%s" msg)
-    (vc-call-backend (vc-responsible-backend dir)
-		     'retrieve-tag dir name update)
+    (vc-call-backend backend 'retrieve-tag dir name update)
     (vc-resynch-buffer dir t t t)
     (run-hooks 'vc-retrieve-tag-hook)
     (message "%s" (concat msg "done"))))
@@ -3025,6 +3032,10 @@ vc-default-receive-file
   "Let BACKEND receive FILE from another version control system."
   (vc-call-backend backend 'register (list file) rev ""))
 
+(defun vc-default-update-on-retrieve-tag ()
+  "Prompt for update buffers on `vc-retrieve-tag'."
+  t)
+
 (defun vc-default-retrieve-tag (backend dir name update)
   (if (string= name "")
       (progn
-- 
2.15.1


             reply	other threads:[~2019-11-09 20:29 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-09 20:29 Andrii Kolomoiets [this message]
2019-11-14  5:55 ` bug#38156: 27.0.50; [PATCH] VC: ability to skip update buffers prompt Lars Ingebrigtsen
2019-11-14  7:13   ` Andrii Kolomoiets
2019-11-14  7:18     ` Lars Ingebrigtsen
2019-11-14  9:54   ` Andrii Kolomoiets
2019-11-16  7:13     ` Lars Ingebrigtsen

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

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=E2036F8D-A903-409F-BD69-498B42BDA506@gmail.com \
    --to=andreyk.mad@gmail.com \
    --cc=38156@debbugs.gnu.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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

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 read-only IMAP folder(s) and NNTP newsgroup(s).