From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Dan Nicolaescu Newsgroups: gmane.emacs.bugs Subject: bug#2991: 23.2: remove vc-backend calls from vc-stay-local-p Date: Mon, 13 Apr 2009 18:57:58 -0700 (PDT) Message-ID: <200904140157.n3E1vwLO007494@godzilla.ics.uci.edu> Reply-To: Dan Nicolaescu , 2991@emacsbugs.donarmstrong.com NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Trace: ger.gmane.org 1239675922 29445 80.91.229.12 (14 Apr 2009 02:25:22 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 14 Apr 2009 02:25:22 +0000 (UTC) To: bug-gnu-emacs Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Apr 14 04:26:41 2009 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1LtYMB-0003cn-DE for geb-bug-gnu-emacs@m.gmane.org; Tue, 14 Apr 2009 04:26:40 +0200 Original-Received: from localhost ([127.0.0.1]:46651 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LtYKm-0000h4-Mv for geb-bug-gnu-emacs@m.gmane.org; Mon, 13 Apr 2009 22:25:12 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LtYJe-0008KQ-B4 for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 22:24:02 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LtYJX-0008CD-J3 for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 22:24:00 -0400 Original-Received: from [199.232.76.173] (port=56546 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LtYJW-0008B6-DV for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 22:23:54 -0400 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:37981) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LtYJV-0002Xf-Ml for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 22:23:54 -0400 Original-Received: from rzlab.ucr.edu (rzlab.ucr.edu [127.0.0.1]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n3E2Nofk008916; Mon, 13 Apr 2009 19:23:51 -0700 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.13.8/8.13.8/Submit) id n3E256xe004172; Mon, 13 Apr 2009 19:05:06 -0700 X-Loop: owner@emacsbugs.donarmstrong.com Resent-From: Dan Nicolaescu Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs Resent-Date: Tue, 14 Apr 2009 02:05:06 +0000 Resent-Message-ID: Resent-Sender: owner@emacsbugs.donarmstrong.com X-Emacs-PR-Message: report 2991 X-Emacs-PR-Package: emacs X-Emacs-PR-Keywords: Original-Received: via spool by submit@emacsbugs.donarmstrong.com id=B.12396743981907 (code B ref -1); Tue, 14 Apr 2009 02:05:06 +0000 Original-Received: (at submit) by emacsbugs.donarmstrong.com; 14 Apr 2009 01:59:58 +0000 X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. Original-Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n3E1xoKC001890 for ; Mon, 13 Apr 2009 18:59:51 -0700 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LtXwE-0000pX-5L for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 21:59:50 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LtXw9-0000pC-Hs for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 21:59:49 -0400 Original-Received: from [199.232.76.173] (port=40681 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LtXw9-0000p9-Bt for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 21:59:45 -0400 Original-Received: from barrelv2.ics.uci.edu ([128.195.1.114]:40688) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA1:24) (Exim 4.60) (envelope-from ) id 1LtXw8-0000Cf-Nz for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 21:59:45 -0400 Original-Received: from godzilla.ics.uci.edu (godzilla.ics.uci.edu [128.195.10.101]) by barrelv2.ics.uci.edu (8.13.8+Sun/8.13.8) with ESMTP id n3E1vwjZ006533 for ; Mon, 13 Apr 2009 18:57:58 -0700 (PDT) Original-Received: (from dann@localhost) by godzilla.ics.uci.edu (8.13.8+Sun/8.13.6/Submit) id n3E1vwLO007494; Mon, 13 Apr 2009 18:57:58 -0700 (PDT) Original-Lines: 169 X-ICS-MailScanner-Information: Please contact the ISP for more information X-ICS-MailScanner-ID: n3E1vwjZ006533 X-ICS-MailScanner: Found to be clean X-ICS-MailScanner-SpamCheck: not spam, SpamAssassin (score=-0.263, required 5, autolearn=disabled, ALL_TRUSTED -1.44, FM_MULTI_ODD2 1.10, TW_SV 0.08) X-ICS-MailScanner-From: dann@godzilla.ics.uci.edu X-detected-operating-system: by monty-python.gnu.org: Solaris 10 (beta) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) Resent-Date: Mon, 13 Apr 2009 22:24:00 -0400 X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:27149 Archived-At: We need to eliminate these redundant calls, the backend can be passed down. Archive the patch here until it can be applied. Index: vc-cvs.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/vc-cvs.el,v retrieving revision 1.163 diff -u -3 -p -r1.163 vc-cvs.el --- vc-cvs.el 5 Jan 2009 03:19:51 -0000 1.163 +++ vc-cvs.el 13 Apr 2009 16:43:24 -0000 @@ -216,7 +216,7 @@ See also variable `vc-cvs-sticky-date-fo (defun vc-cvs-state (file) "CVS-specific version of `vc-state'." - (if (vc-stay-local-p file) + (if (vc-stay-local-p file 'CVS) (let ((state (vc-file-getprop file 'vc-state))) ;; If we should stay local, use the heuristic but only if ;; we don't have a more precise state already available. @@ -496,7 +496,7 @@ Will fail unless you have administrative ;; It's just the catenation of the individual logs. (vc-cvs-command buffer - (if (vc-stay-local-p files) 'async 0) + (if (vc-stay-local-p files 'CVS) 'async 0) files "log")) (defun vc-cvs-comment-history (file) @@ -506,7 +506,7 @@ Will fail unless you have administrative (defun vc-cvs-diff (files &optional oldvers newvers buffer) "Get a difference report using CVS between two revisions of FILE." (let* ((async (and (not vc-disable-async-diff) - (vc-stay-local-p files))) + (vc-stay-local-p files 'CVS))) (invoke-cvs-diff-list nil) status) ;; Look through the file list and see if any files have backups @@ -559,7 +559,7 @@ Will fail unless you have administrative "Execute \"cvs annotate\" on FILE, inserting the contents in BUFFER. Optional arg REVISION is a revision to annotate from." (vc-cvs-command buffer - (if (vc-stay-local-p file) + (if (vc-stay-local-p file 'CVS) 'async 0) file "annotate" (if revision (concat "-r" revision))) @@ -681,8 +681,9 @@ If UPDATE is non-nil, then update (resyn ;;; Miscellaneous ;;; -(defalias 'vc-cvs-make-version-backups-p 'vc-stay-local-p - "Return non-nil if version backups should be made for FILE.") +(defun vc-cvs-make-version-backups-p (file) + "Return non-nil if version backups should be made for FILE." + (vc-stay-local-p file 'CVS)) (defun vc-cvs-check-headers () "Check if the current file has any headers in it." @@ -706,7 +707,8 @@ and that it passes `vc-cvs-global-switch (append vc-cvs-global-switches flags)))) -(defalias 'vc-cvs-stay-local-p 'vc-stay-local-p) ;Back-compatibility. +(defun vc-cvs-stay-local-p (file) + (vc-stay-local-p file 'CVS)) (defun vc-cvs-repository-hostname (dirname) "Hostname of the CVS server associated to workarea DIRNAME." @@ -965,7 +967,7 @@ state." (defun vc-cvs-dir-status (dir update-function) "Create a list of conses (file . state) for DIR." ;; FIXME check all files in DIR instead? - (let ((local (vc-stay-local-p dir))) + (let ((local (vc-stay-local-p dir 'CVS))) (if (and local (not (eq local 'only-file))) (vc-cvs-dir-status-heuristic dir update-function) (vc-cvs-command (current-buffer) 'async dir "-f" "status") Index: vc-hooks.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/vc-hooks.el,v retrieving revision 1.277 diff -u -3 -p -r1.277 vc-hooks.el --- vc-hooks.el 1 Apr 2009 15:42:12 -0000 1.277 +++ vc-hooks.el 13 Apr 2009 16:43:24 -0000 @@ -168,15 +168,15 @@ by these regular expressions." :version "23.1" :group 'vc) -(defun vc-stay-local-p (file) +(defun vc-stay-local-p (file &optional backend) "Return non-nil if VC should stay local when handling FILE. This uses the `repository-hostname' backend operation. If FILE is a list of files, return non-nil if any of them individually should stay local." (if (listp file) - (delq nil (mapcar 'vc-stay-local-p file)) - (let* ((backend (vc-backend file)) - (sym (vc-make-backend-sym backend 'stay-local)) + (delq nil (mapcar (lambda (arg) (vc-stay-local-p arg backend)) file)) + (setq backend (or backend (vc-backend file))) + (let* ((sym (vc-make-backend-sym backend 'stay-local)) (stay-local (if (boundp sym) (symbol-value sym) vc-stay-local))) (if (symbolp stay-local) stay-local (let ((dirname (if (file-directory-p file) Index: vc-svn.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/vc-svn.el,v retrieving revision 1.112 diff -u -3 -p -r1.112 vc-svn.el --- vc-svn.el 10 Feb 2009 05:59:14 -0000 1.112 +++ vc-svn.el 13 Apr 2009 16:43:25 -0000 @@ -142,7 +142,7 @@ want to force an empty list of arguments (defun vc-svn-state (file &optional localp) "SVN-specific version of `vc-state'." - (setq localp (or localp (vc-stay-local-p file))) + (setq localp (or localp (vc-stay-local-p file 'SVN))) (with-temp-buffer (cd (file-name-directory file)) (vc-svn-command t 0 file "status" (if localp "-v" "-u")) @@ -176,7 +176,7 @@ want to force an empty list of arguments ;; FIXME are there other possible combinations? (cond ((eq state 'edited) (setq state 'needs-merge)) ((not state) (setq state 'needs-update)))) - (when state + (when (and state (not (string= "." filename))) (setq result (cons (list filename state) result))))) (funcall callback result))) @@ -189,7 +189,7 @@ RESULT is a list of conses (FILE . STATE ;; calling synchronously (vc-svn-registered DIR) => calling svn status -v DIR ;; which is VERY SLOW for big trees and it makes emacs ;; completely unresponsive during that time. - (let* ((local (and nil (vc-stay-local-p dir))) + (let* ((local (and nil (vc-stay-local-p dir 'SVN))) (remote (or t (not local) (eq local 'only-file)))) (vc-svn-command (current-buffer) 'async nil "status" (if remote "-u")) @@ -470,7 +470,7 @@ or svn+ssh://." (vc-svn-command buffer 'async - ;; (if (and (= (length files) 1) (vc-stay-local-p file)) 'async 0) + ;; (if (and (= (length files) 1) (vc-stay-local-p file 'SVN)) 'async 0) (list file) "log" ;; By default Subversion only shows the log up to the @@ -502,7 +502,7 @@ or svn+ssh://." (list "--diff-cmd=diff" "-x" (mapconcat 'identity (vc-switches nil 'diff) " ")))) (async (and (not vc-disable-async-diff) - (vc-stay-local-p files) + (vc-stay-local-p files 'SVN) (or oldvers newvers)))) ; Svn diffs those locally. (apply 'vc-svn-command buffer (if async 'async 0) @@ -543,8 +543,9 @@ NAME is assumed to be a URL." ;;; ;; Subversion makes backups for us, so don't bother. -;; (defalias 'vc-svn-make-version-backups-p 'vc-stay-local-p -;; "Return non-nil if version backups should be made for FILE.") +;; (defun vc-svn-make-version-backups-p (file) +;; "Return non-nil if version backups should be made for FILE." +;; (vc-stay-local-p file 'SVN)) (defun vc-svn-check-headers () "Check if the current file has any headers in it."