Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs
This commit is contained in:
commit
b559a60382
5 changed files with 55 additions and 20 deletions
|
@ -81,18 +81,6 @@ If the file is not registered, or the master name is not known, return nil."
|
|||
(vc-file-setprop file 'vc-name result)
|
||||
nil)))) ; Not registered
|
||||
|
||||
(defun vc-possible-master (s dirname basename)
|
||||
(cond
|
||||
((stringp s) (format s dirname basename))
|
||||
((functionp s)
|
||||
;; The template is a function to invoke. If the
|
||||
;; function returns non-nil, that means it has found a
|
||||
;; master. For backward compatibility, we also handle
|
||||
;; the case that the function throws a 'found atom
|
||||
;; and a pair (cons MASTER-FILE BACKEND).
|
||||
(let ((result (catch 'found (funcall s dirname basename))))
|
||||
(if (consp result) (car result) result)))))
|
||||
|
||||
(defun vc-check-master-templates (file templates)
|
||||
"Return non-nil if there is a master corresponding to FILE.
|
||||
|
||||
|
|
|
@ -627,8 +627,7 @@ If FILE is not registered, this function always returns nil."
|
|||
"`working-revision' not found: using the old `workfile-version' instead")
|
||||
(vc-call-backend backend 'workfile-version file))
|
||||
|
||||
;;;autoload
|
||||
(defun vc-master-registered (backend file)
|
||||
(defun vc-default-registered (backend file)
|
||||
"Check if FILE is registered in BACKEND using vc-BACKEND-master-templates."
|
||||
(let ((sym (vc-make-backend-sym backend 'master-templates)))
|
||||
(unless (get backend 'vc-templates-grabbed)
|
||||
|
@ -638,6 +637,54 @@ If FILE is not registered, this function always returns nil."
|
|||
(vc-file-setprop file 'vc-master-name result)
|
||||
nil)))) ; Not registered
|
||||
|
||||
;;;###autoload
|
||||
(defun vc-possible-master (s dirname basename)
|
||||
(cond
|
||||
((stringp s) (format s dirname basename))
|
||||
((functionp s)
|
||||
;; The template is a function to invoke. If the
|
||||
;; function returns non-nil, that means it has found a
|
||||
;; master. For backward compatibility, we also handle
|
||||
;; the case that the function throws a 'found atom
|
||||
;; and a pair (cons MASTER-FILE BACKEND).
|
||||
(let ((result (catch 'found (funcall s dirname basename))))
|
||||
(if (consp result) (car result) result)))))
|
||||
|
||||
(defun vc-check-master-templates (file templates)
|
||||
"Return non-nil if there is a master corresponding to FILE.
|
||||
|
||||
TEMPLATES is a list of strings or functions. If an element is a
|
||||
string, it must be a control string as required by `format', with two
|
||||
string placeholders, such as \"%sRCS/%s,v\". The directory part of
|
||||
FILE is substituted for the first placeholder, the basename of FILE
|
||||
for the second. If a file with the resulting name exists, it is taken
|
||||
as the master of FILE, and returned.
|
||||
|
||||
If an element of TEMPLATES is a function, it is called with the
|
||||
directory part and the basename of FILE as arguments. It should
|
||||
return non-nil if it finds a master; that value is then returned by
|
||||
this function."
|
||||
(let ((dirname (or (file-name-directory file) ""))
|
||||
(basename (file-name-nondirectory file)))
|
||||
(catch 'found
|
||||
(mapcar
|
||||
(lambda (s)
|
||||
(let ((trial (vc-possible-master s dirname basename)))
|
||||
(when (and trial (file-exists-p trial)
|
||||
;; Make sure the file we found with name
|
||||
;; TRIAL is not the source file itself.
|
||||
;; That can happen with RCS-style names if
|
||||
;; the file name is truncated (e.g. to 14
|
||||
;; chars). See if either directory or
|
||||
;; attributes differ.
|
||||
(or (not (string= dirname
|
||||
(file-name-directory trial)))
|
||||
(not (equal (file-attributes file)
|
||||
(file-attributes trial)))))
|
||||
(throw 'found trial))))
|
||||
templates))))
|
||||
|
||||
|
||||
;; toggle-read-only is obsolete since 24.3, but since vc-t-r-o was made
|
||||
;; obsolete earlier, it is ok for the latter to be an alias to the former,
|
||||
;; since the latter will be removed first. We can't just make it
|
||||
|
|
|
@ -90,7 +90,7 @@ to use --brief and sets this variable to remember whether it worked."
|
|||
:group 'vc-rcs)
|
||||
|
||||
;; This needs to be autoloaded because vc-rcs-registered uses it (via
|
||||
;; vc-master-registered), and vc-hooks needs to be able to check
|
||||
;; vc-default-registered), and vc-hooks needs to be able to check
|
||||
;; for a registered backend without loading every backend.
|
||||
;;;###autoload
|
||||
(defcustom vc-rcs-master-templates
|
||||
|
@ -131,7 +131,7 @@ For a description of possible values, see `vc-check-master-templates'."
|
|||
;; every file that is visited.
|
||||
;;;###autoload
|
||||
(progn
|
||||
(defun vc-rcs-registered (f) (vc-master-registered 'RCS f)))
|
||||
(defun vc-rcs-registered (f) (vc-default-registered 'RCS f)))
|
||||
|
||||
(defun vc-rcs-state (file)
|
||||
"Implementation of `vc-state' for RCS."
|
||||
|
|
|
@ -75,7 +75,7 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
|
|||
:group 'vc-sccs)
|
||||
|
||||
;; This needs to be autoloaded because vc-sccs-registered uses it (via
|
||||
;; vc-master-registered), and vc-hooks needs to be able to check
|
||||
;; vc-default-registered), and vc-hooks needs to be able to check
|
||||
;; for a registered backend without loading every backend.
|
||||
;;;###autoload
|
||||
(defcustom vc-sccs-master-templates
|
||||
|
@ -112,7 +112,7 @@ For a description of possible values, see `vc-check-master-templates'."
|
|||
;; every file that is visited.
|
||||
;;;###autoload
|
||||
(progn
|
||||
(defun vc-sccs-registered (f) (vc-master-registered 'SCCS f)))
|
||||
(defun vc-sccs-registered (f) (vc-default-registered 'SCCS f)))
|
||||
|
||||
(defun vc-sccs-state (file)
|
||||
"SCCS-specific function to compute the version control state."
|
||||
|
|
|
@ -123,7 +123,7 @@ If nil, use the value of `vc-diff-switches'. If t, use no switches."
|
|||
:group 'vc-src)
|
||||
|
||||
;; This needs to be autoloaded because vc-src-registered uses it (via
|
||||
;; vc-master-registered), and vc-hooks needs to be able to check
|
||||
;; vc-default-registered), and vc-hooks needs to be able to check
|
||||
;; for a registered backend without loading every backend.
|
||||
;;;###autoload
|
||||
(defcustom vc-src-master-templates
|
||||
|
@ -153,7 +153,7 @@ For a description of possible values, see `vc-check-master-templates'."
|
|||
;; every file that is visited.
|
||||
;;;###autoload
|
||||
(progn
|
||||
(defun vc-src-registered (f) (vc-master-registered 'src f)))
|
||||
(defun vc-src-registered (f) (vc-default-registered 'src f)))
|
||||
|
||||
(defun vc-src-state (file)
|
||||
"SRC-specific version of `vc-state'."
|
||||
|
|
Loading…
Add table
Reference in a new issue