]> git.eshelyaron.com Git - emacs.git/commitdiff
* vc-hooks.el (vc-stay-local): Add a new choice and default to it.
authorDan Nicolaescu <dann@ics.uci.edu>
Mon, 13 Oct 2008 01:16:49 +0000 (01:16 +0000)
committerDan Nicolaescu <dann@ics.uci.edu>
Mon, 13 Oct 2008 01:16:49 +0000 (01:16 +0000)
* vc-cvs.el (vc-cvs-dir-stay-local): Remove.
(vc-cvs-stay-local): Add a new choice and default to it.
(vc-cvs-dir-status): Use the new vc-stay-local choice.

* vc-svn.el (vc-svn-dir-status): Use the new vc-stay-local choice.

lisp/ChangeLog
lisp/vc-cvs.el
lisp/vc-hooks.el
lisp/vc-svn.el

index bbcce20ddb9ac24038f53f139d2e1849302cc9de..00a2d4540fc321d52312d4698ceaab55c8a81a0f 100644 (file)
@@ -1,3 +1,13 @@
+2008-10-13  Dan Nicolaescu  <dann@ics.uci.edu>
+
+       * vc-hooks.el (vc-stay-local): Add a new choice and default to it.
+
+       * vc-cvs.el (vc-cvs-dir-stay-local): Remove.
+       (vc-cvs-stay-local): Add a new choice and default to it.
+       (vc-cvs-dir-status): Use the new vc-stay-local choice.
+
+       * vc-svn.el (vc-svn-dir-status): Use the new vc-stay-local choice.
+
 2008-10-12  Stephen Leake  <stephen_leake@member.fsf.org>
 
        * progmodes/ada-mode.el (ada-get-indent-end, ada-goto-matching-start):
index bd6e755d128c95865c432d9f106deec70078a321..0d8cbb1e6fb1b2f9307b1d204719e0acae571391 100644 (file)
@@ -105,11 +105,15 @@ This is only meaningful if you don't use the implicit checkout model
   :version "21.1"
   :group 'vc)
 
-(defcustom vc-cvs-stay-local t
+(defcustom vc-cvs-stay-local 'only-file
   "*Non-nil means use local operations when possible for remote repositories.
 This avoids slow queries over the network and instead uses heuristics
 and past information to determine the current status of a file.
 
+If value is the symbol `only-file' `vc-dir' will connect to the
+server, but heuristics will be used to determine the status for
+all other VC operations.
+
 The value can also be a regular expression or list of regular
 expressions to match against the host name of a repository; then VC
 only stays local for hosts that match it.  Alternatively, the value
@@ -117,19 +121,12 @@ can be a list of regular expressions where the first element is the
 symbol `except'; then VC always stays local except for hosts matched
 by these regular expressions."
   :type '(choice (const :tag "Always stay local" t)
-                (const :tag "Don't stay local" nil)
+                (const :tag "Only for file operations" 'only-file)
+                (const :tag "Don't stay local" nil)
                  (list :format "\nExamine hostname and %v" :tag "Examine hostname ..."
                        (set :format "%v" :inline t (const :format "%t" :tag "don't" except))
                        (regexp :format " stay local,\n%t: %v" :tag "if it matches")
                        (repeat :format "%v%i\n" :inline t (regexp :tag "or"))))
-  :version "21.1"
-  :group 'vc)
-
-(defcustom vc-cvs-dir-stay-local nil
-  "*Non-nil means use local operations when possible for remote repositories.
-This avoids slow queries over the network and instead uses heuristics
-and past information to determine the current status of files for `vc-dir'."
-  :type 'boolean
   :version "23.1"
   :group 'vc)
 
@@ -961,17 +958,18 @@ 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?
-  (if vc-cvs-dir-stay-local
-      (vc-cvs-dir-status-heuristic dir update-function)
-    (vc-cvs-command (current-buffer) 'async dir "-f" "status")
-    ;; Alternative implementation: use the "update" command instead of
-    ;; the "status" command.
-    ;; (vc-cvs-command (current-buffer) 'async
-    ;;                   (file-relative-name dir)
-    ;;                   "-f" "-n" "update" "-d" "-P")
-    (vc-exec-after
-     `(vc-cvs-after-dir-status (quote ,update-function)))))
-
+  (let ((local (vc-stay-local-p dir)))
+    (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")
+      ;; Alternative implementation: use the "update" command instead of
+      ;; the "status" command.
+      ;; (vc-cvs-command (current-buffer) 'async
+      ;;                 (file-relative-name dir)
+      ;;                 "-f" "-n" "update" "-d" "-P")
+      (vc-exec-after
+       `(vc-cvs-after-dir-status (quote ,update-function))))))
+  
 (defun vc-cvs-dir-status-files (dir files default-state update-function)
   "Create a list of conses (file . state) for DIR."
   (apply 'vc-cvs-command (current-buffer) 'async dir "-f" "status" files)
index 83c4d6aff2a773af39f5d6eeaff7d6b8d484230a..7910c068833d43d08ce75cc9655c1ecd9949446f 100644 (file)
@@ -142,24 +142,30 @@ See also variable `vc-consult-headers'."
           (funcall vc-mistrust-permissions
                    (vc-backend-subdirectory-name file)))))
 
-(defcustom vc-stay-local t
+(defcustom vc-stay-local 'only-file
   "Non-nil means use local operations when possible for remote repositories.
 This avoids slow queries over the network and instead uses heuristics
 and past information to determine the current status of a file.
 
+If value is the symbol `only-file' `vc-dir' will connect to the
+server, but heuristics will be used to determine the status for
+all other VC operations.
+
 The value can also be a regular expression or list of regular
 expressions to match against the host name of a repository; then VC
 only stays local for hosts that match it.  Alternatively, the value
 can be a list of regular expressions where the first element is the
 symbol `except'; then VC always stays local except for hosts matched
 by these regular expressions."
-  :type '(choice (const :tag "Always stay local" t)
+  :type '(choice
+         (const :tag "Always stay local" t)
+         (const :tag "Only for file operations" 'only-file)
          (const :tag "Don't stay local" nil)
          (list :format "\nExamine hostname and %v" :tag "Examine hostname ..."
                (set :format "%v" :inline t (const :format "%t" :tag "don't" except))
                (regexp :format " stay local,\n%t: %v" :tag "if it matches")
                (repeat :format "%v%i\n" :inline t (regexp :tag "or"))))
-  :version "22.1"
+  :version "23.1"
   :group 'vc)
 
 (defun vc-stay-local-p (file)
index f44b55e2a4881cba531520877677061e66f50c66..2dd3bb32db3cf15a4e33c0f0cd0a6561da5849fb 100644 (file)
@@ -180,7 +180,8 @@ If you want to force an empty list of arguments, use t."
 CALLBACK is called as (CALLBACK RESULT BUFFER), where
 RESULT is a list of conses (FILE . STATE) for directory DIR."
   ;; FIXME should this rather be all the files in dir?
-  (let ((remote (not (vc-stay-local-p dir))))
+  (let* ((local (vc-stay-local-p dir))
+        (remote (and local (not (eq local 'only-file)))))
     (vc-svn-command (current-buffer) 'async nil "status"
                    (if remote "-u"))
   (vc-exec-after