Commit d0a0a08a authored by Stefan Monnier's avatar Stefan Monnier
Browse files

(vc-stay-local, vc-stay-local-p): Move to vc-hooks.el.

parent 113414a9
......@@ -7,7 +7,7 @@
;; Maintainer: Andre Spiegel <spiegel@gnu.org>
;; Keywords: tools
;; $Id: vc.el,v 1.356 2003/06/20 13:21:24 teirllm Exp $
;; $Id: vc.el,v 1.357 2003/06/30 10:34:26 rms Exp $
;; This file is part of GNU Emacs.
......@@ -1739,55 +1739,6 @@ actually call the backend, but performs a local diff."
(vc-call diff file rel1 rel2))))
(defcustom vc-stay-local t
"*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.
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)
(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.4"
:group 'vc)
(defun vc-stay-local-p (file)
"Return non-nil if VC should stay local when handling FILE.
This uses the `repository-hostname' backend operation."
(let* ((backend (vc-backend file))
(sym (vc-make-backend-sym backend 'stay-local))
(stay-local (if (boundp sym) (symbol-value sym) t)))
(if (eq stay-local t) (setq stay-local vc-stay-local))
(if (symbolp stay-local) stay-local
(let ((dirname (if (file-directory-p file)
(directory-file-name file)
(file-name-directory file))))
(eq 'yes
(or (vc-file-getprop dirname 'vc-stay-local-p)
(vc-file-setprop
dirname 'vc-stay-local-p
(let ((hostname (vc-call-backend
backend 'repository-hostname dirname)))
(if (not hostname)
'no
(let ((default t))
(if (eq (car-safe stay-local) 'except)
(setq default nil stay-local (cdr stay-local)))
(when (consp stay-local)
(setq stay-local
(mapconcat 'identity stay-local "\\|")))
(if (if (string-match stay-local hostname)
default (not default))
'yes 'no)))))))))))
(defun vc-switches (backend op)
(let ((switches
(or (if backend
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment