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#2652: 23.0.91; wacky behavior of "v" command in *vc-dir* buffer Date: Mon, 13 Apr 2009 10:02:35 -0700 (PDT) Message-ID: <200904131702.n3DH2Zsj025829@godzilla.ics.uci.edu> References: <87iqmemgyi.fsf@catnip.gol.com> <200903130038.n2D0cuTj018433@godzilla.ics.uci.edu> <200903130134.n2D1YCFF018782@godzilla.ics.uci.edu> <200903130727.n2D7RHBI020896@godzilla.ics.uci.edu> <200903131622.n2DGMAZG024224@godzilla.ics.uci.edu> <200903141603.n2EG327C002787@godzilla.ics.uci.edu> Reply-To: Dan Nicolaescu , 2652@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 1239643476 10577 80.91.229.12 (13 Apr 2009 17:24:36 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Mon, 13 Apr 2009 17:24:36 +0000 (UTC) Cc: 2652@emacsbugs.donarmstrong.com, Miles Bader To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Apr 13 19:25:54 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 1LtPuf-0002kP-VA for geb-bug-gnu-emacs@m.gmane.org; Mon, 13 Apr 2009 19:25:42 +0200 Original-Received: from localhost ([127.0.0.1]:38500 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LtPtH-0000UC-BR for geb-bug-gnu-emacs@m.gmane.org; Mon, 13 Apr 2009 13:24:15 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LtPt0-0000Nm-6h for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 13:23:58 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LtPsv-0000Lk-Ac for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 13:23:57 -0400 Original-Received: from [199.232.76.173] (port=56716 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LtPsv-0000Lf-5T for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 13:23:53 -0400 Original-Received: from rzlab.ucr.edu ([138.23.92.77]:39752) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LtPsu-0003iz-Gr for bug-gnu-emacs@gnu.org; Mon, 13 Apr 2009 13:23:52 -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 n3DHNoGq023747; Mon, 13 Apr 2009 10:23:50 -0700 Original-Received: (from debbugs@localhost) by rzlab.ucr.edu (8.13.8/8.13.8/Submit) id n3DHA52F020334; Mon, 13 Apr 2009 10:10:05 -0700 X-Loop: owner@emacsbugs.donarmstrong.com Resent-From: Dan Nicolaescu Resent-To: bug-submit-list@donarmstrong.com Resent-CC: Emacs Bugs , owner@emacsbugs.donarmstrong.com Resent-Date: Mon, 13 Apr 2009 17:10:05 +0000 Resent-Message-ID: Resent-Sender: owner@emacsbugs.donarmstrong.com X-Emacs-PR-Message: followup 2652 X-Emacs-PR-Package: emacs,vc X-Emacs-PR-Keywords: Original-Received: via spool by 2652-submit@emacsbugs.donarmstrong.com id=B2652.123964217518002 (code B ref 2652); Mon, 13 Apr 2009 17:10:05 +0000 Original-Received: (at 2652) by emacsbugs.donarmstrong.com; 13 Apr 2009 17:02:55 +0000 X-Spam-Bayes: score:0.5 Bayes not run. spammytokens:Tokens not available. hammytokens:Tokens not available. Original-Received: from sallyv2.ics.uci.edu (sallyv2.ics.uci.edu [128.195.1.120]) by rzlab.ucr.edu (8.13.8/8.13.8/Debian-3) with ESMTP id n3DH2qQG017996 for <2652@emacsbugs.donarmstrong.com>; Mon, 13 Apr 2009 10:02:53 -0700 Original-Received: from godzilla.ics.uci.edu (godzilla.ics.uci.edu [128.195.10.101]) by sallyv2.ics.uci.edu (8.13.8+Sun/8.13.8) with ESMTP id n3DH2ahS013215; Mon, 13 Apr 2009 10:02:36 -0700 (PDT) Original-Received: (from dann@localhost) by godzilla.ics.uci.edu (8.13.8+Sun/8.13.6/Submit) id n3DH2Zsj025829; Mon, 13 Apr 2009 10:02:35 -0700 (PDT) In-Reply-To: (Stefan Monnier's message of "Sat, 14 Mar 2009 22:09:39 -0400") Original-Lines: 179 X-ICS-MailScanner-Information: Please contact the ISP for more information X-ICS-MailScanner-ID: n3DH2ahS013215 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: GNU/Linux 2.6 (newer, 3) Resent-Date: Mon, 13 Apr 2009 13:23:57 -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:27130 Archived-At: Stefan Monnier writes: > > But I don't really want to check it in at this point without an explicit > > request from Stefan. > > Removing calls to determine the backend (and replace them with backend > info propagated from elsewhere) is generally a good thing. I think your > patch looks good. Here's another patch of the same kind: it removes vc-backend calls for vc-stay-local-p. OK or 23.2? 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."