Mercurial > emacs
diff lisp/vc-hooks.el @ 83204:6d9b668e8f94
Merged in changes from CVS trunk.
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-537
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-538
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-539
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-540
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-541
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-542
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-543
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-544
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-545
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-546
Merge from gnus--rel--5.10
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-21
Merge from emacs--cvs-trunk--0
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-22
Update from CVS: lisp/nndb.el (require): Remove tcp and duplicate cl.
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-23
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-24
lisp/nnimap.el (nnimap-open-connection): Remove extraneous end-paren
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-25
Update from CVS
* miles@gnu.org--gnu-2004/gnus--rel--5.10--patch-26
Update from CVS
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-244
author | Karoly Lorentey <lorentey@elte.hu> |
---|---|
date | Mon, 13 Sep 2004 20:33:29 +0000 |
parents | 1a68e4b22355 6f014cde9d81 |
children | 0fc4928cc48e |
line wrap: on
line diff
--- a/lisp/vc-hooks.el Fri Sep 10 18:07:22 2004 +0000 +++ b/lisp/vc-hooks.el Mon Sep 13 20:33:29 2004 +0000 @@ -1,6 +1,6 @@ ;;; vc-hooks.el --- resident support for version-control -;; Copyright (C) 1992,93,94,95,96,98,99,2000,03,2004 +;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2003, 2004 ;; Free Software Foundation, Inc. ;; Author: FSF (see vc.el for full credits) @@ -52,6 +52,12 @@ (defvar vc-header-alist ()) (make-obsolete-variable 'vc-header-alist 'vc-BACKEND-header) +(defvar vc-ignore-dir-regexp "\\`\\([\\/][\\/]\\|/net/\\|/afs/\\)\\'" + "Regexp matching directory names that are not under VC's control. +The default regexp prevents fruitless and time-consuming attempts +to determine the VC status in directories in which filenames are +interpreted as hostnames.") + (defcustom vc-handled-backends '(RCS CVS SVN SCCS Arch MCVS) ;; Arch and MCVS come last because they are per-tree rather than per-dir. "*List of version control backends for which VC will be used. @@ -298,6 +304,20 @@ (set-buffer-modified-p nil) t)) +(defun vc-find-root (file witness) + "Find the root of a checked out project. +The function walks up the directory tree from FILE looking for WITNESS. +If WITNESS if not found, return nil, otherwise return the root." + (let ((root nil)) + (while (not (or root + (equal file (setq file (file-name-directory file))) + (null file) + (string-match vc-ignore-dir-regexp file))) + (if (file-exists-p (expand-file-name witness file)) + (setq root file) + (setq file (directory-file-name file)))) + root)) + ;; Access functions to file properties ;; (Properties should be _set_ using vc-file-setprop, but ;; _retrieved_ only through these functions, which decide @@ -315,11 +335,13 @@ file was previously registered under a certain backend, then that backend is tried first." (let (handler) - (if (boundp 'file-name-handler-alist) - (setq handler (find-file-name-handler file 'vc-registered))) - (if handler - ;; handler should set vc-backend and return t if registered - (funcall handler 'vc-registered file) + (cond + ((string-match vc-ignore-dir-regexp (file-name-directory file)) nil) + ((and (boundp 'file-name-handler-alist) + (setq handler (find-file-name-handler file 'vc-registered))) + ;; handler should set vc-backend and return t if registered + (funcall handler 'vc-registered file)) + (t ;; There is no file name handler. ;; Try vc-BACKEND-registered for each handled BACKEND. (catch 'found @@ -334,7 +356,7 @@ (cons backend vc-handled-backends)))) ;; File is not registered. (vc-file-setprop file 'vc-backend 'none) - nil)))) + nil))))) (defun vc-backend (file) "Return the version control type of FILE, nil if it is not registered." @@ -869,5 +891,5 @@ (provide 'vc-hooks) -;;; arch-tag: 2e5a6fa7-1d30-48e2-8bd0-e3d335f04f32 +;; arch-tag: 2e5a6fa7-1d30-48e2-8bd0-e3d335f04f32 ;;; vc-hooks.el ends here