annotate lisp/vc.el @ 94689:0a8a0c2b4cd3

vc-responsible-backend needs to see absolute pathnames.
author Eric S. Raymond <esr@snark.thyrsus.com>
date Tue, 06 May 2008 09:12:12 +0000
parents ee5932bf781d
children f46fc59d6e9e
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
33564
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
1 ;;; vc.el --- drive a version-control system from within Emacs
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
64762
41bb365f41c4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64091
diff changeset
3 ;; Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 2000,
87893
160807cd63a7 (vc-diff-sentinel): Do not write a footer if there were differences.
Glenn Morris <rgm@gnu.org>
parents: 87879
diff changeset
4 ;; 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
160807cd63a7 (vc-diff-sentinel): Do not write a footer if there were differences.
Glenn Morris <rgm@gnu.org>
parents: 87879
diff changeset
5 ;; Free Software Foundation, Inc.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
6
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
7 ;; Author: FSF (see below for full credits)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
8 ;; Maintainer: Andre Spiegel <spiegel@gnu.org>
39117
abd085bfec0c Add Keywords header.
Gerd Moellmann <gerd@gnu.org>
parents: 39000
diff changeset
9 ;; Keywords: tools
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11 ;; This file is part of GNU Emacs.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94652
diff changeset
13 ;; GNU Emacs is free software: you can redistribute it and/or modify
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; it under the terms of the GNU General Public License as published by
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94652
diff changeset
15 ;; the Free Software Foundation, either version 3 of the License, or
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94652
diff changeset
16 ;; (at your option) any later version.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18 ;; GNU Emacs is distributed in the hope that it will be useful,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; GNU General Public License for more details.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
23 ;; You should have received a copy of the GNU General Public License
94678
ee5932bf781d Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 94652
diff changeset
24 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
25
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
26 ;;; Credits:
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
27
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
28 ;; VC was initially designed and implemented by Eric S. Raymond
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
29 ;; <esr@thyrsus.com> in 1992. Over the years, many other people have
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
30 ;; contributed substantial amounts of work to VC. These include:
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
31 ;;
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
32 ;; Per Cederqvist <ceder@lysator.liu.se>
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
33 ;; Paul Eggert <eggert@twinsun.com>
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
34 ;; Sebastian Kremer <sk@thp.uni-koeln.de>
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
35 ;; Martin Lorentzson <martinl@gnu.org>
32910
3a5e5c74d3bb fix my email
Dave Love <fx@gnu.org>
parents: 32888
diff changeset
36 ;; Dave Love <fx@gnu.org>
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
37 ;; Stefan Monnier <monnier@cs.yale.edu>
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
38 ;; Thien-Thi Nguyen <ttn@gnu.org>
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
39 ;; Dan Nicolaescu <dann@ics.uci.edu>
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
40 ;; J.D. Smith <jdsmith@alum.mit.edu>
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
41 ;; Andre Spiegel <spiegel@gnu.org>
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
42 ;; Richard Stallman <rms@gnu.org>
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
43 ;;
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
44 ;; In July 2007 ESR returned and redesigned the mode to cope better
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
45 ;; with modern version-control systems that do commits by fileset
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
46 ;; rather than per individual file.
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
47 ;;
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
48 ;; Features in the new version:
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
49 ;; * Key commands (vc-next-action = C-x v v, vc-print-log = C-x v l, vc-revert
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
50 ;; = C-x v u, vc-rollback = C-x v c, vc-diff = C-x v =, vc-update = C-x v +)
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
51 ;; now operate on filesets rather than individual files.
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
52 ;; * The fileset for a command is either (a) all marked files in VC-dired
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
53 ;; mode, (b) the currently visited file if it's under version control,
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
54 ;; or (c) the current directory if the visited buffer is not under
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
55 ;; version control and a wildcarding-enable flag has been set.
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
56 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
57 ;; If you maintain a client of the mode or customize it in your .emacs,
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
58 ;; note that some backend functions which formerly took single file arguments
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
59 ;; now take a list of files. These include: register, checkin, print-log,
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
60 ;; rollback, and diff.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
61
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 ;;; Commentary:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
64 ;; This mode is fully documented in the Emacs user's manual.
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
65 ;;
78875
2568254b40a4 Mention all supported VC backends.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78822
diff changeset
66 ;; Supported version-control systems presently include CVS, RCS, GNU
2568254b40a4 Mention all supported VC backends.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78822
diff changeset
67 ;; Arch, Subversion, Bzr, Git, Mercurial, Meta-CVS, Monotone and SCCS
2568254b40a4 Mention all supported VC backends.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78822
diff changeset
68 ;; (or its free replacement, CSSC).
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
69 ;;
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
70 ;; Some features will not work with old RCS versions. Where
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
71 ;; appropriate, VC finds out which version you have, and allows or
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
72 ;; disallows those features (stealing locks, for example, works only
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
73 ;; from 5.6.2 onwards).
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
74 ;; Even initial checkins will fail if your RCS version is so old that ci
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
75 ;; doesn't understand -t-; this has been known to happen to people running
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
76 ;; NExTSTEP 3.0.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
77 ;;
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
78 ;; You can support the RCS -x option by customizing vc-rcs-master-templates.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
79 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
80 ;; Proper function of the SCCS diff commands requires the shellscript vcdiff
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
81 ;; to be installed somewhere on Emacs's path for executables.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
82 ;;
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
83 ;; If your site uses the ChangeLog convention supported by Emacs, the
86908
6e9e38d61817 * log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86503
diff changeset
84 ;; function `log-edit-comment-to-change-log' could prove a useful checkin hook,
6e9e38d61817 * log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86503
diff changeset
85 ;; although you might prefer to use C-c C-a (i.e. `log-edit-insert-changelog')
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
86 ;; from the commit buffer instead or to set `log-edit-setup-invert'.
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
87 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
88 ;; The vc code maintains some internal state in order to reduce expensive
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
89 ;; version-control operations to a minimum. Some names are only computed
62610
4f2f430bf7c3 (vc-trunk-p): Add autoload cookie. The function is used in vc-rcs.el
André Spiegel <spiegel@gnu.org>
parents: 61705
diff changeset
90 ;; once. If you perform version control operations with the backend while
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
91 ;; vc's back is turned, or move/rename master files while vc is running,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
92 ;; vc may get seriously confused. Don't do these things!
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
93 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
94 ;; Developer's notes on some concurrency issues are included at the end of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
95 ;; the file.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
96 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
97 ;; ADDING SUPPORT FOR OTHER BACKENDS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
98 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
99 ;; VC can use arbitrary version control systems as a backend. To add
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
100 ;; support for a new backend named SYS, write a library vc-sys.el that
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
101 ;; contains functions of the form `vc-sys-...' (note that SYS is in lower
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
102 ;; case for the function and library names). VC will use that library if
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
103 ;; you put the symbol SYS somewhere into the list of
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
104 ;; `vc-handled-backends'. Then, for example, if `vc-sys-registered'
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
105 ;; returns non-nil for a file, all SYS-specific versions of VC commands
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
106 ;; will be available for that file.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
107 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
108 ;; VC keeps some per-file information in the form of properties (see
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
109 ;; vc-file-set/getprop in vc-hooks.el). The backend-specific functions
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
110 ;; do not generally need to be aware of these properties. For example,
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
111 ;; `vc-sys-working-revision' should compute the working revision and
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
112 ;; return it; it should not look it up in the property, and it needn't
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
113 ;; store it there either. However, if a backend-specific function does
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
114 ;; store a value in a property, that value takes precedence over any
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
115 ;; value that the generic code might want to set (check for uses of
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
116 ;; the macro `with-vc-properties' in vc.el).
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
117 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
118 ;; In the list of functions below, each identifier needs to be prepended
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
119 ;; with `vc-sys-'. Some of the functions are mandatory (marked with a
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
120 ;; `*'), others are optional (`-').
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
121 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
122 ;; BACKEND PROPERTIES
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
123 ;;
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
124 ;; * revision-granularity
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
125 ;;
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
126 ;; Takes no arguments. Returns either 'file or 'repository. Backends
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
127 ;; that return 'file have per-file revision numbering; backends
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
128 ;; that return 'repository have per-repository revision numbering,
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
129 ;; so a revision level implicitly identifies a changeset
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
130 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
131 ;; STATE-QUERYING FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
132 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
133 ;; * registered (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
134 ;;
78085
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
135 ;; Return non-nil if FILE is registered in this backend. Both this
78158
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
136 ;; function as well as `state' should be careful to fail gracefully
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
137 ;; in the event that the backend executable is absent. It is
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
138 ;; preferable that this function's body is autoloaded, that way only
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
139 ;; calling vc-registered does not cause the backend to be loaded
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
140 ;; (all the vc-FOO-registered functions are called to try to find
8dcc6f809d32 Add more info about the vc-registered function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78085
diff changeset
141 ;; the controlling backend for FILE.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
142 ;;
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
143 ;; * state (file)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
144 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
145 ;; Return the current version control state of FILE. For a list of
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
146 ;; possible values, see `vc-state'. This function should do a full and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
147 ;; reliable state computation; it is usually called immediately after
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
148 ;; C-x v v. If you want to use a faster heuristic when visiting a
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
149 ;; file, put that into `state-heuristic' below. Note that under most
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
150 ;; VCSes this won't be called at all, dir-state or dir-stus is used instead.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
151 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
152 ;; - state-heuristic (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
153 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
154 ;; If provided, this function is used to estimate the version control
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
155 ;; state of FILE at visiting time. It should be considerably faster
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
156 ;; than the implementation of `state'. For a list of possible values,
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
157 ;; see the doc string of `vc-state'.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
158 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
159 ;; - dir-state (dir)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
160 ;;
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
161 ;; If provided, this function is used to find the version control
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
162 ;; state of as many files as possible in DIR, and all subdirectories
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
163 ;; of DIR, in a fast way; it is used to avoid expensive indivitual
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
164 ;; vc-state calls. The function should not return anything, but
87506
de46129c1767 State that dir-state is required to set the vc-state and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87477
diff changeset
165 ;; rather store the files' states into the corresponding properties.
de46129c1767 State that dir-state is required to set the vc-state and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87477
diff changeset
166 ;; Two properties are required: `vc-backend' and `vc-state'. (Note:
de46129c1767 State that dir-state is required to set the vc-state and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87477
diff changeset
167 ;; in older versions this method was not required to recurse into
de46129c1767 State that dir-state is required to set the vc-state and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87477
diff changeset
168 ;; subdirectories.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
169 ;;
94003
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93956
diff changeset
170 ;; - dir-status (dir update-function)
91960
81890a88d53d (dir-status): Add a brief description.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91951
diff changeset
171 ;;
93461
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
172 ;; Produce RESULT: a list of lists of the form (FILE VC-STATE EXTRA)
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
173 ;; for the files in DIR.
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
174 ;; EXTRA can be used for backend specific information about FILE.
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
175 ;; If a command needs to be run to compute this list, it should be
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
176 ;; run asynchronously using (current-buffer) as the buffer for the
3afeea9a48a3 * vc.el (vc-status-add-entry): Assume ENTRY is a list not a cons.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93459
diff changeset
177 ;; command. When RESULT is computed, it should be passed back by
94003
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93956
diff changeset
178 ;; doing: (funcall UPDATE-FUNCTION RESULT nil).
94173
f062aad7dc37 (vc-dir-menu-map, vc-dir-mode-map, vc-dir-tool-bar-map):
Sam Steingold <sds@gnu.org>
parents: 94113
diff changeset
179 ;; If the backend uses a process filter, hence it produces partial results,
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
180 ;; they can be passed back by doing:
94003
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93956
diff changeset
181 ;; (funcall UPDATE-FUNCTION RESULT t)
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93956
diff changeset
182 ;; and then do a (funcall UPDATE-FUNCTION RESULT nil)
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
183 ;; when all the results have been computed.
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
184 ;; To provide more backend specific functionality for `vc-dir'
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
185 ;; the following functions might be needed: `status-extra-headers',
94059
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
186 ;; `status-printer', `extra-status-menu' and `dir-status-files'.
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
187 ;; This function is used by `vc-dir', a replacement for
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
188 ;; `vc-dired'. vc-dir is still under development, and is NOT
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
189 ;; feature complete. As such, the requirements for this function
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
190 ;; might change. This is a replacement for `dir-state'.
91960
81890a88d53d (dir-status): Add a brief description.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91951
diff changeset
191 ;;
94059
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
192 ;; - dir-status-files (dir files default-state update-function)
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
193 ;;
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
194 ;; This function is identical to dir-status except that it should
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
195 ;; only report status for the specified FILES. Also it needs to
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
196 ;; report on all requested files, including up-to-date or ignored
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
197 ;; files. If not provided, the default is to consider that the files
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
198 ;; are in DEFAULT-STATE.
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
199 ;;
93333
53eee5c271f4 * vc.el: Add new backend function 'status-extra-headers.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93273
diff changeset
200 ;; - status-extra-headers (dir)
93382
8e46096e0cb3 * vc.el (vc-status-menu-map, vc-status-mode-map): Bind vc-revert.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93367
diff changeset
201 ;;
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
202 ;; Return a string that will be added to the *vc-dir* buffer header.
93333
53eee5c271f4 * vc.el: Add new backend function 'status-extra-headers.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93273
diff changeset
203 ;;
93425
8459d55c7312 Allow backends to display backend specific information in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93382
diff changeset
204 ;; - status-printer (fileinfo)
8459d55c7312 Allow backends to display backend specific information in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93382
diff changeset
205 ;;
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
206 ;; Pretty print the `vc-dir-fileinfo' FILEINFO.
93425
8459d55c7312 Allow backends to display backend specific information in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93382
diff changeset
207 ;; If a backend needs to show more information than the default FILE
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
208 ;; and STATE in the vc-dir listing, it can store that extra
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
209 ;; information in `vc-dir-fileinfo->extra'. This function can be
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
210 ;; used to display that extra information in the *vc-dir* buffer.
93425
8459d55c7312 Allow backends to display backend specific information in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93382
diff changeset
211 ;;
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
212 ;; - status-fileinfo-extra (file)
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
213 ;;
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
214 ;; Compute `vc-dir-fileinfo->extra' for FILE.
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
215 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
216 ;; * working-revision (file)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
217 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
218 ;; Return the working revision of FILE. This is the revision fetched
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
219 ;; by the last checkout or upate, not necessarily the same thing as the
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
220 ;; head or tip revision. Should return "0" for a file added but not yet
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
221 ;; committed.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
222 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
223 ;; - latest-on-branch-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
224 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
225 ;; Return non-nil if the working revision of FILE is the latest revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
226 ;; on its branch (many VCSes call this the 'tip' or 'head' revision).
85059
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
227 ;; The default implementation always returns t, which means that
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
228 ;; working with non-current revisions is not supported by default.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
229 ;;
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
230 ;; * checkout-model (files)
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
231 ;;
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
232 ;; Indicate whether FILES need to be "checked out" before they can be
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
233 ;; edited. See `vc-checkout-model' for a list of possible values.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
234 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
235 ;; - workfile-unchanged-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
236 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
237 ;; Return non-nil if FILE is unchanged from the working revision.
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
238 ;; This function should do a brief comparison of FILE's contents
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
239 ;; with those of the repository master of the working revision. If
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
240 ;; the backend does not have such a brief-comparison feature, the
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
241 ;; default implementation of this function can be used, which
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
242 ;; delegates to a full vc-BACKEND-diff. (Note that vc-BACKEND-diff
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
243 ;; must not run asynchronously in this case, see variable
85059
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
244 ;; `vc-disable-async-diff'.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
245 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
246 ;; - mode-line-string (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
247 ;;
82027
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
248 ;; If provided, this function should return the VC-specific mode
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
249 ;; line string for FILE. The returned string should have a
82027
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
250 ;; `help-echo' property which is the text to be displayed as a
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
251 ;; tooltip when the mouse hovers over the VC entry on the mode-line.
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
252 ;; The default implementation deals well with all states that
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
253 ;; `vc-state' can return.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
254 ;;
94539
fee32a11924d Name change in preparation for ripping out vc-dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94538
diff changeset
255 ;; - prettify-state-info (file)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
256 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
257 ;; Translate the `vc-state' property of FILE into a string that can be
94539
fee32a11924d Name change in preparation for ripping out vc-dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94538
diff changeset
258 ;; used in a human-readable buffer. The default implementation deals well
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
259 ;; with all states that `vc-state' can return.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
260 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
261 ;; STATE-CHANGING FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
262 ;;
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
263 ;; * create-repo (backend)
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
264 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
265 ;; Create an empty repository in the current directory and initialize
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
266 ;; it so VC mode can add files to it. For file-oriented systems, this
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
267 ;; need do no more than create a subdirectory with the right name.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
268 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
269 ;; * register (files &optional rev comment)
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
270 ;;
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
271 ;; Register FILES in this backend. Optionally, an initial revision REV
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
272 ;; and an initial description of the file, COMMENT, may be specified,
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
273 ;; but it is not guaranteed that the backend will do anything with this.
40440
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
274 ;; The implementation should pass the value of vc-register-switches
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
275 ;; to the backend command. (Note: in older versions of VC, this
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
276 ;; command took a single file argument and not a list.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
277 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
278 ;; - init-revision (file)
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
279 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
280 ;; The initial revision to use when registering FILE if one is not
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
281 ;; specified by the user. If not provided, the variable
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
282 ;; vc-default-init-revision is used instead.
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
283 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
284 ;; - responsible-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
285 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
286 ;; Return non-nil if this backend considers itself "responsible" for
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
287 ;; FILE, which can also be a directory. This function is used to find
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
288 ;; out what backend to use for registration of new files and for things
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
289 ;; like change log generation. The default implementation always
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
290 ;; returns nil.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
291 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
292 ;; - could-register (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
293 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
294 ;; Return non-nil if FILE could be registered under this backend. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
295 ;; default implementation always returns t.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
296 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
297 ;; - receive-file (file rev)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
298 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
299 ;; Let this backend "receive" a file that is already registered under
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
300 ;; another backend. The default implementation simply calls `register'
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
301 ;; for FILE, but it can be overridden to do something more specific,
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
302 ;; e.g. keep revision numbers consistent or choose editing modes for
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
303 ;; FILE that resemble those of the other backend.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
304 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
305 ;; - unregister (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
306 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
307 ;; Unregister FILE from this backend. This is only needed if this
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
308 ;; backend may be used as a "more local" backend for temporary editing.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
309 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
310 ;; * checkin (files rev comment)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
311 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
312 ;; Commit changes in FILES to this backend. If REV is non-nil, that
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
313 ;; should become the new revision number (not all backends do
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
314 ;; anything with it). COMMENT is used as a check-in comment. The
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
315 ;; implementation should pass the value of vc-checkin-switches to
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
316 ;; the backend command. (Note: in older versions of VC, this
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
317 ;; command took a single file argument and not a list.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
318 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
319 ;; * find-revision (file rev buffer)
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
320 ;;
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
321 ;; Fetch revision REV of file FILE and put it into BUFFER.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
322 ;; If REV is the empty string, fetch the head of the trunk.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
323 ;; The implementation should pass the value of vc-checkout-switches
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
324 ;; to the backend command.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
325 ;;
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
326 ;; * checkout (file &optional editable rev)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
327 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
328 ;; Check out revision REV of FILE into the working area. If EDITABLE
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
329 ;; is non-nil, FILE should be writable by the user and if locking is
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
330 ;; used for FILE, a lock should also be set. If REV is non-nil, that
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
331 ;; is the revision to check out (default is the working revision).
48964
7bba5b5ff0d2 (vc-next-action-on-file): Use t argument to vc-checkout in
André Spiegel <spiegel@gnu.org>
parents: 48142
diff changeset
332 ;; If REV is t, that means to check out the head of the current branch;
7bba5b5ff0d2 (vc-next-action-on-file): Use t argument to vc-checkout in
André Spiegel <spiegel@gnu.org>
parents: 48142
diff changeset
333 ;; if it is the empty string, check out the head of the trunk.
7bba5b5ff0d2 (vc-next-action-on-file): Use t argument to vc-checkout in
André Spiegel <spiegel@gnu.org>
parents: 48142
diff changeset
334 ;; The implementation should pass the value of vc-checkout-switches
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
335 ;; to the backend command.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
336 ;;
39000
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
337 ;; * revert (file &optional contents-done)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
338 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
339 ;; Revert FILE back to the working revision. If optional
39000
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
340 ;; arg CONTENTS-DONE is non-nil, then the contents of FILE have
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
341 ;; already been reverted from a version backup, and this function
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
342 ;; only needs to update the status of FILE within the backend.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
343 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
344 ;; - rollback (files)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
345 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
346 ;; Remove the tip revision of each of FILES from the repository. If
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
347 ;; this function is not provided, trying to cancel a revision is
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
348 ;; caught as an error. (Most backends don't provide it.) (Also
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
349 ;; note that older versions of this backend command were called
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
350 ;; 'cancel-version' and took a single file arg, not a list of
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
351 ;; files.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
352 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
353 ;; - merge (file rev1 rev2)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
354 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
355 ;; Merge the changes between REV1 and REV2 into the current working file.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
356 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
357 ;; - merge-news (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
358 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
359 ;; Merge recent changes from the current branch into FILE.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
360 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
361 ;; - steal-lock (file &optional revision)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
362 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
363 ;; Steal any lock on the working revision of FILE, or on REVISION if
85059
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
364 ;; that is provided. This function is only needed if locking is
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
365 ;; used for files under this backend, and if files can indeed be
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
366 ;; locked by other users.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
367 ;;
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
368 ;; - modify-change-comment (files rev comment)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
369 ;;
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
370 ;; Modify the change comments associated with the files at the
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
371 ;; given revision. This is optional, many backends do not support it.
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
372 ;;
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
373 ;; - mark-resolved (files)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
374 ;;
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
375 ;; Mark conflicts as resolved. Some VC systems need to run a
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
376 ;; command to mark conflicts as resolved.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
377 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
378 ;; HISTORY FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
379 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
380 ;; * print-log (files &optional buffer)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
381 ;;
81963
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
382 ;; Insert the revision log for FILES into BUFFER, or the *vc* buffer
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
383 ;; if BUFFER is nil. (Note: older versions of this function expected
535f90fff765 Put the lower half (the back-end) of NewVC in place. This commit
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81957
diff changeset
384 ;; only a single file argument.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
385 ;;
78085
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
386 ;; - log-view-mode ()
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
387 ;;
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
388 ;; Mode to use for the output of print-log. This defaults to
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
389 ;; `log-view-mode' and is expected to be changed (if at all) to a derived
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
390 ;; mode of `log-view-mode'.
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
391 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
392 ;; - show-log-entry (revision)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
393 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
394 ;; If provided, search the log entry for REVISION in the current buffer,
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
395 ;; and make sure it is displayed in the buffer's window. The default
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
396 ;; implementation of this function works for RCS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
397 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
398 ;; - wash-log (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
399 ;;
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
400 ;; Remove all non-comment information from the output of print-log.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
401 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
402 ;; - comment-history (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
403 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
404 ;; Return a string containing all log entries that were made for FILE.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
405 ;; This is used for transferring a file from one backend to another,
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
406 ;; retaining comment information. The default implementation of this
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
407 ;; function does this by calling print-log and then wash-log, and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
408 ;; returning the resulting buffer contents as a string.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
409 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
410 ;; - update-changelog (files)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
411 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
412 ;; Using recent log entries, create ChangeLog entries for FILES, or for
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
413 ;; all files at or below the default-directory if FILES is nil. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
414 ;; default implementation runs rcs2log, which handles RCS- and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
415 ;; CVS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
416 ;;
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
417 ;; * diff (files &optional rev1 rev2 buffer)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
418 ;;
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
419 ;; Insert the diff for FILE into BUFFER, or the *vc-diff* buffer if
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
420 ;; BUFFER is nil. If REV1 and REV2 are non-nil, report differences
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
421 ;; from REV1 to REV2. If REV1 is nil, use the working revision (as
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
422 ;; found in the repository) as the older revision; if REV2 is nil,
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
423 ;; use the current working-copy contents as the newer revision. This
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
424 ;; function should pass the value of (vc-switches BACKEND 'diff) to
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
425 ;; the backend command. It should return a status of either 0 (no
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
426 ;; differences found), or 1 (either non-empty diff or the diff is
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
427 ;; run asynchronously).
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
428 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
429 ;; - revision-completion-table (files)
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
430 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
431 ;; Return a completion table for existing revisions of FILES.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
432 ;; The default is to not use any completion table.
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
433 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
434 ;; - annotate-command (file buf &optional rev)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
435 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
436 ;; If this function is provided, it should produce an annotated display
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
437 ;; of FILE in BUF, relative to revision REV. Annotation means each line
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
438 ;; of FILE displayed is prefixed with version information associated with
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
439 ;; its addition (deleted lines leave no history) and that the text of the
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
440 ;; file is fontified according to age.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
441 ;;
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
442 ;; - annotate-time ()
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
443 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
444 ;; Only required if `annotate-command' is defined for the backend.
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
445 ;; Return the time of the next line of annotation at or after point,
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
446 ;; as a floating point fractional number of days. The helper
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
447 ;; function `vc-annotate-convert-time' may be useful for converting
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
448 ;; multi-part times as returned by `current-time' and `encode-time'
42205
7308bbc423d5 Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 41561
diff changeset
449 ;; to this format. Return nil if no more lines of annotation appear
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
450 ;; in the buffer. You can safely assume that point is placed at the
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
451 ;; beginning of each line, starting at `point-min'. The buffer that
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
452 ;; point is placed in is the Annotate output, as defined by the
57114
deddb5e7acc3 (annotate-time): Document point handling.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56952
diff changeset
453 ;; relevant backend. This function also affects how much of the line
deddb5e7acc3 (annotate-time): Document point handling.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56952
diff changeset
454 ;; is fontified; where it leaves point is where fontification begins.
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
455 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
456 ;; - annotate-current-time ()
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
457 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
458 ;; Only required if `annotate-command' is defined for the backend,
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
459 ;; AND you'd like the current time considered to be anything besides
82232
58ac5a791dfa * vc.el: Document new VC operation `extra-menu'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82213
diff changeset
460 ;; (vc-annotate-convert-time (current-time)) -- i.e. the current
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
461 ;; time with hours, minutes, and seconds included. Probably safe to
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
462 ;; ignore. Return the current-time, in units of fractional days.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
463 ;;
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
464 ;; - annotate-extract-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
465 ;;
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
466 ;; Only required if `annotate-command' is defined for the backend.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
467 ;; Invoked from a buffer in vc-annotate-mode, return the revision
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
468 ;; corresponding to the current line, or nil if there is no revision
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
469 ;; corresponding to the current line.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
470 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
471 ;; SNAPSHOT SYSTEM
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
472 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
473 ;; - create-snapshot (dir name branchp)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
474 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
475 ;; Take a snapshot of the current state of files under DIR and name it
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
476 ;; NAME. This should make sure that files are up-to-date before
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
477 ;; proceeding with the action. DIR can also be a file and if BRANCHP
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
478 ;; is specified, NAME should be created as a branch and DIR should be
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
479 ;; checked out under this new branch. The default implementation does
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
480 ;; not support branches but does a sanity check, a tree traversal and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
481 ;; for each file calls `assign-name'.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
482 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
483 ;; - assign-name (file name)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
484 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
485 ;; Give name NAME to the working revision of FILE, assuming it is
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
486 ;; up-to-date. Only used by the default version of `create-snapshot'.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
487 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
488 ;; - retrieve-snapshot (dir name update)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
489 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
490 ;; Retrieve a named snapshot of all registered files at or below DIR.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
491 ;; If UPDATE is non-nil, then update buffers of any files in the
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
492 ;; snapshot that are currently visited. The default implementation
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
493 ;; does a sanity check whether there aren't any uncommitted changes at
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
494 ;; or below DIR, and then performs a tree walk, using the `checkout'
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
495 ;; function to retrieve the corresponding revisions.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
496 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
497 ;; MISCELLANEOUS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
498 ;;
91994
aca0b1aa678a Explain vc-BACKEND-root in Commentary; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 91960
diff changeset
499 ;; - root (dir)
aca0b1aa678a Explain vc-BACKEND-root in Commentary; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 91960
diff changeset
500 ;;
aca0b1aa678a Explain vc-BACKEND-root in Commentary; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 91960
diff changeset
501 ;; Return DIR's "root" directory, that is, a parent directory of
aca0b1aa678a Explain vc-BACKEND-root in Commentary; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 91960
diff changeset
502 ;; DIR for which the same backend as used for DIR applies. If no
aca0b1aa678a Explain vc-BACKEND-root in Commentary; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 91960
diff changeset
503 ;; such parent exists, this function should return DIR.
aca0b1aa678a Explain vc-BACKEND-root in Commentary; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 91960
diff changeset
504 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
505 ;; - make-version-backups-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
506 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
507 ;; Return non-nil if unmodified repository revisions of FILE should be
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
508 ;; backed up locally. If this is done, VC can perform `diff' and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
509 ;; `revert' operations itself, without calling the backend system. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
510 ;; default implementation always returns nil.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
511 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
512 ;; - repository-hostname (dirname)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
513 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
514 ;; Return the hostname that the backend will have to contact
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
515 ;; in order to operate on a file in DIRNAME. If the return value
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
516 ;; is nil, it means that the repository is local.
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
517 ;; This function is used in `vc-stay-local-p' which backends can use
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
518 ;; for their convenience.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
519 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
520 ;; - previous-revision (file rev)
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
521 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
522 ;; Return the revision number that precedes REV for FILE, or nil if no such
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
523 ;; revision exists.
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
524 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
525 ;; - next-revision (file rev)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
526 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
527 ;; Return the revision number that follows REV for FILE, or nil if no such
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
528 ;; revision exists.
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
529 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
530 ;; - check-headers ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
531 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
532 ;; Return non-nil if the current buffer contains any version headers.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
533 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
534 ;; - clear-headers ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
535 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
536 ;; In the current buffer, reset all version headers to their unexpanded
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
537 ;; form. This function should be provided if the state-querying code
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
538 ;; for this backend uses the version headers to determine the state of
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
539 ;; a file. This function will then be called whenever VC changes the
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
540 ;; version control state in such a way that the headers would give
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
541 ;; wrong information.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
542 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
543 ;; - delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
544 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
545 ;; Delete FILE and mark it as deleted in the repository. If this
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
546 ;; function is not provided, the command `vc-delete-file' will
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
547 ;; signal an error.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
548 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
549 ;; - rename-file (old new)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
550 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
551 ;; Rename file OLD to NEW, both in the working area and in the
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
552 ;; repository. If this function is not provided, the renaming
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
553 ;; will be done by (vc-delete-file old) and (vc-register new).
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
554 ;;
54398
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
555 ;; - find-file-hook ()
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
556 ;;
54530
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
557 ;; Operation called in current buffer when opening a file. This can
54398
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
558 ;; be used by the backend to setup some local variables it might need.
82232
58ac5a791dfa * vc.el: Document new VC operation `extra-menu'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 82213
diff changeset
559 ;;
54530
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
560 ;; - find-file-not-found-hook ()
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
561 ;;
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
562 ;; Operation called in current buffer when opening a non-existing file.
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
563 ;; By default, this asks the user if she wants to check out the file.
78822
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
564 ;;
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
565 ;; - extra-menu ()
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
566 ;;
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
567 ;; Return a menu keymap, the items in the keymap will appear at the
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
568 ;; end of the Version Control menu. The goal is to allow backends
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
569 ;; to specify extra menu items that appear in the VC menu. This way
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
570 ;; you can provide menu entries for functionality that is specific
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
571 ;; to your backend and which does not map to any of the VC generic
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
572 ;; concepts.
91951
d42fe75822fe * vc.el (vc-status-menu, vc-status-menu-map-filter): New functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91944
diff changeset
573 ;;
d42fe75822fe * vc.el (vc-status-menu, vc-status-menu-map-filter): New functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91944
diff changeset
574 ;; - extra-status-menu ()
d42fe75822fe * vc.el (vc-status-menu, vc-status-menu-map-filter): New functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91944
diff changeset
575 ;;
92122
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
576 ;; Return a menu keymap, the items in the keymap will appear at the
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
577 ;; end of the VC Status menu. The goal is to allow backends to
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
578 ;; specify extra menu items that appear in the VC Status menu. This
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
579 ;; makes it possible to provide menu entries for functionality that
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
580 ;; is specific to a backend and which does not map to any of the VC
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
581 ;; generic concepts.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
582
87743
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
583 ;;; Todo:
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
584
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
585 ;; - vc-update/vc-merge should deal with VC systems that don't
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
586 ;; update/merge on a file basis, but on a whole repository basis.
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
587 ;;
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
588 ;; - deal with push/pull operations.
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
589 ;;
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
590 ;; - "snapshots" should be renamed to "branches", and thoroughly reworked.
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
591 ;;
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
592 ;; - when a file is in `conflict' state, turn on smerge-mode.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
593 ;;
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
594 ;; - figure out what to do with conflicts that are not caused by the
94569
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
595 ;; file contents, but by metadata or other causes. Example: File A
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
596 ;; gets renamed to B in one branch and to C in another and you merge
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
597 ;; the two branches. Or you locally add file FOO and then pull a
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
598 ;; change that also adds a new file FOO, ...
87743
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
599 ;;
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
600 ;; - add a generic mechanism for remembering the current branch names,
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
601 ;; display the branch name in the mode-line. Replace
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
602 ;; vc-cvs-sticky-tag with that.
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
603 ;;
94569
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
604 ;; - C-x v b does switch to a different backend, but the mode line is not
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
605 ;; adapted accordingly. Also, it considers RCS and CVS to be the same,
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
606 ;; which is pretty confusing.
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
607 ;;
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
608 ;; - vc-diff should be able to show the diff for all files in a
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
609 ;; changeset, especially for VC systems that have per repository
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
610 ;; version numbers. log-view should take advantage of this.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
611 ;;
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
612 ;; - make it easier to write logs. Maybe C-x 4 a should add to the log
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
613 ;; buffer, if one is present, instead of adding to the ChangeLog.
87743
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
614 ;;
94570
b288a2a8adc3 Append to another to-do comment.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94569
diff changeset
615 ;; - add a mechanism for editing the underlying VCS's list of files
b288a2a8adc3 Append to another to-do comment.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94569
diff changeset
616 ;; to be ignored, when that's possible.
87920
ee15683c53e8 Add TODO items.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87893
diff changeset
617 ;;
94488
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
618 ;; - When vc-next-action calls vc-checkin it could pre-fill the
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
619 ;; *VC-log* buffer with some obvious items: the list of files that
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
620 ;; were added, the list of files that were removed. If the diff is
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
621 ;; available, maybe it could even call something like
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
622 ;; `diff-add-change-log-entries-other-window' to create a detailed
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
623 ;; skeleton for the log...
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
624 ;;
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
625 ;; - a way to do repository wide log (instead of just per
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
626 ;; file/fileset) is needed. Doing it per directory might be enough...
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
627 ;;
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
628 ;; - most vc-dir backends need more work. They might need to
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
629 ;; provide custom headers, use the `extra' field and deal with all
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
630 ;; possible VC states.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
631 ;;
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
632 ;; - add function that calls vc-dir to `find-directory-functions'.
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
633 ;;
92091
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
634 ;; - vc-diff, vc-annotate, etc. need to deal better with unregistered
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
635 ;; files. Now that unregistered and ignored files are shown in
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
636 ;; vc-dired/vc-dir, it is possible that these commands are called
92091
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
637 ;; for unregistered/ignored files.
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
638 ;;
88030
f1f0d8b05c52 Add TODO item about not defaulting to RCS.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 88006
diff changeset
639 ;; - do not default to RCS anymore when the current directory is not
f1f0d8b05c52 Add TODO item about not defaulting to RCS.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 88006
diff changeset
640 ;; controlled by any VCS and the user does C-x v v
f1f0d8b05c52 Add TODO item about not defaulting to RCS.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 88006
diff changeset
641 ;;
94488
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
642 ;; - vc-create-snapshot and vc-retrieve-snapshot should update the
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
643 ;; buffers that might be visiting the affected files.
94519
44d4506fa470 Comment cleanup (no code change).
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94518
diff changeset
644 ;;
94520
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
645 ;; - Using multiple backends needs work. Given a CVS directory with some
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
646 ;; files checked into git (but not all), using C-x v l to get a log file
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
647 ;; from a file only present in git, and then typing RET on some log entry,
94518
7bd70b5b8bda Add items to TODO list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94510
diff changeset
648 ;; vc will bombs out because it wants to see the file being in CVS.
7bd70b5b8bda Add items to TODO list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94510
diff changeset
649 ;; Those logs should likely use a local variable to hardware the VC they
7bd70b5b8bda Add items to TODO list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94510
diff changeset
650 ;; are supposed to work with.
7bd70b5b8bda Add items to TODO list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94510
diff changeset
651 ;;
94569
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
652 ;; - Another important thing: merge all the status-like backend operations.
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
653 ;; We should remove dir-status, state, dir-state, and dir-status-files, and
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
654 ;; replace them with just `status' which takes a fileset and a continuation
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
655 ;; (like dir-status) and returns a buffer in which the process(es) are run
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
656 ;; (or nil if it worked synchronously). Hopefully we can define the old
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
657 ;; 4 operations in term of this one.
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
658 ;;
94536
4482905cde4e (vc-register): Change argument order so that the prefix
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94535
diff changeset
659 ;; - backends that care about vc-stay-local should try to take it into
4482905cde4e (vc-register): Change argument order so that the prefix
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94535
diff changeset
660 ;; account for vc-dir. Is this likely to be useful???
4482905cde4e (vc-register): Change argument order so that the prefix
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94535
diff changeset
661 ;;
94539
fee32a11924d Name change in preparation for ripping out vc-dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94538
diff changeset
662 ;; - vc-dir listing needs a footer generated when it's done to make it obvious
fee32a11924d Name change in preparation for ripping out vc-dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94538
diff changeset
663 ;; that it has finished.
fee32a11924d Name change in preparation for ripping out vc-dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94538
diff changeset
664 ;;
94569
c6ccf57e7e6e Added to-do items.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94563
diff changeset
665
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
666 ;;; Code:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
667
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
668 (require 'vc-hooks)
94571
61cca370b8f5 vc-dispatcher layer separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94570
diff changeset
669 (require 'vc-dispatcher)
92523
5da8fdae3248 (vc-status-tool-bar-map, vc-status-toggle-mark-file)
Jan Djärv <jan.h.d@swipnet.se>
parents: 92347
diff changeset
670 (require 'tool-bar)
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
671 (require 'ewoc)
92523
5da8fdae3248 (vc-status-tool-bar-map, vc-status-toggle-mark-file)
Jan Djärv <jan.h.d@swipnet.se>
parents: 92347
diff changeset
672
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
673 (eval-when-compile
94608
ce8579003c4f Require dired when compiling.
Andreas Schwab <schwab@suse.de>
parents: 94588
diff changeset
674 (require 'dired)
94635
92e5b9eb3f29 Fix a compilation warning.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94623
diff changeset
675 (require 'dired-aux)
94582
8393f040d26d Move VC-Dired code from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94579
diff changeset
676 (require 'cl))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
677
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
678 (unless (assoc 'vc-parent-buffer minor-mode-alist)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
679 (setq minor-mode-alist
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
680 (cons '(vc-parent-buffer vc-parent-buffer-name)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
681 minor-mode-alist)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
682
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
683 ;; General customization
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
684
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
685 (defgroup vc nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
686 "Version-control system in Emacs."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
687 :group 'tools)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
688
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
689 (defcustom vc-initial-comment nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
690 "If non-nil, prompt for initial comment when a file is registered."
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
691 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
692 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
693
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
694 (defcustom vc-default-init-revision "1.1"
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
695 "A string used as the default revision number when a new file is registered.
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
696 This can be overridden by giving a prefix argument to \\[vc-register]. This
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
697 can also be overridden by a particular VC backend."
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
698 :type 'string
21669
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
699 :group 'vc
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
700 :version "20.3")
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
701
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
702 (defcustom vc-checkin-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
703 "A string or list of strings specifying extra switches for checkin.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
704 These are passed to the checkin program by \\[vc-checkin]."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
705 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
706 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
707 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
708 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
709 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
710 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
711
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
712 (defcustom vc-checkout-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
713 "A string or list of strings specifying extra switches for checkout.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
714 These are passed to the checkout program by \\[vc-checkout]."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
715 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
716 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
717 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
718 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
719 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
720 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
721
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
722 (defcustom vc-register-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
723 "A string or list of strings; extra switches for registering a file.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
724 These are passed to the checkin program by \\[vc-register]."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
725 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
726 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
727 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
728 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
729 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
730 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
731
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
732 (defcustom vc-diff-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
733 "A string or list of strings specifying switches for diff under VC.
40181
55d912b5d0cc (vc-diff-switches): Doc rewritten.
André Spiegel <spiegel@gnu.org>
parents: 40170
diff changeset
734 When running diff under a given BACKEND, VC concatenates the values of
55d912b5d0cc (vc-diff-switches): Doc rewritten.
André Spiegel <spiegel@gnu.org>
parents: 40170
diff changeset
735 `diff-switches', `vc-diff-switches', and `vc-BACKEND-diff-switches' to
55d912b5d0cc (vc-diff-switches): Doc rewritten.
André Spiegel <spiegel@gnu.org>
parents: 40170
diff changeset
736 get the switches for that command. Thus, `vc-diff-switches' should
55d912b5d0cc (vc-diff-switches): Doc rewritten.
André Spiegel <spiegel@gnu.org>
parents: 40170
diff changeset
737 contain switches that are specific to version control, but not
55d912b5d0cc (vc-diff-switches): Doc rewritten.
André Spiegel <spiegel@gnu.org>
parents: 40170
diff changeset
738 specific to any particular backend."
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
739 :type '(choice (const :tag "None" nil)
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
740 (string :tag "Argument String")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
741 (repeat :tag "Argument List"
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
742 :value ("")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
743 string))
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
744 :group 'vc
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
745 :version "21.1")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
746
71446
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
747 (defcustom vc-diff-knows-L nil
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
748 "*Indicates whether diff understands the -L option.
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
749 The value is either `yes', `no', or nil. If it is nil, VC tries
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
750 to use -L and sets this variable to remember whether it worked."
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
751 :type '(choice (const :tag "Work out" nil) (const yes) (const no))
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
752 :group 'vc)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
753
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
754 (defcustom vc-allow-async-revert nil
81957
8f9991bf3b41 Generalize stay-local-p to operatre on lists of files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81923
diff changeset
755 "Specifies whether the diff during \\[vc-revert] may be asynchronous.
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
756 Enabling this option means that you can confirm a revert operation even
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
757 if the local changes in the file have not been found and displayed yet."
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
758 :type '(choice (const :tag "No" nil)
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
759 (const :tag "Yes" t))
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
760 :group 'vc
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59442
diff changeset
761 :version "22.1")
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
762
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
763 ;;;###autoload
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
764 (defcustom vc-checkout-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
765 "Normal hook (list of functions) run after checking out a file.
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
766 See `run-hooks'."
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
767 :type 'hook
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
768 :group 'vc
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
769 :version "21.1")
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
770
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
771 (defcustom vc-annotate-display-mode 'fullscale
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
772 "Which mode to color the output of \\[vc-annotate] with by default."
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
773 :type '(choice (const :tag "By Color Map Range" nil)
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
774 (const :tag "Scale to Oldest" scale)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
775 (const :tag "Scale Oldest->Newest" fullscale)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
776 (number :tag "Specify Fractional Number of Days"
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
777 :value "20.5"))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
778 :group 'vc)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
779
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
780 ;;;###autoload
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
781 (defcustom vc-checkin-hook nil
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
782 "Normal hook (list of functions) run after commit or file checkin.
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
783 See also `log-edit-done-hook'."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
784 :type 'hook
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
785 :options '(log-edit-comment-to-change-log)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
786 :group 'vc)
2705
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
787
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
788 ;;;###autoload
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
789 (defcustom vc-before-checkin-hook nil
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
790 "Normal hook (list of functions) run before a commit or a file checkin.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
791 See `run-hooks'."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
792 :type 'hook
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
793 :group 'vc)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
794
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
795 ;; Annotate customization
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
796 (defcustom vc-annotate-color-map
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
797 (if (and (tty-display-color-p) (<= (display-color-cells) 8))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
798 ;; A custom sorted TTY colormap
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
799 (let* ((colors
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
800 (sort
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
801 (delq nil
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
802 (mapcar (lambda (x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
803 (if (not (or
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
804 (string-equal (car x) "white")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
805 (string-equal (car x) "black") ))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
806 (car x)))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
807 (tty-color-alist)))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
808 (lambda (a b)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
809 (cond
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
810 ((or (string-equal a "red") (string-equal b "blue")) t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
811 ((or (string-equal b "red") (string-equal a "blue")) nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
812 ((string-equal a "yellow") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
813 ((string-equal b "yellow") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
814 ((string-equal a "cyan") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
815 ((string-equal b "cyan") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
816 ((string-equal a "green") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
817 ((string-equal b "green") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
818 ((string-equal a "magenta") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
819 ((string-equal b "magenta") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
820 (t (string< a b))))))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
821 (date 20.)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
822 (delta (/ (- 360. date) (1- (length colors)))))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
823 (mapcar (lambda (x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
824 (prog1
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
825 (cons date x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
826 (setq date (+ date delta)))) colors))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
827 ;; Normal colormap: hue stepped from 0-240deg, value=1., saturation=0.75
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
828 '(( 20. . "#FF3F3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
829 ( 40. . "#FF6C3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
830 ( 60. . "#FF993F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
831 ( 80. . "#FFC63F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
832 (100. . "#FFF33F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
833 (120. . "#DDFF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
834 (140. . "#B0FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
835 (160. . "#83FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
836 (180. . "#56FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
837 (200. . "#3FFF56")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
838 (220. . "#3FFF83")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
839 (240. . "#3FFFB0")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
840 (260. . "#3FFFDD")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
841 (280. . "#3FF3FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
842 (300. . "#3FC6FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
843 (320. . "#3F99FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
844 (340. . "#3F6CFF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
845 (360. . "#3F3FFF")))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
846 "Association list of age versus color, for \\[vc-annotate].
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
847 Ages are given in units of fractional days. Default is eighteen
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
848 steps using a twenty day increment, from red to blue. For TTY
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
849 displays with 8 or fewer colors, the default is red to blue with
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
850 all other colors between (excluding black and white)."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
851 :type 'alist
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
852 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
853
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
854 (defcustom vc-annotate-very-old-color "#3F3FFF"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
855 "Color for lines older than the current color range in \\[vc-annotate]]."
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
856 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
857 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
858
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
859 (defcustom vc-annotate-background "black"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
860 "Background color for \\[vc-annotate].
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
861 Default color is used if nil."
93055
e1ae2150f28e (vc-annotate-background): Fix custom type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93035
diff changeset
862 :type '(choice (const :tag "Default background" nil) (color))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
863 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
864
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
865 (defcustom vc-annotate-menu-elements '(2 0.5 0.1 0.01)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
866 "Menu elements for the mode-specific menu of VC-Annotate mode.
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
867 List of factors, used to expand/compress the time scale. See `vc-annotate'."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
868 :type '(repeat number)
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
869 :group 'vc)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
870
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
871 (defvar vc-annotate-mode-map
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
872 (let ((m (make-sparse-keymap)))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
873 (define-key m "A" 'vc-annotate-revision-previous-to-line)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
874 (define-key m "D" 'vc-annotate-show-diff-revision-at-line)
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
875 (define-key m "f" 'vc-annotate-find-revision-at-line)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
876 (define-key m "J" 'vc-annotate-revision-at-line)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
877 (define-key m "L" 'vc-annotate-show-log-revision-at-line)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
878 (define-key m "N" 'vc-annotate-next-revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
879 (define-key m "P" 'vc-annotate-prev-revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
880 (define-key m "W" 'vc-annotate-working-revision)
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
881 (define-key m "V" 'vc-annotate-toggle-annotation-visibility)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
882 m)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
883 "Local keymap used for VC-Annotate mode.")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
884
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
885 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
886
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
887 (defcustom vc-static-header-alist
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
888 '(("\\.c\\'" .
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
889 "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n#endif /* lint */\n"))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
890 "*Associate static header string templates with file types.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
891 A \%s in the template is replaced with the first string associated with
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
892 the file's version control type in `vc-header-alist'."
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
893 :type '(repeat (cons :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
894 (regexp :tag "File Type")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
895 (string :tag "Header String")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
896 :group 'vc)
2226
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
897
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
898 (defcustom vc-comment-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
899 '((nroff-mode ".\\\"" ""))
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
900 "*Special comment delimiters for generating VC headers.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
901 Add an entry in this list if you need to override the normal `comment-start'
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
902 and `comment-end' variables. This will only be necessary if the mode language
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
903 is sensitive to blank lines."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
904 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
905 (symbol :tag "Mode")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
906 (string :tag "Comment Start")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
907 (string :tag "Comment End")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
908 :group 'vc)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
909
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
910 (defcustom vc-checkout-carefully (= (user-uid) 0)
49619
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
911 "*Non-nil means be extra-careful in checkout.
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
912 Verify that the file really is not locked
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
913 and that its contents match what the master file says."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
914 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
915 :group 'vc)
49619
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
916 (make-obsolete-variable 'vc-checkout-carefully
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
917 "the corresponding checks are always done now."
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
918 "21.1")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
919
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
920
94576
7de38dedf0a6 Move the command-closure machinery to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94573
diff changeset
921 ;; Variables users don't need to see
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
922
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
923 (defvar vc-disable-async-diff nil
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
924 "VC sets this to t locally to disable some async diff operations.
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
925 Backends that offer asynchronous diffs should respect this variable
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
926 in their implementation of vc-BACKEND-diff.")
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
927
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
928 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
929
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
930 (defun vc-clear-context ()
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
931 "Clear all cached file properties."
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
932 (interactive)
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
933 (fillarray vc-file-prop-obarray 0))
2580
a66f7ed76416 (vc-diff): Get proper error message when you run this with no prefix
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2558
diff changeset
934
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
935 (defmacro with-vc-properties (files form settings)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
936 "Execute FORM, then maybe set per-file properties for FILES.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
937 SETTINGS is an association list of property/value pairs. After
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
938 executing FORM, set those properties from SETTINGS that have not yet
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
939 been updated to their corresponding values."
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
940 (declare (debug t))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
941 `(let ((vc-touched-properties (list t)))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
942 ,form
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
943 (dolist (file ,files)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
944 (dolist (setting ,settings)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
945 (let ((property (car setting)))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
946 (unless (memq property vc-touched-properties)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
947 (put (intern file vc-file-prop-obarray)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
948 property (cdr setting))))))))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
949
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
950 ;; Two macros for elisp programming
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
951
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
952 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
953 (defmacro with-vc-file (file comment &rest body)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
954 "Check out a writable copy of FILE if necessary, then execute BODY.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
955 Check in FILE with COMMENT (a string) after BODY has been executed.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
956 FILE is passed through `expand-file-name'; BODY executed within
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
957 `save-excursion'. If FILE is not under version control, or you are
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
958 using a locking version-control system and the file is locked by
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
959 somebody else, signal error."
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
960 (declare (debug t) (indent 2))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
961 (let ((filevar (make-symbol "file")))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
962 `(let ((,filevar (expand-file-name ,file)))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
963 (or (vc-backend ,filevar)
53874
978c77351d66 (with-vc-file): Fix unsafe uses of error.
Andreas Schwab <schwab@suse.de>
parents: 53839
diff changeset
964 (error "File not under version control: `%s'" file))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
965 (unless (vc-editable-p ,filevar)
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
966 (let ((state (vc-state ,filevar)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
967 (if (stringp state)
53874
978c77351d66 (with-vc-file): Fix unsafe uses of error.
Andreas Schwab <schwab@suse.de>
parents: 53839
diff changeset
968 (error "`%s' is locking `%s'" state ,filevar)
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
969 (vc-checkout ,filevar t))))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
970 (save-excursion
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
971 ,@body)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
972 (vc-checkin (list ,filevar) nil ,comment))))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
973
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
974 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
975 (defmacro edit-vc-file (file comment &rest body)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
976 "Edit FILE under version control, executing body.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
977 Checkin with COMMENT after executing BODY.
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
978 This macro uses `with-vc-file', passing args to it.
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
979 However, before executing BODY, find FILE, and after BODY, save buffer."
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
980 (declare (debug t) (indent 2))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
981 (let ((filevar (make-symbol "file")))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
982 `(let ((,filevar (expand-file-name ,file)))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
983 (with-vc-file
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
984 ,filevar ,comment
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
985 (set-buffer (find-file-noselect ,filevar))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
986 ,@body
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
987 (save-buffer)))))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
988
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
989 ;;; Code for deducing what fileset and backend to assume
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
990
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
991 (defun vc-responsible-backend (file &optional register)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
992 "Return the name of a backend system that is responsible for FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
993 The optional argument REGISTER means that a backend suitable for
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
994 registration should be found.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
995
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
996 If REGISTER is nil, then if FILE is already registered, return the
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
997 backend of FILE. If FILE is not registered, or a directory, then the
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
998 first backend in `vc-handled-backends' that declares itself
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
999 responsible for FILE is returned. If no backend declares itself
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1000 responsible, return the first backend.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1001
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1002 If REGISTER is non-nil, return the first responsible backend under
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1003 which FILE is not yet registered. If there is no such backend, return
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1004 the first backend under which FILE is not yet registered, but could
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1005 be registered."
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1006 (when (not vc-handled-backends)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1007 (error "No handled backends"))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1008 (or (and (not (file-directory-p file)) (not register) (vc-backend file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1009 (catch 'found
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1010 ;; First try: find a responsible backend. If this is for registration,
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1011 ;; it must be a backend under which FILE is not yet registered.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1012 (dolist (backend vc-handled-backends)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1013 (and (or (not register)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1014 (not (vc-call-backend backend 'registered file)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1015 (vc-call-backend backend 'responsible-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1016 (throw 'found backend)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1017 ;; no responsible backend
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1018 (if (not register)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1019 ;; if this is not for registration, the first backend must do
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1020 (car vc-handled-backends)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1021 ;; for registration, we need to find a new backend that
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1022 ;; could register FILE
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1023 (dolist (backend vc-handled-backends)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1024 (and (not (vc-call-backend backend 'registered file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1025 (vc-call-backend backend 'could-register file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1026 (throw 'found backend)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1027 (error "No backend that could register")))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1028
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1029 (defun vc-expand-dirs (file-or-dir-list)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1030 "Expands directories in a file list specification.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1031 Only files already under version control are noticed."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1032 ;; FIXME: Kill this function.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1033 (let ((flattened '()))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1034 (dolist (node file-or-dir-list)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1035 (vc-file-tree-walk
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1036 node (lambda (f) (when (vc-backend f) (push f flattened)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1037 (nreverse flattened)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1038
94488
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
1039 (defun vc-deduce-fileset (&optional allow-directory-wildcard allow-unregistered
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
1040 include-files-not-directories)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1041 "Deduce a set of files and a backend to which to apply an operation.
94650
276c5ce56449 Move the fileset staleness check from vc-next-action to
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94647
diff changeset
1042 Return (BACKEND . FILESET)."
94647
d0547efd97db More policy-mechanism separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94638
diff changeset
1043 (let* ((fileset (vc-dispatcher-selection-set
d0547efd97db More policy-mechanism separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94638
diff changeset
1044 #'vc-registered
d0547efd97db More policy-mechanism separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94638
diff changeset
1045 allow-directory-wildcard
d0547efd97db More policy-mechanism separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94638
diff changeset
1046 allow-unregistered
d0547efd97db More policy-mechanism separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94638
diff changeset
1047 include-files-not-directories))
d0547efd97db More policy-mechanism separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94638
diff changeset
1048 (backend (vc-backend (car fileset))))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1049 ;; All members of the fileset must have the same backend
94647
d0547efd97db More policy-mechanism separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94638
diff changeset
1050 (dolist (f (cdr fileset))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1051 (unless (eq (vc-backend f) backend)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1052 (error "All members of a fileset must be under the same version-control system.")))
94647
d0547efd97db More policy-mechanism separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94638
diff changeset
1053 (cons backend fileset)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1054
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1055 (defun vc-ensure-vc-buffer ()
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1056 "Make sure that the current buffer visits a version-controlled file."
87675
e4a11c2d5016 * vc.el (vc-status-headers): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87601
diff changeset
1057 (cond
e4a11c2d5016 * vc.el (vc-status-headers): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87601
diff changeset
1058 (vc-dired-mode
e4a11c2d5016 * vc.el (vc-status-headers): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87601
diff changeset
1059 (set-buffer (find-file-noselect (dired-get-filename))))
94106
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
1060 ((eq major-mode 'vc-dir-mode)
9294e3bd7d46 Rename vc-status to vc-dir and the vc-status var to vc-ewoc.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94095
diff changeset
1061 (set-buffer (find-file-noselect (vc-dir-current-file))))
87675
e4a11c2d5016 * vc.el (vc-status-headers): Rename from
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87601
diff changeset
1062 (t
87337
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
1063 (while (and vc-parent-buffer
87601
2425b933f90a (vc-ensure-vc-buffer): Check liveness of vc-parent-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87599
diff changeset
1064 (buffer-live-p vc-parent-buffer)
87337
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
1065 ;; Avoid infinite looping when vc-parent-buffer and
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
1066 ;; current buffer are the same buffer.
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
1067 (not (eq vc-parent-buffer (current-buffer))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1068 (set-buffer vc-parent-buffer))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1069 (if (not buffer-file-name)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1070 (error "Buffer %s is not associated with a file" (buffer-name))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1071 (unless (vc-backend buffer-file-name)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1072 (error "File %s is not under version control" buffer-file-name))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1073
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1074 ;;; Support for the C-x v v command.
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1075 ;; This is where all the single-file-oriented code from before the fileset
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1076 ;; rewrite lives.
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1077
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1078 (defsubst vc-editable-p (file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1079 "Return non-nil if FILE can be edited."
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1080 (let ((backend (vc-backend file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1081 (and backend
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
1082 (or (eq (vc-checkout-model backend (list file)) 'implicit)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1083 (memq (vc-state file) '(edited needs-merge conflict))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1084
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1085 (defun vc-compatible-state (p q)
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1086 "Controls which states can be in the same commit."
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1087 (or
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1088 (eq p q)
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1089 (and (member p '(edited added removed)) (member q '(edited added removed)))))
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1090
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1091 ;; Here's the major entry point.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1092
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1093 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1094 (defun vc-next-action (verbose)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1095 "Do the next logical version control operation on the current fileset.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1096 This requires that all files in the fileset be in the same state.
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1097
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1098 For locking systems:
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1099 If every file is not already registered, this registers each for version
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1100 control.
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1101 If every file is registered and not locked by anyone, this checks out
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1102 a writable and locked file of each ready for editing.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1103 If every file is checked out and locked by the calling user, this
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1104 first checks to see if each file has changed since checkout. If not,
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1105 it performs a revert on that file.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1106 If every file has been changed, this pops up a buffer for entry
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1107 of a log message; when the message has been entered, it checks in the
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1108 resulting changes along with the log message as change commentary. If
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1109 the variable `vc-keep-workfiles' is non-nil (which is its default), a
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1110 read-only copy of each changed file is left in place afterwards.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1111 If the affected file is registered and locked by someone else, you are
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1112 given the option to steal the lock(s).
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1113
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1114 For merging systems:
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1115 If every file is not already registered, this registers each one for version
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1116 control. This does an add, but not a commit.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1117 If every file is added but not committed, each one is committed.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1118 If every working file is changed, but the corresponding repository file is
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1119 unchanged, this pops up a buffer for entry of a log message; when the
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1120 message has been entered, it checks in the resulting changes along
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1121 with the logmessage as change commentary. A writable file is retained.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1122 If the repository file is changed, you are asked if you want to
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1123 merge in the changes into your working copy."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1124 (interactive "P")
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1125 (let* ((vc-fileset (vc-deduce-fileset nil t))
94488
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
1126 (vc-fileset-only-files (vc-deduce-fileset nil t t))
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
1127 (only-files (cdr vc-fileset-only-files))
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1128 (backend (car vc-fileset))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1129 (files (cdr vc-fileset))
94488
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
1130 (state (vc-state (car only-files)))
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1131 (model (vc-checkout-model backend files))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1132 revision)
94478
618e87ee72c0 (vc-dir-mode-hook): Add normal hook.
Sam Steingold <sds@gnu.org>
parents: 94418
diff changeset
1133
94070
df7b21ec7a29 (vc-status-kill-query): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94059
diff changeset
1134 ;; Verify that the fileset is homogeneous
94488
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
1135 (dolist (file (cdr only-files))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1136 ;; Ignore directories, they are compatible with anything.
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1137 (unless (file-directory-p file)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1138 (unless (vc-compatible-state (vc-state file) state)
94535
c0d96bdee441 More informative message when a fileset is in a mixed state.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94534
diff changeset
1139 (error "%s:%s clashes with %s:%s"
c0d96bdee441 More informative message when a fileset is in a mixed state.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94534
diff changeset
1140 file (vc-state file) (car files) state))
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
1141 (unless (eq (vc-checkout-model backend (list file)) model)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1142 (error "Fileset has mixed checkout models"))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1143 ;; Do the right thing
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1144 (cond
94538
dc1cd59ce955 Better error message on missing files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94536
diff changeset
1145 ((eq state 'missing)
dc1cd59ce955 Better error message on missing files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94536
diff changeset
1146 (error "Fileset files are missing, so cannot be operated on."))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1147 ;; Files aren't registered
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1148 ((or (eq state 'unregistered)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1149 (eq state 'ignored))
94536
4482905cde4e (vc-register): Change argument order so that the prefix
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94535
diff changeset
1150 (mapc (lambda (arg) (vc-register nil arg)) files))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1151 ;; Files are up-to-date, or need a merge and user specified a revision
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1152 ((or (eq state 'up-to-date) (and verbose (eq state 'needs-update)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1153 (cond
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1154 (verbose
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1155 ;; go to a different revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1156 (setq revision (read-string "Branch, revision, or backend to move to: "))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1157 (let ((vsym (intern-soft (upcase revision))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1158 (if (member vsym vc-handled-backends)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1159 (dolist (file files) (vc-transfer-file file vsym))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1160 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1161 (vc-checkout file (eq model 'implicit) revision)))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1162 ((not (eq model 'implicit))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1163 ;; check the files out
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1164 (dolist (file files) (vc-checkout file t)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1165 (t
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1166 ;; do nothing
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1167 (message "Fileset is up-to-date"))))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1168 ;; Files have local changes
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1169 ((vc-compatible-state state 'edited)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1170 (let ((ready-for-commit files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1171 ;; If files are edited but read-only, give user a chance to correct
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1172 (dolist (file files)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1173 (unless (file-writable-p file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1174 ;; Make the file+buffer read-write.
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1175 (unless (y-or-n-p (format "%s is edited but read-only; make it writable and continue?" file))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1176 (error "Aborted"))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1177 (set-file-modes file (logior (file-modes file) 128))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1178 (let ((visited (get-file-buffer file)))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1179 (when visited
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1180 (with-current-buffer visited
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1181 (toggle-read-only -1))))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1182 ;; Allow user to revert files with no changes
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1183 (save-excursion
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1184 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1185 (let ((visited (get-file-buffer file)))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1186 ;; For files with locking, if the file does not contain
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1187 ;; any changes, just let go of the lock, i.e. revert.
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1188 (when (and (not (eq model 'implicit))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1189 (vc-workfile-unchanged-p file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1190 ;; If buffer is modified, that means the user just
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1191 ;; said no to saving it; in that case, don't revert,
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1192 ;; because the user might intend to save after
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1193 ;; finishing the log entry and committing.
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1194 (not (and visited (buffer-modified-p))))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1195 (vc-revert-file file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1196 (delete file ready-for-commit)))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1197 ;; Remaining files need to be committed
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1198 (if (not ready-for-commit)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1199 (message "No files remain to be committed")
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1200 (if (not verbose)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1201 (vc-checkin ready-for-commit)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1202 (progn
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1203 (setq revision (read-string "New revision or backend: "))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1204 (let ((vsym (intern (upcase revision))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1205 (if (member vsym vc-handled-backends)
87938
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1206 (dolist (file files) (vc-transfer-file file vsym))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1207 (vc-checkin ready-for-commit revision))))))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1208 ;; locked by somebody else (locking VCSes only)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1209 ((stringp state)
87938
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1210 ;; In the old days, we computed the revision once and used it on
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1211 ;; the single file. Then, for the 2007-2008 fileset rewrite, we
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1212 ;; computed the revision once (incorrectly, using a free var) and
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1213 ;; used it on all files. To fix the free var bug, we can either
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1214 ;; use `(car files)' or do what we do here: distribute the
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1215 ;; revision computation among `files'. Although this may be
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1216 ;; tedious for those backends where a "revision" is a trans-file
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1217 ;; concept, it is nonetheless correct for both those and (more
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1218 ;; importantly) for those where "revision" is a per-file concept.
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1219 ;; If the intersection of the former group and "locking VCSes" is
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1220 ;; non-empty [I vaguely doubt it --ttn], we can reinstate the
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1221 ;; pre-computation approach of yore.
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1222 (dolist (file files)
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1223 (vc-steal-lock
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1224 file (if verbose
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1225 (read-string (format "%s revision to steal: " file))
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1226 (vc-working-revision file))
bcbe422dacdd (vc-next-action): Fix two instances of "free-var file" bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87931
diff changeset
1227 state)))
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1228 ;; conflict
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1229 ((eq state 'conflict)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1230 (vc-mark-resolved files))
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1231 ;; needs-update
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1232 ((eq state 'needs-update)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1233 (dolist (file files)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1234 (if (yes-or-no-p (format
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1235 "%s is not up-to-date. Get latest revision? "
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1236 (file-name-nondirectory file)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1237 (vc-checkout file (eq model 'implicit) t)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1238 (when (and (not (eq model 'implicit))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1239 (yes-or-no-p "Lock this revision? "))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1240 (vc-checkout file t)))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1241 ;; needs-merge
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1242 ((eq state 'needs-merge)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1243 (dolist (file files)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1244 (when (yes-or-no-p (format
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1245 "%s is not up-to-date. Merge in changes now? "
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1246 (file-name-nondirectory file)))
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1247 (vc-maybe-resolve-conflicts file (vc-call merge-news file)))))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1248
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1249 ;; unlocked-changes
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1250 ((eq state 'unlocked-changes)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1251 (dolist (file files)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1252 (when (not (equal buffer-file-name file))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1253 (find-file-other-window file))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1254 (if (save-window-excursion
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1255 (vc-diff-internal nil (cons (car vc-fileset) (list file))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1256 (vc-working-revision file) nil)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1257 (goto-char (point-min))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1258 (let ((inhibit-read-only t))
41561
cfae9c0a0035 (vc-next-action-on-file): Use insert instead of insert-string.
Pavel Janík <Pavel@Janik.cz>
parents: 41556
diff changeset
1259 (insert
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1260 (format "Changes to %s since last lock:\n\n" file)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1261 (not (beep))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1262 (yes-or-no-p (concat "File has unlocked changes. "
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1263 "Claim lock retaining changes? ")))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1264 (progn (vc-call steal-lock file)
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1265 (clear-visited-file-modtime)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1266 ;; Must clear any headers here because they wouldn't
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1267 ;; show that the file is locked now.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1268 (vc-clear-headers file)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1269 (write-file buffer-file-name)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1270 (vc-mode-line file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1271 (if (not (yes-or-no-p
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1272 "Revert to checked-in revision, instead? "))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1273 (error "Checkout aborted")
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1274 (vc-revert-buffer-internal t t)
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1275 (vc-checkout file t)))))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1276 ;; Unknown fileset state
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1277 (t
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1278 (error "Fileset is in an unknown state %s" state)))))
2490
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1279
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1280 (defun vc-create-repo (backend)
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1281 "Create an empty repository in the current directory."
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1282 (interactive
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1283 (list
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1284 (intern
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1285 (upcase
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1286 (completing-read
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1287 "Create repository for: "
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1288 (mapcar (lambda (b) (list (downcase (symbol-name b)))) vc-handled-backends)
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1289 nil t)))))
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1290 (vc-call-backend backend 'create-repo))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1291
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1292 ;;;###autoload
94536
4482905cde4e (vc-register): Change argument order so that the prefix
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94535
diff changeset
1293 (defun vc-register (&optional set-revision fname comment)
86055
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1294 "Register into a version control system.
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1295 If FNAME is given register that file, otherwise register the current file.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1296 With prefix argument SET-REVISION, allow user to specify initial revision
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1297 level. If COMMENT is present, use that as an initial comment.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1298
31520
f9d2d484e1e2 * vc-sccs.el (vc-sccs-register):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31435
diff changeset
1299 The version control system to use is found by cycling through the list
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1300 `vc-handled-backends'. The first backend in that list which declares
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1301 itself responsible for the file (usually because other files in that
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1302 directory are already registered under that backend) will be used to
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1303 register the file. If no backend declares itself responsible, the
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1304 first backend that could register the file is used."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1305 (interactive "P")
86055
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1306 (when (and (null fname) (null buffer-file-name)) (error "No visited file"))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1307
87319
ac2e9c3d2b02 bname needs to be a buffer name, not a filename.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87147
diff changeset
1308 (let ((bname (if fname (get-file-buffer fname) (current-buffer))))
86055
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1309 (unless fname (setq fname buffer-file-name))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1310 (when (vc-backend fname)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1311 (if (vc-registered fname)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1312 (error "This file is already registered")
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1313 (unless (y-or-n-p "Previous master file has vanished. Make a new one? ")
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1314 (error "Aborted"))))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1315 ;; Watch out for new buffers of size 0: the corresponding file
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1316 ;; does not exist yet, even though buffer-modified-p is nil.
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1317 (when bname
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1318 (with-current-buffer bname
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1319 (when (and (not (buffer-modified-p))
86055
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1320 (zerop (buffer-size))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1321 (not (file-exists-p buffer-file-name)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1322 (set-buffer-modified-p t))
86055
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1323 (vc-buffer-sync)))
94576
7de38dedf0a6 Move the command-closure machinery to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94573
diff changeset
1324 (vc-start-logentry (list fname)
86055
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1325 (if set-revision
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1326 (read-string (format "Initial revision level for %s: "
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1327 fname))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1328 (vc-call-backend (vc-responsible-backend fname)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1329 'init-revision))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1330 (or comment (not vc-initial-comment))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1331 nil
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1332 "Enter initial comment."
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1333 (lambda (files rev comment)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1334 (dolist (file files)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1335 (message "Registering %s... " file)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1336 (let ((backend (vc-responsible-backend file t)))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1337 (vc-file-clearprops file)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1338 (vc-call-backend backend 'register (list file) rev comment)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1339 (vc-file-setprop file 'vc-backend backend)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1340 (unless vc-make-backup-files
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1341 (make-local-variable 'backup-inhibited)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1342 (setq backup-inhibited t)))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1343 (message "Registering %s... done" file))))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1344
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1345 (defun vc-register-with (backend)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1346 "Register the current file with a specified back end."
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1347 (interactive "SBackend: ")
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1348 (when (not (member backend vc-handled-backends))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1349 (error "Unknown back end."))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1350 (let ((vc-handled-backends (list backend)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1351 (call-interactively 'vc-register)))
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1352
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1353 (defun vc-checkout (file &optional writable rev)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1354 "Retrieve a copy of the revision REV of FILE.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1355 If WRITABLE is non-nil, make sure the retrieved file is writable.
38608
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1356 REV defaults to the latest revision.
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1357
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1358 After check-out, runs the normal hook `vc-checkout-hook'."
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1359 (and writable
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1360 (not rev)
32748
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
1361 (vc-call make-version-backups-p file)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1362 (vc-up-to-date-p file)
32748
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
1363 (vc-make-version-backup file))
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1364 (let ((backend (vc-backend file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1365 (with-vc-properties (list file)
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1366 (condition-case err
94495
027a58c5f305 (vc-checkout): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94488
diff changeset
1367 (vc-call-backend backend 'checkout file writable rev)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1368 (file-error
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1369 ;; Maybe the backend is not installed ;-(
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1370 (when writable
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1371 (let ((buf (get-file-buffer file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1372 (when buf (with-current-buffer buf (toggle-read-only -1)))))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1373 (signal (car err) (cdr err))))
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
1374 `((vc-state . ,(if (or (eq (vc-checkout-model backend (list file)) 'implicit)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1375 (not writable))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1376 (if (vc-call latest-on-branch-p file)
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1377 'up-to-date
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1378 'needs-update)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1379 'edited))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1380 (vc-checkout-time . ,(nth 5 (file-attributes file))))))
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1381 (vc-resynch-buffer file t t)
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1382 (run-hooks 'vc-checkout-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1383
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1384 (defun vc-mark-resolved (files)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1385 (with-vc-properties
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1386 files
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1387 (vc-call mark-resolved files)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1388 ;; XXX: Is this TRTD? Might not be.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1389 `((vc-state . edited))))
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1390
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1391 (defun vc-steal-lock (file rev owner)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1392 "Steal the lock on FILE."
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1393 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1394 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1395 (setq file-description (format "%s:%s" file rev))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1396 (setq file-description file))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1397 (when (not (yes-or-no-p (format "Steal the lock on %s from %s? "
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1398 file-description owner)))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1399 (error "Steal canceled"))
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1400 (message "Stealing lock on %s..." file)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1401 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1402 (list file)
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1403 (vc-call steal-lock file rev)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1404 `((vc-state . edited)))
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1405 (vc-resynch-buffer file t t)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1406 (message "Stealing lock on %s...done" file)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1407 ;; Write mail after actually stealing, because if the stealing
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1408 ;; goes wrong, we don't want to send any mail.
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1409 (compose-mail owner (format "Stolen lock on %s" file-description))
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1410 (setq default-directory (expand-file-name "~/"))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1411 (goto-char (point-max))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1412 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1413 (format "I stole the lock on %s, " file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1414 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1415 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1416 (message "Please explain why you stole the lock. Type C-c C-c when done.")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1417
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1418 (defun vc-checkin (files &optional rev comment initial-contents)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1419 "Check in FILES.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1420 The optional argument REV may be a string specifying the new revision
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1421 level (if nil increment the current level). COMMENT is a comment
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1422 string; if omitted, a buffer is popped up to accept a comment. If
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1423 INITIAL-CONTENTS is non-nil, then COMMENT is used as the initial contents
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1424 of the log entry buffer.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1425
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1426 If `vc-keep-workfiles' is nil, FILE is deleted afterwards, provided
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1427 that the version control system supports this mode of operation.
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1428
94579
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1429 Runs the normal hooks `vc-before-checkin-hook' and `vc-checkin-hook'."
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1430 (when vc-before-checkin-hook
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1431 (run-hooks 'vc-before-checkin-hook))
94576
7de38dedf0a6 Move the command-closure machinery to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94573
diff changeset
1432 (vc-start-logentry
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1433 files rev comment initial-contents
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1434 "Enter a change comment."
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1435 (lambda (files rev comment)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1436 (message "Checking in %s..." (vc-delistify files))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1437 ;; "This log message intentionally left almost blank".
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1438 ;; RCS 5.7 gripes about white-space-only comments too.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1439 (or (and comment (string-match "[^\t\n ]" comment))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1440 (setq comment "*** empty log message ***"))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1441 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1442 files
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1443 ;; We used to change buffers to get local value of vc-checkin-switches,
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1444 ;; but 'the' local buffer is not a well-defined concept for filesets.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1445 (progn
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1446 (vc-call checkin files rev comment)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1447 (mapc 'vc-delete-automatic-version-backups files))
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1448 `((vc-state . up-to-date)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1449 (vc-checkout-time . ,(nth 5 (file-attributes file)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1450 (vc-working-revision . nil)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1451 (message "Checking in %s...done" (vc-delistify files)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1452 'vc-checkin-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1453
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1454 ;;; Additional entry points for examining version histories
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1455
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1456 ;; (defun vc-default-diff-tree (backend dir rev1 rev2)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1457 ;; "List differences for all registered files at and below DIR.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1458 ;; The meaning of REV1 and REV2 is the same as for `vc-revision-diff'."
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1459 ;; ;; This implementation does an explicit tree walk, and calls
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1460 ;; ;; vc-BACKEND-diff directly for each file. An optimization
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1461 ;; ;; would be to use `vc-diff-internal', so that diffs can be local,
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1462 ;; ;; and to call it only for files that are actually changed.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1463 ;; ;; However, this is expensive for some backends, and so it is left
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1464 ;; ;; to backend-specific implementations.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1465 ;; (setq default-directory dir)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1466 ;; (vc-file-tree-walk
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1467 ;; default-directory
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1468 ;; (lambda (f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1469 ;; (vc-exec-after
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1470 ;; `(let ((coding-system-for-read (vc-coding-system-for-diff ',f)))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1471 ;; (message "Looking at %s" ',f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1472 ;; (vc-call-backend ',(vc-backend f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1473 ;; 'diff (list ',f) ',rev1 ',rev2))))))
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1474
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1475 (defun vc-coding-system-for-diff (file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1476 "Return the coding system for reading diff output for FILE."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1477 (or coding-system-for-read
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1478 ;; if we already have this file open,
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1479 ;; use the buffer's coding system
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1480 (let ((buf (find-buffer-visiting file)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1481 (when buf (with-current-buffer buf
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1482 buffer-file-coding-system)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1483 ;; otherwise, try to find one based on the file name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1484 (car (find-operation-coding-system 'insert-file-contents file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1485 ;; and a final fallback
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1486 'undecided))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1487
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1488 (defun vc-switches (backend op)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1489 (let ((switches
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1490 (or (when backend
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1491 (let ((sym (vc-make-backend-sym
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1492 backend (intern (concat (symbol-name op)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1493 "-switches")))))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1494 (when (boundp sym) (symbol-value sym))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1495 (let ((sym (intern (format "vc-%s-switches" (symbol-name op)))))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1496 (when (boundp sym) (symbol-value sym)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1497 (cond
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1498 ((eq op 'diff) diff-switches)))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1499 (if (stringp switches) (list switches)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1500 ;; If not a list, return nil.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1501 ;; This is so we can set vc-diff-switches to t to override
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1502 ;; any switches in diff-switches.
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1503 (when (listp switches) switches))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1504
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1505 ;; Old def for compatibility with Emacs-21.[123].
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1506 (defmacro vc-diff-switches-list (backend) `(vc-switches ',backend 'diff))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1507 (make-obsolete 'vc-diff-switches-list 'vc-switches "22.1")
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1508
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1509 (defun vc-diff-finish (buffer messages)
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1510 ;; The empty sync output case has already been handled, so the only
87931
9f4909ced989 Handle dead buffers in async filters/sentinels.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87930
diff changeset
1511 ;; possibility of an empty output is for an async process.
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1512 (when (buffer-live-p buffer)
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1513 (let ((window (get-buffer-window buffer t))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1514 (emptyp (zerop (buffer-size buffer))))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1515 (with-current-buffer buffer
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1516 (and messages emptyp
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1517 (let ((inhibit-read-only t))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1518 (insert (cdr messages) ".\n")
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1519 (message "%s" (cdr messages))))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1520 (goto-char (point-min))
87931
9f4909ced989 Handle dead buffers in async filters/sentinels.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87930
diff changeset
1521 (when window
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1522 (shrink-window-if-larger-than-buffer window)))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1523 (when (and messages (not emptyp))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1524 (message "%sdone" (car messages))))))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1525
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1526 (defvar vc-diff-added-files nil
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1527 "If non-nil, diff added files by comparing them to /dev/null.")
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1528
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1529 (defun vc-diff-internal (async vc-fileset rev1 rev2 &optional verbose)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1530 "Report diffs between two revisions of a fileset.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1531 Diff output goes to the *vc-diff* buffer. The function
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1532 returns t if the buffer had changes, nil otherwise."
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1533 (let* ((files (cdr vc-fileset))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1534 (messages (cons (format "Finding changes in %s..."
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1535 (vc-delistify files))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1536 (format "No changes between %s and %s"
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1537 (or rev1 "working revision")
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1538 (or rev2 "workfile"))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1539 ;; Set coding system based on the first file. It's a kluge,
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1540 ;; but the only way to set it for each file included would
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1541 ;; be to call the back end separately for each file.
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1542 (coding-system-for-read
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1543 (if files (vc-coding-system-for-diff (car files)) 'undecided)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1544 (vc-setup-buffer "*vc-diff*")
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1545 (message "%s" (car messages))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1546 ;; Many backends don't handle well the case of a file that has been
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1547 ;; added but not yet committed to the repo (notably CVS and Subversion).
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1548 ;; Do that work here so the backends don't have to futz with it. --ESR
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1549 ;;
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1550 ;; Actually most backends (including CVS) have options to control the
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1551 ;; behavior since which one is better depends on the user and on the
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1552 ;; situation). Worse yet: this code does not handle the case where
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1553 ;; `file' is a directory which contains added files.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1554 ;; I made it conditional on vc-diff-added-files but it should probably
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1555 ;; just be removed (or copied/moved to specific backends). --Stef.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1556 (when vc-diff-added-files
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1557 (let ((filtered '()))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1558 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1559 (if (or (file-directory-p file)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1560 (not (string= (vc-working-revision file) "0")))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1561 (push file filtered)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1562 ;; This file is added but not yet committed;
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1563 ;; there is no master file to diff against.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1564 (if (or rev1 rev2)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1565 (error "No revisions of %s exist" file)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1566 ;; We regard this as "changed".
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1567 ;; Diff it against /dev/null.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1568 (apply 'vc-do-command "*vc-diff*"
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1569 1 "diff" file
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1570 (append (vc-switches nil 'diff) '("/dev/null"))))))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1571 (setq files (nreverse filtered))))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1572 (let ((vc-disable-async-diff (not async)))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1573 (vc-call-backend (car vc-fileset) 'diff files rev1 rev2 "*vc-diff*"))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1574 (set-buffer "*vc-diff*")
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1575 (if (and (zerop (buffer-size))
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1576 (not (get-buffer-process (current-buffer))))
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1577 ;; Treat this case specially so as not to pop the buffer.
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1578 (progn
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1579 (message "%s" (cdr messages))
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1580 nil)
85972
51aa47312c4b * ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85794
diff changeset
1581 (diff-mode)
86002
613df1ba1584 * vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85972
diff changeset
1582 ;; Make the *vc-diff* buffer read only, the diff-mode key
613df1ba1584 * vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85972
diff changeset
1583 ;; bindings are nicer for read only buffers. pcl-cvs does the
613df1ba1584 * vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85972
diff changeset
1584 ;; same thing.
613df1ba1584 * vc.el (vc-diff-internal): Make the *vc-diff* buffer read only.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85972
diff changeset
1585 (setq buffer-read-only t)
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1586 (vc-exec-after `(vc-diff-finish ,(current-buffer) ',(when verbose
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1587 messages)))
86100
ac69f23a84ce (vc-diff-internal): Pop-to-buffer later.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 86055
diff changeset
1588 ;; Display the buffer, but at the end because it can change point.
ac69f23a84ce (vc-diff-internal): Pop-to-buffer later.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 86055
diff changeset
1589 (pop-to-buffer (current-buffer))
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1590 ;; In the async case, we return t even if there are no differences
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1591 ;; because we don't know that yet.
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
1592 t)))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1593
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1594 ;;;###autoload
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1595 (defun vc-version-diff (files rev1 rev2)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1596 "Report diffs between revisions of the fileset in the repository history."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1597 (interactive
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1598 (let* ((vc-fileset (vc-deduce-fileset t))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1599 (files (cdr vc-fileset))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1600 (first (car files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1601 (completion-table
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1602 (vc-call revision-completion-table files))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1603 (rev1-default nil)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1604 (rev2-default nil))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1605 (cond
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1606 ;; someday we may be able to do revision completion on non-singleton
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1607 ;; filesets, but not yet.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1608 ((/= (length files) 1)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1609 nil)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1610 ;; if it's a directory, don't supply any revision default
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1611 ((file-directory-p first)
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1612 nil)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1613 ;; if the file is not up-to-date, use working revision as older revision
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1614 ((not (vc-up-to-date-p first))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1615 (setq rev1-default (vc-working-revision first)))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1616 ;; if the file is not locked, use last and previous revisions as defaults
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1617 (t
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1618 (setq rev1-default (vc-call previous-revision first
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1619 (vc-working-revision first)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1620 (when (string= rev1-default "") (setq rev1-default nil))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1621 (setq rev2-default (vc-working-revision first))))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1622 ;; construct argument list
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1623 (let* ((rev1-prompt (if rev1-default
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1624 (concat "Older revision (default "
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1625 rev1-default "): ")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1626 "Older revision: "))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1627 (rev2-prompt (concat "Newer revision (default "
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1628 (or rev2-default "current source") "): "))
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1629 (rev1 (if completion-table
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1630 (completing-read rev1-prompt completion-table
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1631 nil nil nil nil rev1-default)
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1632 (read-string rev1-prompt nil nil rev1-default)))
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1633 (rev2 (if completion-table
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1634 (completing-read rev2-prompt completion-table
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1635 nil nil nil nil rev2-default)
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1636 (read-string rev2-prompt nil nil rev2-default))))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1637 (when (string= rev1 "") (setq rev1 nil))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1638 (when (string= rev2 "") (setq rev2 nil))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1639 (list files rev1 rev2))))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1640 (when (and (not rev1) rev2)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1641 (error "Not a valid revision range."))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1642 (vc-diff-internal
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1643 t (cons (car (vc-deduce-fileset t)) files) rev1 rev2 (interactive-p)))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1644
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1645 ;; (defun vc-contains-version-controlled-file (dir)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1646 ;; "Return t if DIR contains a version-controlled file, nil otherwise."
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1647 ;; (catch 'found
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1648 ;; (mapc (lambda (f) (and (not (file-directory-p f)) (vc-backend f) (throw 'found 't))) (directory-files dir))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1649 ;; nil))
85165
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1650
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1651 ;;;###autoload
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1652 (defun vc-diff (historic &optional not-urgent)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1653 "Display diffs between file revisions.
85165
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1654 Normally this compares the currently selected fileset with their
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1655 working revisions. With a prefix argument HISTORIC, it reads two revision
85165
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1656 designators specifying which revisions to compare.
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1657
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1658 If no current fileset is available (that is, we are not in
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1659 VC-Dired mode and the visited file of the current buffer is not
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1660 under version control) and we're in a Dired buffer, use
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1661 the current directory.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1662 The optional argument NOT-URGENT non-nil means it is ok to say no to
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1663 saving the buffer."
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1664 (interactive (list current-prefix-arg t))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1665 (if historic
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1666 (call-interactively 'vc-version-diff)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1667 (when buffer-file-name (vc-buffer-sync not-urgent))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1668 (vc-diff-internal t (vc-deduce-fileset t) nil nil (interactive-p))))
85165
9b4cc51391e5 Address an edge case in vc-diff. This is an experimental fix and may change.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85139
diff changeset
1669
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1670
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1671 ;;;###autoload
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1672 (defun vc-revision-other-window (rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1673 "Visit revision REV of the current file in another window.
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1674 If the current file is named `F', the revision is named `F.~REV~'.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1675 If `F.~REV~' already exists, use it instead of checking it out again."
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1676 (interactive
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1677 (save-current-buffer
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1678 (vc-ensure-vc-buffer)
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1679 (let ((completion-table
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1680 (vc-call revision-completion-table buffer-file-name))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1681 (prompt "Revision to visit (default is working revision): "))
78359
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1682 (list
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1683 (if completion-table
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1684 (completing-read prompt completion-table)
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1685 (read-string prompt))))))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1686 (vc-ensure-vc-buffer)
32888
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1687 (let* ((file buffer-file-name)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1688 (revision (if (string-equal rev "")
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1689 (vc-working-revision file)
41556
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1690 rev)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1691 (switch-to-buffer-other-window (vc-find-revision file revision))))
41556
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1692
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1693 (defun vc-find-revision (file revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1694 "Read REVISION of FILE into a buffer and return the buffer."
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1695 (let ((automatic-backup (vc-version-backup-file-name file revision))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1696 (filebuf (or (get-file-buffer file) (current-buffer)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1697 (filename (vc-version-backup-file-name file revision 'manual)))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1698 (unless (file-exists-p filename)
32748
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
1699 (if (file-exists-p automatic-backup)
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1700 (rename-file automatic-backup filename nil)
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1701 (message "Checking out %s..." filename)
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1702 (with-current-buffer filebuf
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1703 (let ((failed t))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1704 (unwind-protect
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1705 (let ((coding-system-for-read 'no-conversion)
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1706 (coding-system-for-write 'no-conversion))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1707 (with-temp-file filename
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1708 (let ((outbuf (current-buffer)))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1709 ;; Change buffer to get local value of
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1710 ;; vc-checkout-switches.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1711 (with-current-buffer filebuf
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1712 (vc-call find-revision file revision outbuf))))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1713 (setq failed nil))
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1714 (when (and failed (file-exists-p filename))
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1715 (delete-file filename))))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1716 (vc-mode-line file))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1717 (message "Checking out %s...done" filename)))
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1718 (let ((result-buf (find-file-noselect filename)))
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1719 (with-current-buffer result-buf
86410
bca8808972f0 Delete eol whitespace; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86370
diff changeset
1720 ;; Set the parent buffer so that things like
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1721 ;; C-x v g, C-x v l, ... etc work.
92122
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
1722 (set (make-local-variable 'vc-parent-buffer) filebuf))
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1723 result-buf)))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1724
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1725 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1726
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1727 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1728 (defun vc-insert-headers ()
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1729 "Insert headers into a file for use with a version control system.
23235
7f3fdbb83988 (vc-insert-headers): Doc fix.
Dave Love <fx@gnu.org>
parents: 22905
diff changeset
1730 Headers desired are inserted at point, and are pulled from
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1731 the variable `vc-BACKEND-header'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1732 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1733 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1734 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1735 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1736 (widen)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1737 (when (or (not (vc-check-headers))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1738 (y-or-n-p "Version headers already exist. Insert another set? "))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1739 (let* ((delims (cdr (assq major-mode vc-comment-alist)))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1740 (comment-start-vc (or (car delims) comment-start "#"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1741 (comment-end-vc (or (car (cdr delims)) comment-end ""))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1742 (hdsym (vc-make-backend-sym (vc-backend buffer-file-name)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1743 'header))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1744 (hdstrings (and (boundp hdsym) (symbol-value hdsym))))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1745 (dolist (s hdstrings)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1746 (insert comment-start-vc "\t" s "\t"
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1747 comment-end-vc "\n"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1748 (when vc-static-header-alist
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1749 (dolist (f vc-static-header-alist)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1750 (when (string-match (car f) buffer-file-name)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1751 (insert (format (cdr f) (car hdstrings)))))))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1752
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1753 (defun vc-clear-headers (&optional file)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1754 "Clear all version headers in the current buffer (or FILE).
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1755 The headers are reset to their non-expanded form."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1756 (let* ((filename (or file buffer-file-name))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1757 (visited (find-buffer-visiting filename))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1758 (backend (vc-backend filename)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1759 (when (vc-find-backend-function backend 'clear-headers)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1760 (if visited
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1761 (let ((context (vc-buffer-context)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1762 ;; save-excursion may be able to relocate point and mark
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1763 ;; properly. If it fails, vc-restore-buffer-context
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1764 ;; will give it a second try.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1765 (save-excursion
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1766 (vc-call-backend backend 'clear-headers))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1767 (vc-restore-buffer-context context))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
1768 (set-buffer (find-file-noselect filename))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1769 (vc-call-backend backend 'clear-headers)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1770 (kill-buffer filename)))))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1771
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1772 (defun vc-modify-change-comment (files rev oldcomment)
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1773 "Edit the comment associated with the given files and revision."
94576
7de38dedf0a6 Move the command-closure machinery to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94573
diff changeset
1774 (vc-start-logentry
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1775 files rev oldcomment t
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1776 "Enter a replacement change comment."
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1777 (lambda (files rev comment)
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
1778 (vc-call-backend
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1779 ;; Less of a kluge than it looks like; log-view mode only passes
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1780 ;; this function a singleton list. Arguments left in this form in
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
1781 ;; case the more general operation ever becomes meaningful.
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
1782 (vc-responsible-backend (car files))
87432
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1783 'modify-change-comment files rev comment))))
315124ffb889 * (vc.el, vc-sccs.el, vc-rcs.el, vc-cs.el, vc-mcvs.el): Put
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87424
diff changeset
1784
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1785 ;;;###autoload
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1786 (defun vc-merge ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1787 "Merge changes between two revisions into the current buffer's file.
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1788 This asks for two revisions to merge from in the minibuffer. If the
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1789 first revision is a branch number, then merge all changes from that
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1790 branch. If the first revision is empty, merge news, i.e. recent changes
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1791 from the current branch.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1792
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1793 See Info node `Merging'."
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1794 (interactive)
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1795 (vc-ensure-vc-buffer)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1796 (vc-buffer-sync)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1797 (let* ((file buffer-file-name)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1798 (backend (vc-backend file))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1799 (state (vc-state file))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1800 first-revision second-revision status)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1801 (cond
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
1802 ((stringp state) ;; Locking VCses only
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1803 (error "File is locked by %s" state))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1804 ((not (vc-editable-p file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1805 (if (y-or-n-p
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1806 "File must be checked out for merging. Check out now? ")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1807 (vc-checkout file t)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1808 (error "Merge aborted"))))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1809 (setq first-revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1810 (read-string (concat "Branch or revision to merge from "
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1811 "(default news on current branch): ")))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1812 (if (string= first-revision "")
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1813 (if (not (vc-find-backend-function backend 'merge-news))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1814 (error "Sorry, merging news is not implemented for %s" backend)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1815 (setq status (vc-call merge-news file)))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1816 (if (not (vc-find-backend-function backend 'merge))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1817 (error "Sorry, merging is not implemented for %s" backend)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1818 (if (not (vc-branch-p first-revision))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1819 (setq second-revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1820 (read-string "Second revision: "
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1821 (concat (vc-branch-part first-revision) ".")))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1822 ;; We want to merge an entire branch. Set revisions
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1823 ;; accordingly, so that vc-BACKEND-merge understands us.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1824 (setq second-revision first-revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1825 ;; first-revision must be the starting point of the branch
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1826 (setq first-revision (vc-branch-part first-revision)))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1827 (setq status (vc-call merge file first-revision second-revision))))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1828 (vc-maybe-resolve-conflicts file status "WORKFILE" "MERGE SOURCE")))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1829
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1830 (defun vc-maybe-resolve-conflicts (file status &optional name-A name-B)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1831 (vc-resynch-buffer file t (not (buffer-modified-p)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1832 (if (zerop status) (message "Merge successful")
87785
8f1628da223f * smerge-mode.el (smerge-start-session): Rename from smerge-auto.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87743
diff changeset
1833 (smerge-mode 1)
54586
c3043c1faed3 (vc-maybe-resolve-conflicts): Don't prompt the user.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54562
diff changeset
1834 (message "File contains conflicts.")))
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1835
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1836 ;;;###autoload
47781
79bdd88fb006 (vc-resolve-conflicts); Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47780
diff changeset
1837 (defalias 'vc-resolve-conflicts 'smerge-ediff)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1838
94582
8393f040d26d Move VC-Dired code from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94579
diff changeset
1839 ;; VC Dired hook
8393f040d26d Move VC-Dired code from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94579
diff changeset
1840 ;; FIXME: Remove Dired support when vc-dir is ready.
87434
4d223562bbfa * vc.el (vc-dired-ignorable-p, vc-dired-hook): Speed optimization;
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87432
diff changeset
1841
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1842 (defun vc-dired-hook ()
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1843 "Reformat the listing according to version control.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1844 Called by dired after any portion of a vc-dired buffer has been read in."
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1845 (message "Getting version information... ")
87424
c0ee02a9ac55 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87337
diff changeset
1846 ;; if the backend supports it, get the state
c0ee02a9ac55 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87337
diff changeset
1847 ;; of all files in this directory at once
c0ee02a9ac55 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87337
diff changeset
1848 (let ((backend (vc-responsible-backend default-directory)))
c0ee02a9ac55 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87337
diff changeset
1849 ;; check `backend' can really handle `default-directory'.
c0ee02a9ac55 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87337
diff changeset
1850 (if (and (vc-call-backend backend 'responsible-p default-directory)
c0ee02a9ac55 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87337
diff changeset
1851 (vc-find-backend-function backend 'dir-state))
c0ee02a9ac55 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87337
diff changeset
1852 (vc-call-backend backend 'dir-state default-directory)))
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
1853 (let (filename
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1854 (inhibit-read-only t)
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1855 (buffer-undo-list t))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1856 (goto-char (point-min))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1857 (while (not (eobp))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1858 (cond
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1859 ;; subdir header line
87424
c0ee02a9ac55 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87337
diff changeset
1860 ((dired-get-subdir)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1861 (forward-line 1)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1862 ;; erase (but don't remove) the "total" line
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1863 (delete-region (point) (line-end-position))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1864 (beginning-of-line)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1865 (forward-line 1))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1866 ;; file line
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1867 ((setq filename (dired-get-filename nil t))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1868 (cond
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1869 ;; subdir
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1870 ((file-directory-p filename)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1871 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1872 ((member (file-name-nondirectory filename)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1873 vc-directory-exclusion-list)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1874 (let ((pos (point)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1875 (dired-kill-tree filename)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1876 (goto-char pos)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1877 (dired-kill-line)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1878 (vc-dired-terse-mode
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1879 ;; Don't show directories in terse mode. Don't use
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1880 ;; dired-kill-line to remove it, because in recursive listings,
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1881 ;; that would remove the directory contents as well.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1882 (delete-region (line-beginning-position)
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1883 (progn (forward-line 1) (point))))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1884 ((string-match "\\`\\.\\.?\\'" (file-name-nondirectory filename))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1885 (dired-kill-line))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1886 (t
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1887 (vc-dired-reformat-line nil)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1888 (forward-line 1))))
87512
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1889 ;; Try to head off calling the expensive state query -
87434
4d223562bbfa * vc.el (vc-dired-ignorable-p, vc-dired-hook): Speed optimization;
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87432
diff changeset
1890 ;; ignore object files, TeX intermediate files, and so forth.
4d223562bbfa * vc.el (vc-dired-ignorable-p, vc-dired-hook): Speed optimization;
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87432
diff changeset
1891 ((vc-dired-ignorable-p filename)
4d223562bbfa * vc.el (vc-dired-ignorable-p, vc-dired-hook): Speed optimization;
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87432
diff changeset
1892 (dired-kill-line))
87512
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1893 ;; Ordinary file -- call the (possibly expensive) state query
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1894 ;;
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1895 ;; First case: unregistered or unknown. (Unknown shouldn't happen here)
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1896 ((member (vc-state filename) '(nil unregistered))
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1897 (if vc-dired-terse-mode
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1898 (dired-kill-line)
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1899 (vc-dired-reformat-line "?")
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1900 (forward-line 1)))
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
1901 ;; Either we're in non-terse mode or it's out of date
87512
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1902 ((not (and vc-dired-terse-mode (vc-up-to-date-p filename)))
94539
fee32a11924d Name change in preparation for ripping out vc-dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94538
diff changeset
1903 (vc-dired-reformat-line (vc-call prettify-state-info filename))
87512
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1904 (forward-line 1))
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
1905 ;; Remaining cases are under version control but uninteresting
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
1906 (t
87512
4146f1cc135e * vc.el (vc-dired-hook): Speed tuning. Replace a vc-backend call
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87506
diff changeset
1907 (dired-kill-line))))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1908 ;; any other line
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1909 (t (forward-line 1))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1910 (vc-dired-purge))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1911 (message "Getting version information... done")
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1912 (save-restriction
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1913 (widen)
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1914 (cond ((eq (count-lines (point-min) (point-max)) 1)
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1915 (goto-char (point-min))
87436
a5a588610e41 * vc.el (vc-dired-hook): Show unregistered file status as "?" in
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87435
diff changeset
1916 (message "No changes pending under %s" default-directory)))))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1917
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1918 ;; VC status implementation
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1919
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1920 (defun vc-default-status-extra-headers (backend dir)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1921 ;; Be loud by default to remind people to add coded to display
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1922 ;; backend specific headers.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1923 ;; XXX: change this to return nil before the release.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1924 "Extra : Add backend specific headers here")
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1925
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1926 (defun vc-dir-headers (backend dir)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1927 "Display the headers in the *VC status* buffer.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1928 It calls the `status-extra-headers' backend method to display backend
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1929 specific headers."
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1930 (concat
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1931 (propertize "VC backend : " 'face 'font-lock-type-face)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1932 (propertize (format "%s\n" backend) 'face 'font-lock-variable-name-face)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1933 (propertize "Working dir: " 'face 'font-lock-type-face)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1934 (propertize (format "%s\n" dir) 'face 'font-lock-variable-name-face)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1935 (vc-call-backend backend 'status-extra-headers dir)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1936 "\n"))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1937
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1938 (defun vc-default-status-printer (backend fileentry)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1939 "Pretty print FILEENTRY."
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1940 ;; If you change the layout here, change vc-dir-move-to-goal-column.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1941 (let ((state
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1942 (if (vc-dir-fileinfo->directory fileentry)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1943 'DIRECTORY
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1944 (vc-dir-fileinfo->state fileentry))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1945 (insert
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1946 (propertize
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1947 (format "%c" (if (vc-dir-fileinfo->marked fileentry) ?* ? ))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1948 'face 'font-lock-type-face)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1949 " "
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1950 (propertize
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1951 (format "%-20s" state)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1952 'face (cond ((eq state 'up-to-date) 'font-lock-builtin-face)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1953 ((memq state '(missing conflict)) 'font-lock-warning-face)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1954 (t 'font-lock-variable-name-face))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1955 'mouse-face 'highlight)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1956 " "
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1957 (propertize
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1958 (format "%s" (vc-dir-fileinfo->name fileentry))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1959 'face 'font-lock-function-name-face
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1960 'mouse-face 'highlight))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1961
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1962 (defun vc-default-extra-status-menu (backend)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1963 nil)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1964
94584
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1965 ;; This is used to that VC backends could add backend specific menu
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1966 ;; items to vc-dir-menu-map.
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1967 (defun vc-dir-menu-map-filter (orig-binding)
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1968 (when (and (symbolp orig-binding) (fboundp orig-binding))
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1969 (setq orig-binding (indirect-function orig-binding)))
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1970 (let ((ext-binding
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1971 (vc-call-backend (vc-responsible-backend default-directory)
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1972 'extra-status-menu)))
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1973 (if (null ext-binding)
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1974 orig-binding
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1975 (append orig-binding
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1976 '("----")
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
1977 ext-binding))))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1978
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1979 (defun vc-dir-refresh-files (files default-state)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1980 "Refresh some files in the VC status buffer."
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1981 (let ((backend (vc-responsible-backend default-directory))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1982 (status-buffer (current-buffer))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1983 (def-dir default-directory))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1984 (vc-set-mode-line-busy-indicator)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1985 ;; Call the `dir-status-file' backend function.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1986 ;; `dir-status-file' is supposed to be asynchronous.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1987 ;; It should compute the results, and then call the function
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1988 ;; passed as an argument in order to update the vc-dir buffer
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1989 ;; with the results.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1990 (unless (buffer-live-p vc-dir-process-buffer)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1991 (setq vc-dir-process-buffer
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1992 (generate-new-buffer (format " *VC-%s* tmp status" backend))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1993 (lexical-let ((buffer (current-buffer)))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1994 (with-current-buffer vc-dir-process-buffer
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1995 (cd def-dir)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1996 (erase-buffer)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1997 (vc-call-backend
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1998 backend 'dir-status-files def-dir files default-state
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1999 (lambda (entries &optional more-to-come)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2000 ;; ENTRIES is a list of (FILE VC_STATE EXTRA) items.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2001 ;; If MORE-TO-COME is true, then more updates will come from
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2002 ;; the asynchronous process.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2003 (with-current-buffer buffer
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2004 (vc-dir-update entries buffer)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2005 (unless more-to-come
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2006 (setq mode-line-process nil)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2007 ;; Remove the ones that haven't been updated at all.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2008 ;; Those not-updated are those whose state is nil because the
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2009 ;; file/dir doesn't exist and isn't versioned.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2010 (ewoc-filter vc-ewoc
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2011 (lambda (info)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2012 (not (vc-dir-fileinfo->needs-update info))))))))))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2013
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2014 (defun vc-dir-refresh ()
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2015 "Refresh the contents of the VC status buffer.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2016 Throw an error if another update process is in progress."
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2017 (interactive)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2018 (if (vc-dir-busy)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2019 (error "Another update process is in progress, cannot run two at a time")
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2020 (let ((backend (vc-responsible-backend default-directory))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2021 (status-buffer (current-buffer))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2022 (def-dir default-directory))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2023 (vc-set-mode-line-busy-indicator)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2024 ;; Call the `dir-status' backend function.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2025 ;; `dir-status' is supposed to be asynchronous.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2026 ;; It should compute the results, and then call the function
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2027 ;; passed as an argument in order to update the vc-dir buffer
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2028 ;; with the results.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2029
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2030 ;; Create a buffer that can be used by `dir-status' and call
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2031 ;; `dir-status' with this buffer as the current buffer. Use
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2032 ;; `vc-dir-process-buffer' to remember this buffer, so that
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2033 ;; it can be used later to kill the update process in case it
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2034 ;; takes too long.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2035 (unless (buffer-live-p vc-dir-process-buffer)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2036 (setq vc-dir-process-buffer
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2037 (generate-new-buffer (format " *VC-%s* tmp status" backend))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2038 ;; set the needs-update flag on all entries
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2039 (ewoc-map (lambda (info) (setf (vc-dir-fileinfo->needs-update info) t) nil)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2040 vc-ewoc)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2041 (lexical-let ((buffer (current-buffer)))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2042 (with-current-buffer vc-dir-process-buffer
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2043 (cd def-dir)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2044 (erase-buffer)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2045 (vc-call-backend
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2046 backend 'dir-status def-dir
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2047 (lambda (entries &optional more-to-come)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2048 ;; ENTRIES is a list of (FILE VC_STATE EXTRA) items.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2049 ;; If MORE-TO-COME is true, then more updates will come from
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2050 ;; the asynchronous process.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2051 (with-current-buffer buffer
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2052 (vc-dir-update entries buffer)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2053 (unless more-to-come
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2054 (let ((remaining
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2055 (ewoc-collect
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2056 vc-ewoc 'vc-dir-fileinfo->needs-update)))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2057 (if remaining
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2058 (vc-dir-refresh-files
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2059 (mapcar 'vc-dir-fileinfo->name remaining)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2060 'up-to-date)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2061 (setq mode-line-process nil))))))))))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2062
94584
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2063 (defun vc-dir-show-fileentry (file)
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2064 "Insert an entry for a specific file into the current VC status listing.
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2065 This is typically used if the file is up-to-date (or has been added
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2066 outside of VC) and one wants to do some operation on it."
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2067 (interactive "fShow file: ")
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2068 (vc-dir-update (list (list (file-relative-name file) (vc-state file))) (current-buffer)))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2069
94584
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2070 (defun vc-dir-hide-up-to-date ()
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2071 "Hide up-to-date items from display."
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2072 (interactive)
94584
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2073 (ewoc-filter
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2074 vc-ewoc
f6d320d12050 Moved most of vc-dir from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94582
diff changeset
2075 (lambda (crt) (not (eq (vc-dir-fileinfo->state crt) 'up-to-date)))))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2076
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2077 (defun vc-dir-register ()
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2078 "Register the marked files, or the current file if no marks."
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2079 (interactive)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2080 ;; FIXME: Just pass the fileset to vc-register.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2081 (mapc (lambda (arg) (vc-register nil arg))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2082 (or (vc-dir-marked-files) (list (vc-dir-current-file)))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2083
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2084 (defun vc-default-status-fileinfo-extra (backend file)
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2085 "Default absence of extra information returned for a file."
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2086 nil)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2087
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2088 ;; FIXME: Replace these with a more efficient dispatch
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2089
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2090 (defun vc-generic-status-printer (fileentry)
94620
070ce953fab4 Correct buggy dispatch logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94612
diff changeset
2091 (let* ((file (vc-dir-fileinfo->name fileentry))
94689
0a8a0c2b4cd3 vc-responsible-backend needs to see absolute pathnames.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
2092 (backend (vc-responsible-backend (expand-file-name file))))
94635
92e5b9eb3f29 Fix a compilation warning.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94623
diff changeset
2093 (vc-call-backend backend 'status-printer fileentry)))
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2094
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2095 (defun vc-generic-state (file)
94689
0a8a0c2b4cd3 vc-responsible-backend needs to see absolute pathnames.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
2096 (let ((backend (vc-responsible-backend (expand-file-name file))))
94638
3c1eb3e10285 Actually supply needed arguments.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94635
diff changeset
2097 (vc-call-backend backend 'state file)))
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2098
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2099 (defun vc-generic-status-fileinfo-extra (file)
94689
0a8a0c2b4cd3 vc-responsible-backend needs to see absolute pathnames.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94678
diff changeset
2100 (let ((backend (vc-responsible-backend (expand-file-name file))))
94638
3c1eb3e10285 Actually supply needed arguments.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94635
diff changeset
2101 (vc-call-backend backend 'status-fileinfo-extra file)))
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2102
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2103 (defun vc-generic-dir-headers (dir)
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2104 (let ((backend (vc-responsible-backend dir)))
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2105 (vc-dir-headers backend dir)))
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2106
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2107 (defun vc-make-backend-object (file-or-dir)
94620
070ce953fab4 Correct buggy dispatch logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94612
diff changeset
2108 "Create the backend capability object needed by vc-dispatcher."
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2109 (vc-create-client-object
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2110 "VC status"
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2111 (let ((backend (vc-responsible-backend file-or-dir)))
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2112 (vc-dir-headers backend file-or-dir))
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2113 #'vc-generic-status-printer
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2114 #'vc-generic-state
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2115 #'vc-generic-status-fileinfo-extra
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2116 #'vc-dir-refresh))
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2117
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2118 ;;;###autoload
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2119 (defun vc-dir (dir)
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2120 "Show the VC status for DIR."
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2121 (interactive "DVC status for directory: ")
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2122 (pop-to-buffer (vc-dir-prepare-status-buffer dir))
94620
070ce953fab4 Correct buggy dispatch logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94612
diff changeset
2123 (if (and (eq major-mode 'vc-dir-mode) (boundp 'client-object))
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2124 (vc-dir-refresh)
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2125 ;; Otherwise, initialize a new view using the dispatcher layer
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2126 (progn
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2127 ;; Build a capability object and hand it to the dispatcher initializer
94612
b37bca16668a Typo fix.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94611
diff changeset
2128 (vc-dir-mode (vc-make-backend-object dir))
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2129 ;; Add VC-specific keybindings
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2130 (let ((map (current-local-map)))
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2131 (define-key map "=" 'vc-diff) ;; C-x v =
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2132 (define-key map "a" 'vc-dir-register)
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2133 (define-key map "+" 'vc-update) ;; C-x v +
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2134 (define-key map "R" 'vc-revert) ;; u is taken by dispatcher unmark.
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2135 (define-key map "A" 'vc-annotate) ;; g is taken by dispatcher referesh
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2136 (define-key map "l" 'vc-print-log) ;; C-x v l
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2137 (define-key map "x" 'vc-dir-hide-up-to-date)
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2138 ))))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2139
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2140 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2141
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2142 (defun vc-snapshot-precondition (dir)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2143 "Scan the tree below DIR, looking for files not up-to-date.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2144 If any file is not up-to-date, return the name of the first such file.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2145 \(This means, neither snapshot creation nor retrieval is allowed.\)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2146 If one or more of the files are currently visited, return `visited'.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2147 Otherwise, return nil."
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2148 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2149 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2150 (vc-file-tree-walk
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2151 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2152 (lambda (f)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2153 (if (not (vc-up-to-date-p f)) (throw 'vc-locked-example f)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2154 (when (get-file-buffer f) (setq status 'visited)))))
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2155 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2156
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2157 ;;;###autoload
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2158 (defun vc-create-snapshot (dir name branchp)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2159 "Descending recursively from DIR, make a snapshot called NAME.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2160 For each registered file, the working revision becomes part of
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2161 the named configuration. If the prefix argument BRANCHP is
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2162 given, the snapshot is made as a new branch and the files are
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2163 checked out in that new branch."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2164 (interactive
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2165 (list (read-file-name "Directory: " default-directory default-directory t)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2166 (read-string "New snapshot name: ")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2167 current-prefix-arg))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2168 (message "Making %s... " (if branchp "branch" "snapshot"))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2169 (when (file-directory-p dir) (setq dir (file-name-as-directory dir)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2170 (vc-call-backend (vc-responsible-backend dir)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2171 'create-snapshot dir name branchp)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2172 (message "Making %s... done" (if branchp "branch" "snapshot")))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2173
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2174 ;;;###autoload
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2175 (defun vc-retrieve-snapshot (dir name)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2176 "Descending recursively from DIR, retrieve the snapshot called NAME.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2177 If NAME is empty, it refers to the latest revisions.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2178 If locking is used for the files in DIR, then there must not be any
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2179 locked files at or below DIR (but if NAME is empty, locked files are
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2180 allowed and simply skipped)."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2181 (interactive
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2182 (list (read-file-name "Directory: " default-directory default-directory t)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2183 (read-string "Snapshot name to retrieve (default latest revisions): ")))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2184 (let ((update (yes-or-no-p "Update any affected buffers? "))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2185 (msg (if (or (not name) (string= name ""))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2186 (format "Updating %s... " (abbreviate-file-name dir))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2187 (format "Retrieving snapshot into %s... "
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2188 (abbreviate-file-name dir)))))
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
2189 (message "%s" msg)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2190 (vc-call-backend (vc-responsible-backend dir)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2191 'retrieve-snapshot dir name update)
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
2192 (message "%s" (concat msg "done"))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2193
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2194 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2195
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2196 ;;;###autoload
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2197 (defun vc-print-log (&optional working-revision)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2198 "List the change log of the current fileset in a window.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2199 If WORKING-REVISION is non-nil, leave the point at that revision."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2200 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2201 (let* ((vc-fileset (vc-deduce-fileset))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2202 (files (cdr vc-fileset))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2203 (backend (car vc-fileset))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2204 (working-revision (or working-revision (vc-working-revision (car files)))))
54553
c862ab7552a4 (vc-print-log): backend-function may be a byte-compiled object, not a lambda
Sam Steingold <sds@gnu.org>
parents: 54530
diff changeset
2205 ;; Don't switch to the output buffer before running the command,
c862ab7552a4 (vc-print-log): backend-function may be a byte-compiled object, not a lambda
Sam Steingold <sds@gnu.org>
parents: 54530
diff changeset
2206 ;; so that any buffer-local settings in the vc-controlled
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
2207 ;; buffer can be accessed by the command.
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2208 (vc-call-backend backend 'print-log files "*vc-change-log*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2209 (pop-to-buffer "*vc-change-log*")
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2210 (vc-exec-after
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
2211 `(let ((inhibit-read-only t))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2212 (vc-call-backend ',backend 'log-view-mode)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2213 (goto-char (point-max)) (forward-line -1)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2214 (while (looking-at "=*\n")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2215 (delete-char (- (match-end 0) (match-beginning 0)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2216 (forward-line -1))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2217 (goto-char (point-min))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2218 (when (looking-at "[\b\t\n\v\f\r ]+")
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2219 (delete-char (- (match-end 0) (match-beginning 0))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2220 (shrink-window-if-larger-than-buffer)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2221 ;; move point to the log entry for the working revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2222 (vc-call-backend ',backend 'show-log-entry ',working-revision)
84586
3048d1b37570 (vc-process-sentinel): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84336
diff changeset
2223 (setq vc-sentinel-movepoint (point))
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
2224 (set-buffer-modified-p nil)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2225
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2226 ;;;###autoload
81957
8f9991bf3b41 Generalize stay-local-p to operatre on lists of files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81923
diff changeset
2227 (defun vc-revert ()
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2228 "Revert working copies of the selected fileset to their repository contents.
952
ba6a993500d4 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 927
diff changeset
2229 This asks for confirmation if the buffer contents are not identical
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2230 to the working revision (except for keyword expansion)."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2231 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2232 (let* ((vc-fileset (vc-deduce-fileset))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2233 (files (cdr vc-fileset)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2234 ;; If any of the files is visited by the current buffer, make
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2235 ;; sure buffer is saved. If the user says `no', abort since
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2236 ;; we cannot show the changes and ask for confirmation to
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2237 ;; discard them.
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2238 (when (or (not files) (memq (buffer-file-name) files))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2239 (vc-buffer-sync nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2240 (dolist (file files)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2241 (let ((buf (get-file-buffer file)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2242 (when (and buf (buffer-modified-p buf))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2243 (error "Please kill or save all modified buffers before reverting.")))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2244 (when (vc-up-to-date-p file)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2245 (unless (yes-or-no-p (format "%s seems up-to-date. Revert anyway? " file))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2246 (error "Revert canceled"))))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2247 (when (vc-diff-internal vc-allow-async-revert vc-fileset nil nil)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2248 (unless (yes-or-no-p (format "Discard changes in %s? " (vc-delistify files)))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2249 (error "Revert canceled"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2250 (delete-windows-on "*vc-diff*")
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2251 (kill-buffer "*vc-diff*"))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2252 (dolist (file files)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2253 (message "Reverting %s..." (vc-delistify files))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2254 (vc-revert-file file)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2255 (message "Reverting %s...done" (vc-delistify files)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2256
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2257 ;;;###autoload
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2258 (defun vc-rollback ()
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2259 "Roll back (remove) the most recent changeset committed to the repository.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2260 This may be either a file-level or a repository-level operation,
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2261 depending on the underlying version-control system."
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2262 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2263 (let* ((vc-fileset (vc-deduce-fileset))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2264 (files (cdr vc-fileset))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2265 (backend (car vc-fileset))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2266 (granularity (vc-call-backend backend 'revision-granularity)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2267 (unless (vc-find-backend-function backend 'rollback)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2268 (error "Rollback is not supported in %s" backend))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2269 (when (and (not (eq granularity 'repository)) (/= (length files) 1))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2270 (error "Rollback requires a singleton fileset or repository versioning"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2271 (when (not (vc-call latest-on-branch-p (car files)))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2272 (error "Rollback is only possible at the tip revision."))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2273 ;; If any of the files is visited by the current buffer, make
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2274 ;; sure buffer is saved. If the user says `no', abort since
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2275 ;; we cannot show the changes and ask for confirmation to
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2276 ;; discard them.
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2277 (when (or (not files) (memq (buffer-file-name) files))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2278 (vc-buffer-sync nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2279 (dolist (file files)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2280 (when (buffer-modified-p (get-file-buffer file))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2281 (error "Please kill or save all modified buffers before rollback."))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2282 (when (not (vc-up-to-date-p file))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2283 (error "Please revert all modified workfiles before rollback.")))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2284 ;; Accumulate changes associated with the fileset
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2285 (vc-setup-buffer "*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2286 (not-modified)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2287 (message "Finding changes...")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2288 (let* ((tip (vc-working-revision (car files)))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2289 (previous (vc-call previous-revision (car files) tip)))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2290 (vc-diff-internal nil vc-fileset previous tip))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2291 ;; Display changes
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2292 (unless (yes-or-no-p "Discard these revisions? ")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2293 (error "Rollback canceled"))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2294 (delete-windows-on "*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2295 (kill-buffer"*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2296 ;; Do the actual reversions
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2297 (message "Rolling back %s..." (vc-delistify files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2298 (with-vc-properties
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2299 files
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2300 (vc-call-backend backend 'rollback files)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2301 `((vc-state . ,'up-to-date)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2302 (vc-checkout-time . , (nth 5 (file-attributes file)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2303 (vc-working-revision . nil)))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2304 (dolist (f files) (vc-resynch-buffer f t t))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2305 (message "Rolling back %s...done" (vc-delistify files))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2306
38595
396f97177ef1 (vc-switch-backend): Fix autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38442
diff changeset
2307 ;;;###autoload
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2308 (define-obsolete-function-alias 'vc-revert-buffer 'vc-revert "23.1")
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2309
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2310 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2311 (defun vc-update ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2312 "Update the current fileset's files to their tip revisions.
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2313 For each one that contains no changes, and is not locked, then this simply
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2314 replaces the work file with the latest revision on its branch. If the file
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2315 contains changes, and the backend supports merging news, then any recent
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2316 changes from the current branch are merged into the working file."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2317 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2318 (let* ((vc-fileset (vc-deduce-fileset))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2319 (files (cdr vc-fileset))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2320 (backend (car vc-fileset)))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2321 (dolist (file files)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2322 (when (let ((buf (get-file-buffer file)))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2323 (and buf (buffer-modified-p buf)))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2324 (error "Please kill or save all modified buffers before updating."))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2325 (if (vc-up-to-date-p file)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2326 (vc-checkout file nil t)
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
2327 (if (eq (vc-checkout-model backend (list file)) 'locking)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2328 (if (eq (vc-state file) 'edited)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2329 (error "%s"
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2330 (substitute-command-keys
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2331 "File is locked--type \\[vc-revert] to discard changes"))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2332 (error "Unexpected file state (%s) -- type %s"
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2333 (vc-state file)
87147
e07baccc00fc Fix vc.el breakage.
Deepak Goel <deego@gnufans.org>
parents: 87145
diff changeset
2334 (substitute-command-keys
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2335 "\\[vc-next-action] to correct")))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2336 (if (not (vc-find-backend-function backend 'merge-news))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2337 (error "Sorry, merging news is not implemented for %s"
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2338 backend)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2339 (vc-maybe-resolve-conflicts file (vc-call merge-news file))))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2340
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2341 (defun vc-version-backup-file (file &optional rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2342 "Return name of backup file for revision REV of FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2343 If version backups should be used for FILE, and there exists
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2344 such a backup for REV or the working revision of file, return
85059
062474ac8e41 Terminology sync, workfile version -> focus version.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85042
diff changeset
2345 its name; otherwise return nil."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2346 (when (vc-call make-version-backups-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2347 (let ((backup-file (vc-version-backup-file-name file rev)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2348 (if (file-exists-p backup-file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2349 backup-file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2350 ;; there is no automatic backup, but maybe the user made one manually
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2351 (setq backup-file (vc-version-backup-file-name file rev 'manual))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2352 (when (file-exists-p backup-file)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2353 backup-file)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2354
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2355 (defun vc-revert-file (file)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2356 "Revert FILE back to the repository working revision it was based on."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2357 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2358 (list file)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2359 (let ((backup-file (vc-version-backup-file file)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2360 (when backup-file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2361 (copy-file backup-file file 'ok-if-already-exists 'keep-date)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2362 (vc-delete-automatic-version-backups file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2363 (vc-call revert file backup-file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2364 `((vc-state . up-to-date)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2365 (vc-checkout-time . ,(nth 5 (file-attributes file)))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2366 (vc-resynch-buffer file t t))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2367
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2368 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2369 (defun vc-switch-backend (file backend)
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2370 "Make BACKEND the current version control system for FILE.
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2371 FILE must already be registered in BACKEND. The change is not
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2372 permanent, only for the current session. This function only changes
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2373 VC's perspective on FILE, it does not register or unregister it.
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2374 By default, this command cycles through the registered backends.
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2375 To get a prompt, use a prefix argument."
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2376 (interactive
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2377 (list
66549
13a55a7627fd (vc-switch-backend): Better error message if the buffer is not visiting a
André Spiegel <spiegel@gnu.org>
parents: 66425
diff changeset
2378 (or buffer-file-name
13a55a7627fd (vc-switch-backend): Better error message if the buffer is not visiting a
André Spiegel <spiegel@gnu.org>
parents: 66425
diff changeset
2379 (error "There is no version-controlled file in this buffer"))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2380 (let ((backend (vc-backend buffer-file-name))
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2381 (backends nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2382 (unless backend
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2383 (error "File %s is not under version control" buffer-file-name))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2384 ;; Find the registered backends.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2385 (dolist (backend vc-handled-backends)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2386 (when (vc-call-backend backend 'registered buffer-file-name)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2387 (push backend backends)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2388 ;; Find the next backend.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2389 (let ((def (car (delq backend (append (memq backend backends) backends))))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2390 (others (delete backend backends)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2391 (cond
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2392 ((null others) (error "No other backend to switch to"))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2393 (current-prefix-arg
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2394 (intern
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2395 (upcase
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2396 (completing-read
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2397 (format "Switch to backend [%s]: " def)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2398 (mapcar (lambda (b) (list (downcase (symbol-name b)))) backends)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2399 nil t nil nil (downcase (symbol-name def))))))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2400 (t def))))))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2401 (unless (eq backend (vc-backend file))
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2402 (vc-file-clearprops file)
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2403 (vc-file-setprop file 'vc-backend backend)
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2404 ;; Force recomputation of the state
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2405 (unless (vc-call-backend backend 'registered file)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2406 (vc-file-clearprops file)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2407 (error "%s is not registered in %s" file backend))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2408 (vc-mode-line file)))
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2409
38726
2dddcf515155 (vc-transfer-file): Fix malformed autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38608
diff changeset
2410 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2411 (defun vc-transfer-file (file new-backend)
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2412 "Transfer FILE to another version control system NEW-BACKEND.
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2413 If NEW-BACKEND has a higher precedence than FILE's current backend
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2414 \(i.e. it comes earlier in `vc-handled-backends'), then register FILE in
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2415 NEW-BACKEND, using the revision number from the current backend as the
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2416 base level. If NEW-BACKEND has a lower precedence than the current
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2417 backend, then commit all changes that were made under the current
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2418 backend to NEW-BACKEND, and unregister FILE from the current backend.
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2419 \(If FILE is not yet registered under NEW-BACKEND, register it.)"
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2420 (let* ((old-backend (vc-backend file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2421 (edited (memq (vc-state file) '(edited needs-merge)))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2422 (registered (vc-call-backend new-backend 'registered file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2423 (move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2424 (and registered ; Never move if not registered in new-backend yet.
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2425 ;; move if new-backend comes later in vc-handled-backends
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2426 (or (memq new-backend (memq old-backend vc-handled-backends))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2427 (y-or-n-p "Final transfer? "))))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2428 (comment nil))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2429 (when (eq old-backend new-backend)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2430 (error "%s is the current backend of %s" new-backend file))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2431 (if registered
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2432 (set-file-modes file (logior (file-modes file) 128))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2433 ;; `registered' might have switched under us.
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2434 (vc-switch-backend file old-backend)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2435 (let* ((rev (vc-working-revision file))
43725
60a9d71aad02 (vc-transfer-file): Use `make-temp-file' instead of `make-temp-name'.
André Spiegel <spiegel@gnu.org>
parents: 43586
diff changeset
2436 (modified-file (and edited (make-temp-file file)))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2437 (unmodified-file (and modified-file (vc-version-backup-file file))))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2438 ;; Go back to the base unmodified file.
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2439 (unwind-protect
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2440 (progn
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2441 (when modified-file
43725
60a9d71aad02 (vc-transfer-file): Use `make-temp-file' instead of `make-temp-name'.
André Spiegel <spiegel@gnu.org>
parents: 43586
diff changeset
2442 (copy-file file modified-file 'ok-if-already-exists)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2443 ;; If we have a local copy of the unmodified file, handle that
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2444 ;; here and not in vc-revert-file because we don't want to
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2445 ;; delete that copy -- it is still useful for OLD-BACKEND.
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2446 (if unmodified-file
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2447 (copy-file unmodified-file file
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2448 'ok-if-already-exists 'keep-date)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2449 (when (y-or-n-p "Get base revision from master? ")
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2450 (vc-revert-file file))))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2451 (vc-call-backend new-backend 'receive-file file rev))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2452 (when modified-file
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2453 (vc-switch-backend file new-backend)
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
2454 (unless (eq (vc-checkout-model new-backend (list file)) 'implicit)
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2455 (vc-checkout file t nil))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2456 (rename-file modified-file file 'ok-if-already-exists)
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2457 (vc-file-setprop file 'vc-checkout-time nil)))))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2458 (when move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2459 (vc-switch-backend file old-backend)
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2460 (setq comment (vc-call comment-history file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2461 (vc-call unregister file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2462 (vc-switch-backend file new-backend)
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2463 (when (or move edited)
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2464 (vc-file-setprop file 'vc-state 'edited)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2465 (vc-mode-line file)
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2466 (vc-checkin file nil comment (stringp comment)))))
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2467
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2468 (defun vc-rename-master (oldmaster newfile templates)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2469 "Rename OLDMASTER to be the master file for NEWFILE based on TEMPLATES."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2470 (let* ((dir (file-name-directory (expand-file-name oldmaster)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2471 (newdir (or (file-name-directory newfile) ""))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2472 (newbase (file-name-nondirectory newfile))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2473 (masters
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2474 ;; List of potential master files for `newfile'
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2475 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2476 (lambda (s) (vc-possible-master s newdir newbase))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2477 templates)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2478 (when (or (file-symlink-p oldmaster)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2479 (file-symlink-p (file-name-directory oldmaster)))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2480 (error "This is unsafe in the presence of symbolic links"))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2481 (rename-file
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2482 oldmaster
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2483 (catch 'found
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2484 ;; If possible, keep the master file in the same directory.
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2485 (dolist (f masters)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2486 (when (and f (string= (file-name-directory (expand-file-name f)) dir))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2487 (throw 'found f)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2488 ;; If not, just use the first possible place.
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2489 (dolist (f masters)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2490 (and f (or (not (setq dir (file-name-directory f)))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2491 (file-directory-p dir))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2492 (throw 'found f)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2493 (error "New file lacks a version control directory")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2494
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2495 (defun vc-delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2496 "Delete file and mark it as such in the version control system."
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2497 (interactive "fVC delete file: ")
93165
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2498 (setq file (expand-file-name file))
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2499 (let ((buf (get-file-buffer file))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2500 (backend (vc-backend file)))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2501 (unless backend
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2502 (error "File %s is not under version control"
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2503 (file-name-nondirectory file)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2504 (unless (vc-find-backend-function backend 'delete-file)
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2505 (error "Deleting files under %s is not supported in VC" backend))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2506 (when (and buf (buffer-modified-p buf))
94520
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2507 (error "Please save or undo your changes before deleting %s" file))
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2508 (let ((state (vc-state file)))
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2509 (when (eq state 'edited)
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2510 (error "Please commit or undo your changes before deleting %s" file))
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2511 (when (eq state 'conflict)
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2512 (error "Please resolve the conflicts before deleting %s" file)))
65689
96187e7edd1b 2005-09-25 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 65680
diff changeset
2513 (unless (y-or-n-p (format "Really want to delete %s? "
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2514 (file-name-nondirectory file)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2515 (error "Abort!"))
94499
5f57377d1eff (vc-dir-mode-map): Bind "d" to vc-dir-delete-file.
Sam Steingold <sds@gnu.org>
parents: 94495
diff changeset
2516 (unless (or (file-directory-p file) (null make-backup-files)
5f57377d1eff (vc-dir-mode-map): Bind "d" to vc-dir-delete-file.
Sam Steingold <sds@gnu.org>
parents: 94495
diff changeset
2517 (not (file-exists-p file)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2518 (with-current-buffer (or buf (find-file-noselect file))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2519 (let ((backup-inhibited nil))
93165
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2520 (backup-buffer))
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2521 ;; If we didn't have a buffer visiting the file before this
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2522 ;; command, kill the buffer created by the above
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2523 ;; `find-file-noselect' call.
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2524 (unless buf (kill-buffer (current-buffer)))))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2525 (vc-call delete-file file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2526 ;; If the backend hasn't deleted the file itself, let's do it for him.
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2527 (when (file-exists-p file) (delete-file file))
93165
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2528 ;; Forget what VC knew about the file.
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2529 (vc-file-clearprops file)
c4dc2a72d555 (vc-status-mark-buffer-changed): Add an optional file parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93159
diff changeset
2530 (vc-resynch-buffer file buf t)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2531
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2532 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2533 (defun vc-rename-file (old new)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2534 "Rename file OLD to NEW, and rename its master file likewise."
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2535 (interactive "fVC rename file: \nFRename to: ")
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2536 (let ((oldbuf (get-file-buffer old)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2537 (when (and oldbuf (buffer-modified-p oldbuf))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2538 (error "Please save files before moving them"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2539 (when (get-file-buffer new)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2540 (error "Already editing new file name"))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2541 (when (file-exists-p new)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2542 (error "New file already exists"))
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2543 (let ((state (vc-state old)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2544 (unless (memq state '(up-to-date edited))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2545 (error "Please %s files before moving them"
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2546 (if (stringp state) "check in" "update"))))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2547 (vc-call rename-file old new)
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2548 (vc-file-clearprops old)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2549 ;; Move the actual file (unless the backend did it already)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2550 (when (file-exists-p old) (rename-file old new))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2551 ;; ?? Renaming a file might change its contents due to keyword expansion.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2552 ;; We should really check out a new copy if the old copy was precisely equal
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2553 ;; to some checked-in revision. However, testing for this is tricky....
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2554 (when oldbuf
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2555 (with-current-buffer oldbuf
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2556 (let ((buffer-read-only buffer-read-only))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2557 (set-visited-file-name new))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2558 (vc-backend new)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2559 (vc-mode-line new)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2560 (set-buffer-modified-p nil)))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2561
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2562 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2563 (defun vc-update-change-log (&rest args)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2564 "Find change log file and add entries from recent version control logs.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2565 Normally, find log entries for all registered files in the default
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2566 directory.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2567
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2568 With prefix arg of \\[universal-argument], only find log entries for the current buffer's file.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2569
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2570 With any numeric prefix arg, find log entries for all currently visited
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2571 files that are under version control. This puts all the entries in the
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2572 log for the default directory, which may not be appropriate.
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2573
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2574 From a program, any ARGS are assumed to be filenames for which
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2575 log entries should be gathered."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2576 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2577 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2578 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2579 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2580 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2581 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2582 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2583 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2584 (setq file (buffer-file-name (car buffers)))
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
2585 (and file (vc-backend file)
3939
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2586 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2587 (setq buffers (cdr buffers)))
3939
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2588 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2589 (t
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2590 ;; Don't supply any filenames to backend; this means
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2591 ;; it should find all relevant files relative to
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2592 ;; the default-directory.
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2593 nil)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2594 (vc-call-backend (vc-responsible-backend default-directory)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2595 'update-changelog args))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2596
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2597 ;;; The default back end. Assumes RCS-like revision numbering.
85064
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
2598
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
2599 (defun vc-default-revision-granularity ()
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
2600 (error "Your backend will not work with this version of VC mode."))
3e1b7531aa3e Port various comments from new VC to reduce the noise in the diff.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85059
diff changeset
2601
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2602 ;; functions that operate on RCS revision numbers. This code should
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2603 ;; also be moved into the backends. It stays for now, however, since
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2604 ;; it is used in code below.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2605 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2606 (defun vc-trunk-p (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2607 "Return t if REV is a revision on the trunk."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2608 (not (eq nil (string-match "\\`[0-9]+\\.[0-9]+\\'" rev))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2609
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2610 (defun vc-branch-p (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2611 "Return t if REV is a branch revision."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2612 (not (eq nil (string-match "\\`[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*\\'" rev))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2613
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2614 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2615 (defun vc-branch-part (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2616 "Return the branch part of a revision number REV."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2617 (let ((index (string-match "\\.[0-9]+\\'" rev)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2618 (when index
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2619 (substring rev 0 index))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2620
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2621 (defun vc-minor-part (rev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2622 "Return the minor revision number of a revision number REV."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2623 (string-match "[0-9]+\\'" rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2624 (substring rev (match-beginning 0) (match-end 0)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2625
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2626 (defun vc-default-previous-revision (backend file rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2627 "Return the revision number immediately preceding REV for FILE,
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2628 or nil if there is no previous revision. This default
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2629 implementation works for MAJOR.MINOR-style revision numbers as
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2630 used by RCS and CVS."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2631 (let ((branch (vc-branch-part rev))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2632 (minor-num (string-to-number (vc-minor-part rev))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2633 (when branch
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2634 (if (> minor-num 1)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2635 ;; revision does probably not start a branch or release
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2636 (concat branch "." (number-to-string (1- minor-num)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2637 (if (vc-trunk-p rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2638 ;; we are at the beginning of the trunk --
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2639 ;; don't know anything to return here
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2640 nil
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2641 ;; we are at the beginning of a branch --
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2642 ;; return revision of starting point
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2643 (vc-branch-part branch))))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2644
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2645 (defun vc-default-next-revision (backend file rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2646 "Return the revision number immediately following REV for FILE,
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2647 or nil if there is no next revision. This default implementation
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2648 works for MAJOR.MINOR-style revision numbers as used by RCS
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2649 and CVS."
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2650 (when (not (string= rev (vc-working-revision file)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2651 (let ((branch (vc-branch-part rev))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2652 (minor-num (string-to-number (vc-minor-part rev))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2653 (concat branch "." (number-to-string (1+ minor-num))))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2654
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2655 (defun vc-default-responsible-p (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2656 "Indicate whether BACKEND is reponsible for FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2657 The default is to return nil always."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2658 nil)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2659
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2660 (defun vc-default-could-register (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2661 "Return non-nil if BACKEND could be used to register FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2662 The default implementation returns t for all files."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2663 t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2664
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2665 (defun vc-default-latest-on-branch-p (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2666 "Return non-nil if FILE is the latest on its branch.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2667 This default implementation always returns non-nil, which means that
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2668 editing non-current revisions is not supported by default."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2669 t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2670
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2671 (defun vc-default-init-revision (backend) vc-default-init-revision)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2672
80875
51b85ee9ab0f Ensure that update-changelog issues an error when used with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
2673 (defalias 'vc-cvs-update-changelog 'vc-update-changelog-rcs2log)
51b85ee9ab0f Ensure that update-changelog issues an error when used with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
2674 (defalias 'vc-rcs-update-changelog 'vc-update-changelog-rcs2log)
51b85ee9ab0f Ensure that update-changelog issues an error when used with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
2675 ;; FIXME: This should probably be moved to vc-rcs.el and replaced in
51b85ee9ab0f Ensure that update-changelog issues an error when used with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
2676 ;; vc-cvs.el by code using cvs2cl.
85606
b0f9e8f1fbb2 (vc-update-changelog-rcs2log): Remove incorrect `backend' arg.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85495
diff changeset
2677 (defun vc-update-changelog-rcs2log (files)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2678 "Default implementation of update-changelog.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2679 Uses `rcs2log' which only works for RCS and CVS."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2680 ;; FIXME: We (c|sh)ould add support for cvs2cl
14053
c8c5b83d9691 (vc-update-change-log): Use add-log-full-name and
Karl Heuer <kwzh@gnu.org>
parents: 14040
diff changeset
2681 (let ((odefault default-directory)
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2682 (changelog (find-change-log))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2683 ;; Presumably not portable to non-Unixy systems, along with rcs2log:
43725
60a9d71aad02 (vc-transfer-file): Use `make-temp-file' instead of `make-temp-name'.
André Spiegel <spiegel@gnu.org>
parents: 43586
diff changeset
2684 (tempfile (make-temp-file
25488
48c997ce6c8d (vc-update-change-log): Use small-temporary-file-directory when non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 25406
diff changeset
2685 (expand-file-name "vc"
48c997ce6c8d (vc-update-change-log): Use small-temporary-file-directory when non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 25406
diff changeset
2686 (or small-temporary-file-directory
48c997ce6c8d (vc-update-change-log): Use small-temporary-file-directory when non-nil.
Eli Zaretskii <eliz@gnu.org>
parents: 25406
diff changeset
2687 temporary-file-directory))))
68384
1d4de26bcb1f (vc-default-dired-state-info): Pass FILE to vc-user-login-name.
André Spiegel <spiegel@gnu.org>
parents: 67885
diff changeset
2688 (login-name (or user-login-name
1d4de26bcb1f (vc-default-dired-state-info): Pass FILE to vc-user-login-name.
André Spiegel <spiegel@gnu.org>
parents: 67885
diff changeset
2689 (format "uid%d" (number-to-string (user-uid)))))
14855
52f730593064 (vc-update-change-log): Use add-log-full-name and
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
2690 (full-name (or add-log-full-name
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2691 (user-full-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2692 (user-login-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2693 (format "uid%d" (number-to-string (user-uid)))))
14855
52f730593064 (vc-update-change-log): Use add-log-full-name and
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
2694 (mailing-address (or add-log-mailing-address
52f730593064 (vc-update-change-log): Use add-log-full-name and
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
2695 user-mail-address)))
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2696 (find-file-other-window changelog)
3905
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2697 (barf-if-buffer-read-only)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2698 (vc-buffer-sync)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2699 (undo-boundary)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2700 (goto-char (point-min))
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2701 (push-mark)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2702 (message "Computing change log entries...")
3939
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2703 (message "Computing change log entries... %s"
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2704 (unwind-protect
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2705 (progn
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2706 (setq default-directory odefault)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2707 (if (eq 0 (apply 'call-process
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2708 (expand-file-name "rcs2log"
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2709 exec-directory)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2710 nil (list t tempfile) nil
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2711 "-c" changelog
68384
1d4de26bcb1f (vc-default-dired-state-info): Pass FILE to vc-user-login-name.
André Spiegel <spiegel@gnu.org>
parents: 67885
diff changeset
2712 "-u" (concat login-name
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2713 "\t" full-name
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2714 "\t" mailing-address)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2715 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2716 (lambda (f)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2717 (file-relative-name
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2718 (expand-file-name f odefault)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2719 files)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2720 "done"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2721 (pop-to-buffer (get-buffer-create "*vc*"))
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2722 (erase-buffer)
59011
816dc38b1981 (vc-default-update-changelog): Use insert-file-contents, rather than
André Spiegel <spiegel@gnu.org>
parents: 58642
diff changeset
2723 (insert-file-contents tempfile)
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2724 "failed"))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2725 (setq default-directory (file-name-directory changelog))
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2726 (delete-file tempfile)))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2727
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2728 (defun vc-default-find-revision (backend file rev buffer)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2729 "Provide the new `find-revision' op based on the old `checkout' op.
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2730 This is only for compatibility with old backends. They should be updated
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2731 to provide the `find-revision' operation instead."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2732 (let ((tmpfile (make-temp-file (expand-file-name file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2733 (unwind-protect
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2734 (progn
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2735 (vc-call-backend backend 'checkout file nil rev tmpfile)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2736 (with-current-buffer buffer
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2737 (insert-file-contents-literally tmpfile)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2738 (delete-file tmpfile))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2739
94539
fee32a11924d Name change in preparation for ripping out vc-dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94538
diff changeset
2740 (defun vc-default-prettify-state-info (backend file)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2741 (let* ((state (vc-state file))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2742 (statestring
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2743 (cond
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2744 ((stringp state) (concat "(" state ")"))
93124
97c5b398eee4 * vc-hooks.el (vc-default-mode-line-string): Add case for added files.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93119
diff changeset
2745 ((eq state 'edited) "(modified)")
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2746 ((eq state 'needs-merge) "(merge)")
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
2747 ((eq state 'needs-update) "(update)")
87449
7477a697d7e1 * vc-cvs.el, vc-svn.el: Simplify backend dired-state-info
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87446
diff changeset
2748 ((eq state 'added) "(added)")
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
2749 ((eq state 'removed) "(removed)")
87450
71fc7b1db920 * vc-hooks.el (vc-state): Document new 'ignored and 'unregistered
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87449
diff changeset
2750 ((eq state 'ignored) "(ignored)") ;; dired-hook filters this out
71fc7b1db920 * vc-hooks.el (vc-state): Document new 'ignored and 'unregistered
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87449
diff changeset
2751 ((eq state 'unregistered) "?")
71fc7b1db920 * vc-hooks.el (vc-state): Document new 'ignored and 'unregistered
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87449
diff changeset
2752 ((eq state 'unlocked-changes) "(stale)")
71fc7b1db920 * vc-hooks.el (vc-state): Document new 'ignored and 'unregistered
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87449
diff changeset
2753 ((not state) "(unknown)")))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2754 (buffer
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2755 (get-file-buffer file))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2756 (modflag
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2757 (if (and buffer (buffer-modified-p buffer)) "+" "")))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2758 (concat statestring modflag)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2759
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2760 (defun vc-default-rename-file (backend old new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2761 (condition-case nil
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2762 (add-name-to-file old new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2763 (error (rename-file old new)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2764 (vc-delete-file old)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2765 (with-current-buffer (find-file-noselect new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2766 (vc-register)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2767
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
2768 (defalias 'vc-default-check-headers 'ignore)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2769
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2770 (defun vc-default-log-view-mode (backend) (log-view-mode))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2771
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2772 (defun vc-default-show-log-entry (backend rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2773 (with-no-warnings
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2774 (log-view-goto-rev rev)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2775
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2776 (defun vc-default-comment-history (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2777 "Return a string with all log entries stored in BACKEND for FILE."
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
2778 (when (vc-find-backend-function backend 'print-log)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
2779 (with-current-buffer "*vc*"
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
2780 (vc-call print-log (list file))
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
2781 (vc-call-backend backend 'wash-log)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
2782 (buffer-string))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2783
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2784 (defun vc-default-receive-file (backend file rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2785 "Let BACKEND receive FILE from another version control system."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2786 (vc-call-backend backend 'register file rev ""))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2787
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2788 (defun vc-default-create-snapshot (backend dir name branchp)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2789 (when branchp
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2790 (error "VC backend %s does not support module branches" backend))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2791 (let ((result (vc-snapshot-precondition dir)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2792 (if (stringp result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2793 (error "File %s is not up-to-date" result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2794 (vc-file-tree-walk
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2795 dir
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2796 (lambda (f)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2797 (vc-call assign-name f name))))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2798
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2799 (defun vc-default-retrieve-snapshot (backend dir name update)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2800 (if (string= name "")
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2801 (progn
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2802 (vc-file-tree-walk
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2803 dir
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2804 (lambda (f) (and
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2805 (vc-up-to-date-p f)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2806 (vc-error-occurred
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2807 (vc-call checkout f nil "")
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2808 (when update (vc-resynch-buffer f t t)))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2809 (let ((result (vc-snapshot-precondition dir)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2810 (if (stringp result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2811 (error "File %s is locked" result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2812 (setq update (and (eq result 'visited) update))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2813 (vc-file-tree-walk
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2814 dir
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2815 (lambda (f) (vc-error-occurred
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2816 (vc-call checkout f nil name)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2817 (when update (vc-resynch-buffer f t t)))))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2818
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2819 (defun vc-default-revert (backend file contents-done)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2820 (unless contents-done
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2821 (let ((rev (vc-working-revision file))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2822 (file-buffer (or (get-file-buffer file) (current-buffer))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2823 (message "Checking out %s..." file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2824 (let ((failed t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2825 (backup-name (car (find-backup-file-name file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2826 (when backup-name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2827 (copy-file file backup-name 'ok-if-already-exists 'keep-date)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2828 (unless (file-writable-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2829 (set-file-modes file (logior (file-modes file) 128))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2830 (unwind-protect
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2831 (let ((coding-system-for-read 'no-conversion)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2832 (coding-system-for-write 'no-conversion))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2833 (with-temp-file file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2834 (let ((outbuf (current-buffer)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2835 ;; Change buffer to get local value of vc-checkout-switches.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2836 (with-current-buffer file-buffer
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2837 (let ((default-directory (file-name-directory file)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2838 (vc-call find-revision file rev outbuf)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2839 (setq failed nil))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2840 (when backup-name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2841 (if failed
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2842 (rename-file backup-name file 'ok-if-already-exists)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2843 (and (not vc-make-backup-files) (delete-file backup-name))))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2844 (message "Checking out %s...done" file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2845
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
2846 (defalias 'vc-default-revision-completion-table 'ignore)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2847
94059
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2848 (defun vc-default-dir-status-files (backend dir files default-state update-function)
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2849 (funcall update-function
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2850 (mapcar (lambda (file) (list file default-state)) files)))
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2851
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2852 (defun vc-check-headers ()
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2853 "Check if the current file has any headers in it."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2854 (interactive)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2855 (vc-call-backend (vc-backend buffer-file-name) 'check-headers))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2856
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2857 ;;; Annotate functionality
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2858
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2859 ;; Declare globally instead of additional parameter to
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2860 ;; temp-buffer-show-function (not possible to pass more than one
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2861 ;; parameter). The use of annotate-ratio is deprecated in favor of
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2862 ;; annotate-mode, which replaces it with the more sensible "span-to
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2863 ;; days", along with autoscaling support.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2864 (defvar vc-annotate-ratio nil "Global variable.")
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2865
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2866 ;; internal buffer-local variables
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2867 (defvar vc-annotate-backend nil)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2868 (defvar vc-annotate-parent-file nil)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2869 (defvar vc-annotate-parent-rev nil)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2870 (defvar vc-annotate-parent-display-mode nil)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2871
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2872 (defconst vc-annotate-font-lock-keywords
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2873 ;; The fontification is done by vc-annotate-lines instead of font-lock.
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2874 '((vc-annotate-lines)))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2875
53663
34fd515d8bb8 (vc-annotate-mode): Inherit from fundamental-mode and activate
André Spiegel <spiegel@gnu.org>
parents: 53630
diff changeset
2876 (define-derived-mode vc-annotate-mode fundamental-mode "Annotate"
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2877 "Major mode for output buffers of the `vc-annotate' command.
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2878
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2879 You can use the mode-specific menu to alter the time-span of the used
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2880 colors. See variable `vc-annotate-menu-elements' for customizing the
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2881 menu items."
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2882 ;; Frob buffer-invisibility-spec so that if it is originally a naked t,
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2883 ;; it will become a list, to avoid initial annotations being invisible.
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2884 (add-to-invisibility-spec 'foo)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2885 (remove-from-invisibility-spec 'foo)
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2886 (set (make-local-variable 'truncate-lines) t)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2887 (set (make-local-variable 'font-lock-defaults)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2888 '(vc-annotate-font-lock-keywords t))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2889 (view-mode 1))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2890
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2891 (defun vc-annotate-toggle-annotation-visibility ()
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2892 "Toggle whether or not the annotation is visible."
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2893 (interactive)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2894 (funcall (if (memq 'vc-annotate-annotation buffer-invisibility-spec)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2895 'remove-from-invisibility-spec
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2896 'add-to-invisibility-spec)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2897 'vc-annotate-annotation)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2898 (force-window-update (current-buffer)))
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2899
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2900 (defun vc-annotate-display-default (ratio)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2901 "Display the output of \\[vc-annotate] using the default color range.
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2902 The color range is given by `vc-annotate-color-map', scaled by RATIO.
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2903 The current time is used as the offset."
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2904 (interactive (progn (kill-local-variable 'vc-annotate-color-map) '(1.0)))
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2905 (message "Redisplaying annotation...")
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2906 (vc-annotate-display ratio)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2907 (message "Redisplaying annotation...done"))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2908
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2909 (defun vc-annotate-oldest-in-map (color-map)
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2910 "Return the oldest time in the COLOR-MAP."
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2911 ;; Since entries should be sorted, we can just use the last one.
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2912 (caar (last color-map)))
67767
f4a3c7808545 (vc-annotate-car-last-cons): Defn moved up.
Richard M. Stallman <rms@gnu.org>
parents: 67755
diff changeset
2913
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2914 (defun vc-annotate-get-time-set-line-props ()
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2915 (let ((bol (point))
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2916 (date (vc-call-backend vc-annotate-backend 'annotate-time))
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2917 (inhibit-read-only t))
87590
3df0bed5b17a (vc-process-sentinel): Fix apparent typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87512
diff changeset
2918 (assert (>= (point) bol))
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2919 (put-text-property bol (point) 'invisible 'vc-annotate-annotation)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2920 date))
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2921
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2922 (defun vc-annotate-display-autoscale (&optional full)
57114
deddb5e7acc3 (annotate-time): Document point handling.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56952
diff changeset
2923 "Highlight the output of \\[vc-annotate] using an autoscaled color map.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2924 Autoscaling means that the map is scaled from the current time to the
57904
f6abcbacf62a (vc-annotate-display-autoscale): Add prefix-arg
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57653
diff changeset
2925 oldest annotation in the buffer, or, with prefix argument FULL, to
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2926 cover the range from the oldest annotation to the newest."
57904
f6abcbacf62a (vc-annotate-display-autoscale): Add prefix-arg
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57653
diff changeset
2927 (interactive "P")
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2928 (let ((newest 0.0)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2929 (oldest 999999.) ;Any CVS users at the founding of Rome?
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2930 (current (vc-annotate-convert-time (current-time)))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2931 date)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2932 (message "Redisplaying annotation...")
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2933 ;; Run through this file and find the oldest and newest dates annotated.
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2934 (save-excursion
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2935 (goto-char (point-min))
81739
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
2936 (while (not (eobp))
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2937 (when (setq date (vc-annotate-get-time-set-line-props))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2938 (when (> date newest)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2939 (setq newest date))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2940 (when (< date oldest)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2941 (setq oldest date)))
81739
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
2942 (forward-line 1)))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2943 (vc-annotate-display
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2944 (/ (- (if full newest current) oldest)
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2945 (vc-annotate-oldest-in-map vc-annotate-color-map))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2946 (if full newest))
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
2947 (message "Redisplaying annotation...done \(%s\)"
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
2948 (if full
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
2949 (format "Spanned from %.1f to %.1f days old"
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2950 (- current oldest)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2951 (- current newest))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2952 (format "Spanned to %.1f days old" (- current oldest))))))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2953
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2954 ;; Menu -- Using easymenu.el
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2955 (easy-menu-define vc-annotate-mode-menu vc-annotate-mode-map
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2956 "VC Annotate Display Menu"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2957 `("VC-Annotate"
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
2958 ["By Color Map Range" (unless (null vc-annotate-display-mode)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2959 (setq vc-annotate-display-mode nil)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2960 (vc-annotate-display-select))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2961 :style toggle :selected (null vc-annotate-display-mode)]
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2962 ,@(let ((oldest-in-map (vc-annotate-oldest-in-map vc-annotate-color-map)))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2963 (mapcar (lambda (element)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2964 (let ((days (* element oldest-in-map)))
67882
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2965 `[,(format "Span %.1f days" days)
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2966 (vc-annotate-display-select nil ,days)
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2967 :style toggle :selected
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2968 (eql vc-annotate-display-mode ,days) ]))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2969 vc-annotate-menu-elements))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2970 ["Span ..."
67882
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2971 (vc-annotate-display-select
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2972 nil (float (string-to-number (read-string "Span how many days? "))))]
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2973 "--"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2974 ["Span to Oldest"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2975 (unless (eq vc-annotate-display-mode 'scale)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2976 (vc-annotate-display-select nil 'scale))
91944
81d2b4150534 (vc-status-mode-menu): New menu for vc-status.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91876
diff changeset
2977 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2978 "Use an autoscaled color map from the oldest annotation to the current time"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2979 :style toggle :selected
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2980 (eq vc-annotate-display-mode 'scale)]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2981 ["Span Oldest->Newest"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2982 (unless (eq vc-annotate-display-mode 'fullscale)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2983 (vc-annotate-display-select nil 'fullscale))
91944
81d2b4150534 (vc-status-mode-menu): New menu for vc-status.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91876
diff changeset
2984 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2985 "Use an autoscaled color map from the oldest to the newest annotation"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2986 :style toggle :selected
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2987 (eq vc-annotate-display-mode 'fullscale)]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2988 "--"
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2989 ["Toggle annotation visibility" vc-annotate-toggle-annotation-visibility
91944
81d2b4150534 (vc-status-mode-menu): New menu for vc-status.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91876
diff changeset
2990 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2991 "Toggle whether the annotation is visible or not"]
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2992 ["Annotate previous revision" vc-annotate-prev-revision
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2993 :help "Visit the annotation of the revision previous to this one"]
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2994 ["Annotate next revision" vc-annotate-next-revision
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2995 :help "Visit the annotation of the revision after this one"]
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2996 ["Annotate revision at line" vc-annotate-revision-at-line
91944
81d2b4150534 (vc-status-mode-menu): New menu for vc-status.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91876
diff changeset
2997 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2998 "Visit the annotation of the revision identified in the current line"]
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2999 ["Annotate revision previous to line" vc-annotate-revision-previous-to-line
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3000 :help "Visit the annotation of the revision before the revision at line"]
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3001 ["Annotate latest revision" vc-annotate-working-revision
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3002 :help "Visit the annotation of the working revision of this file"]
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3003 ["Show log of revision at line" vc-annotate-show-log-revision-at-line
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3004 :help "Visit the log of the revision at line"]
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3005 ["Show diff of revision at line" vc-annotate-show-diff-revision-at-line
91944
81d2b4150534 (vc-status-mode-menu): New menu for vc-status.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91876
diff changeset
3006 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3007 "Visit the diff of the revision at line from its previous revision"]
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3008 ["Visit revision at line" vc-annotate-find-revision-at-line
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3009 :help "Visit the revision identified in the current line"]))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3010
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3011 (defun vc-annotate-display-select (&optional buffer mode)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3012 "Highlight the output of \\[vc-annotate].
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3013 By default, the current buffer is highlighted, unless overridden by
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3014 BUFFER. `vc-annotate-display-mode' specifies the highlighting mode to
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3015 use; you may override this using the second optional arg MODE."
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3016 (interactive)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3017 (when mode (setq vc-annotate-display-mode mode))
69943
7d69833e0c1a (vc-ensure-vc-buffer): Only change current-buffer, not the window config.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69939
diff changeset
3018 (pop-to-buffer (or buffer (current-buffer)))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3019 (cond ((null vc-annotate-display-mode)
67882
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3020 ;; The ratio is global, thus relative to the global color-map.
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3021 (kill-local-variable 'vc-annotate-color-map)
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3022 (vc-annotate-display-default (or vc-annotate-ratio 1.0)))
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3023 ;; One of the auto-scaling modes
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3024 ((eq vc-annotate-display-mode 'scale)
81739
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3025 (vc-exec-after `(vc-annotate-display-autoscale)))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3026 ((eq vc-annotate-display-mode 'fullscale)
81739
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3027 (vc-exec-after `(vc-annotate-display-autoscale t)))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3028 ((numberp vc-annotate-display-mode) ; A fixed number of days lookback
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3029 (vc-annotate-display-default
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3030 (/ vc-annotate-display-mode
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3031 (vc-annotate-oldest-in-map vc-annotate-color-map))))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3032 (t (error "No such display mode: %s"
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3033 vc-annotate-display-mode))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3034
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3035 ;;;###autoload
91876
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3036 (defun vc-annotate (file rev &optional display-mode buf move-point-to)
63262
10744649cbb8 (vc-annotate): Fix spellings in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 62610
diff changeset
3037 "Display the edit history of the current file using colors.
39233
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3038
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3039 This command creates a buffer that shows, for each line of the current
63262
10744649cbb8 (vc-annotate): Fix spellings in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 62610
diff changeset
3040 file, when it was last edited and by whom. Additionally, colors are
39233
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3041 used to show the age of each line--blue means oldest, red means
63262
10744649cbb8 (vc-annotate): Fix spellings in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 62610
diff changeset
3042 youngest, and intermediate colors indicate intermediate ages. By
39233
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3043 default, the time scale stretches back one year into the past;
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3044 everything that is older than that is shown in blue.
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3045
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3046 With a prefix argument, this command asks two questions in the
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3047 minibuffer. First, you may enter a revision number; then the buffer
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3048 displays and annotates that revision instead of the working revision
39388
bc299a98338c Doc fix
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39309
diff changeset
3049 \(type RET in the minibuffer to leave that default unchanged). Then,
40440
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
3050 you are prompted for the time span in days which the color range
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
3051 should cover. For example, a time span of 20 days means that changes
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
3052 over the past 20 days are shown in red to blue, according to their
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
3053 age, and everything that is older than that is shown in blue.
39233
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3054
91876
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3055 If MOVE-POINT-TO is given, move the point to that line.
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3056
39233
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3057 Customization variables:
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3058
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3059 `vc-annotate-menu-elements' customizes the menu elements of the
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
3060 mode-specific menu. `vc-annotate-color-map' and
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
3061 `vc-annotate-very-old-color' define the mapping of time to colors.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
3062 `vc-annotate-background' specifies the background color."
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3063 (interactive
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3064 (save-current-buffer
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3065 (vc-ensure-vc-buffer)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3066 (list buffer-file-name
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3067 (let ((def (vc-working-revision buffer-file-name)))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3068 (if (null current-prefix-arg) def
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3069 (read-string
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3070 (format "Annotate from revision (default %s): " def)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3071 nil nil def)))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3072 (if (null current-prefix-arg)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3073 vc-annotate-display-mode
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3074 (float (string-to-number
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3075 (read-string "Annotate span days (default 20): "
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3076 nil nil "20")))))))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
3077 (vc-ensure-vc-buffer)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3078 (setq vc-annotate-display-mode display-mode) ;Not sure why. --Stef
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3079 (let* ((temp-buffer-name (format "*Annotate %s (rev %s)*" (buffer-name) rev))
70007
19ab508f832f (vc-annotate): Arrange for point to end up at the same
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70006
diff changeset
3080 (temp-buffer-show-function 'vc-annotate-display-select)
19ab508f832f (vc-annotate): Arrange for point to end up at the same
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70006
diff changeset
3081 ;; If BUF is specified, we presume the caller maintains current line,
19ab508f832f (vc-annotate): Arrange for point to end up at the same
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70006
diff changeset
3082 ;; so we don't need to do it here. This implementation may give
19ab508f832f (vc-annotate): Arrange for point to end up at the same
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70006
diff changeset
3083 ;; strange results occasionally in the case of REV != WORKFILE-REV.
91876
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3084 (current-line (or move-point-to (unless buf (line-number-at-pos)))))
33546
4f99fed47d24 (vc-annotate): Changed handling of prefix arg; now asks for both
André Spiegel <spiegel@gnu.org>
parents: 32950
diff changeset
3085 (message "Annotating...")
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3086 ;; If BUF is specified it tells in which buffer we should put the
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3087 ;; annotations. This is used when switching annotations to another
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3088 ;; revision, so we should update the buffer's name.
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3089 (when buf (with-current-buffer buf
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3090 (rename-buffer temp-buffer-name t)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3091 ;; In case it had to be uniquified.
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3092 (setq temp-buffer-name (buffer-name))))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
3093 (with-output-to-temp-buffer temp-buffer-name
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3094 (vc-call annotate-command file (get-buffer temp-buffer-name) rev)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3095 ;; we must setup the mode first, and then set our local
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3096 ;; variables before the show-function is called at the exit of
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3097 ;; with-output-to-temp-buffer
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3098 (with-current-buffer temp-buffer-name
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3099 (unless (equal major-mode 'vc-annotate-mode)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3100 (vc-annotate-mode))
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3101 (set (make-local-variable 'vc-annotate-backend) (vc-backend file))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3102 (set (make-local-variable 'vc-annotate-parent-file) file)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3103 (set (make-local-variable 'vc-annotate-parent-rev) rev)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3104 (set (make-local-variable 'vc-annotate-parent-display-mode)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3105 display-mode)))
81740
8c6a9f107a7e (vc-annotate): Jump to line and output message only after the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81739
diff changeset
3106
82306
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3107 (with-current-buffer temp-buffer-name
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3108 (vc-exec-after
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3109 `(progn
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3110 ;; Ideally, we'd rather not move point if the user has already
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3111 ;; moved it elsewhere, but really point here is not the position
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3112 ;; of the user's cursor :-(
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3113 (when ,current-line ;(and (bobp))
84586
3048d1b37570 (vc-process-sentinel): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84336
diff changeset
3114 (goto-line ,current-line)
85794
b627bc69db6a (vc-annotate): Fix omission bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 85606
diff changeset
3115 (setq vc-sentinel-movepoint (point)))
82306
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3116 (unless (active-minibuffer-window)
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3117 (message "Annotating... done")))))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3118
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3119 (defun vc-annotate-prev-revision (prefix)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3120 "Visit the annotation of the revision previous to this one.
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3121
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3122 With a numeric prefix argument, annotate the revision that many
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3123 revisions previous."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3124 (interactive "p")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3125 (vc-annotate-warp-revision (- 0 prefix)))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3126
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3127 (defun vc-annotate-next-revision (prefix)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3128 "Visit the annotation of the revision after this one.
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3129
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3130 With a numeric prefix argument, annotate the revision that many
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3131 revisions after."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3132 (interactive "p")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3133 (vc-annotate-warp-revision prefix))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3134
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3135 (defun vc-annotate-working-revision ()
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3136 "Visit the annotation of the working revision of this file."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3137 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3138 (if (not (equal major-mode 'vc-annotate-mode))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3139 (message "Cannot be invoked outside of a vc annotate buffer")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3140 (let ((warp-rev (vc-working-revision vc-annotate-parent-file)))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3141 (if (equal warp-rev vc-annotate-parent-rev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3142 (message "Already at revision %s" warp-rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3143 (vc-annotate-warp-revision warp-rev)))))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3144
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3145 (defun vc-annotate-extract-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3146 "Extract the revision number of the current line."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3147 ;; This function must be invoked from a buffer in vc-annotate-mode
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3148 (vc-call-backend vc-annotate-backend 'annotate-extract-revision-at-line))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3149
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3150 (defun vc-annotate-revision-at-line ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3151 "Visit the annotation of the revision identified in the current line."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3152 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3153 (if (not (equal major-mode 'vc-annotate-mode))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3154 (message "Cannot be invoked outside of a vc annotate buffer")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3155 (let ((rev-at-line (vc-annotate-extract-revision-at-line)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3156 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3157 (message "Cannot extract revision number from the current line")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3158 (if (equal rev-at-line vc-annotate-parent-rev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3159 (message "Already at revision %s" rev-at-line)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3160 (vc-annotate-warp-revision rev-at-line))))))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3161
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3162 (defun vc-annotate-find-revision-at-line ()
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3163 "Visit the revision identified in the current line."
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3164 (interactive)
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3165 (if (not (equal major-mode 'vc-annotate-mode))
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3166 (message "Cannot be invoked outside of a vc annotate buffer")
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3167 (let ((rev-at-line (vc-annotate-extract-revision-at-line)))
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3168 (if (not rev-at-line)
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3169 (message "Cannot extract revision number from the current line")
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3170 (vc-revision-other-window rev-at-line)))))
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3171
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3172 (defun vc-annotate-revision-previous-to-line ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3173 "Visit the annotation of the revision before the revision at line."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3174 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3175 (if (not (equal major-mode 'vc-annotate-mode))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3176 (message "Cannot be invoked outside of a vc annotate buffer")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3177 (let ((rev-at-line (vc-annotate-extract-revision-at-line))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3178 (prev-rev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3179 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3180 (message "Cannot extract revision number from the current line")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3181 (setq prev-rev
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3182 (vc-call previous-revision vc-annotate-parent-file rev-at-line))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3183 (vc-annotate-warp-revision prev-rev)))))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3184
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3185 (defun vc-annotate-show-log-revision-at-line ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3186 "Visit the log of the revision at line."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3187 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3188 (if (not (equal major-mode 'vc-annotate-mode))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3189 (message "Cannot be invoked outside of a vc annotate buffer")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3190 (let ((rev-at-line (vc-annotate-extract-revision-at-line)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3191 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3192 (message "Cannot extract revision number from the current line")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3193 (vc-print-log rev-at-line)))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3194
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3195 (defun vc-annotate-show-diff-revision-at-line ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3196 "Visit the diff of the revision at line from its previous revision."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3197 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3198 (if (not (equal major-mode 'vc-annotate-mode))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3199 (message "Cannot be invoked outside of a vc annotate buffer")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3200 (let ((rev-at-line (vc-annotate-extract-revision-at-line))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3201 (prev-rev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3202 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3203 (message "Cannot extract revision number from the current line")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3204 (setq prev-rev
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3205 (vc-call previous-revision vc-annotate-parent-file rev-at-line))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3206 (if (not prev-rev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3207 (message "Cannot diff from any revision prior to %s" rev-at-line)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3208 (save-window-excursion
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
3209 (vc-diff-internal
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
3210 nil
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
3211 (cons (vc-backend vc-annotate-parent-file)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
3212 (list vc-annotate-parent-file))
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
3213 prev-rev rev-at-line))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3214 (switch-to-buffer "*vc-diff*"))))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3215
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3216 (defun vc-annotate-warp-revision (revspec)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3217 "Annotate the revision described by REVSPEC.
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3218
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3219 If REVSPEC is a positive integer, warp that many revisions
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3220 forward, if possible, otherwise echo a warning message. If
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3221 REVSPEC is a negative integer, warp that many revisions backward,
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3222 if possible, otherwise echo a warning message. If REVSPEC is a
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3223 string, then it describes a revision number, so warp to that
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3224 revision."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3225 (if (not (equal major-mode 'vc-annotate-mode))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3226 (message "Cannot be invoked outside of a vc annotate buffer")
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3227 (let* ((buf (current-buffer))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3228 (oldline (line-number-at-pos))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3229 (revspeccopy revspec)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3230 (newrev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3231 (cond
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3232 ((and (integerp revspec) (> revspec 0))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3233 (setq newrev vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3234 (while (and (> revspec 0) newrev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3235 (setq newrev (vc-call next-revision
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3236 vc-annotate-parent-file newrev))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3237 (setq revspec (1- revspec)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3238 (unless newrev
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3239 (message "Cannot increment %d revisions from revision %s"
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3240 revspeccopy vc-annotate-parent-rev)))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3241 ((and (integerp revspec) (< revspec 0))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3242 (setq newrev vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3243 (while (and (< revspec 0) newrev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3244 (setq newrev (vc-call previous-revision
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3245 vc-annotate-parent-file newrev))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3246 (setq revspec (1+ revspec)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3247 (unless newrev
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3248 (message "Cannot decrement %d revisions from revision %s"
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3249 (- 0 revspeccopy) vc-annotate-parent-rev)))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3250 ((stringp revspec) (setq newrev revspec))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3251 (t (error "Invalid argument to vc-annotate-warp-revision")))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3252 (when newrev
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3253 (vc-annotate vc-annotate-parent-file newrev
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3254 vc-annotate-parent-display-mode
91876
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3255 buf
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3256 ;; Pass the current line so that vc-annotate will
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3257 ;; place the point in the line.
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3258 (min oldline (progn (goto-char (point-max))
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3259 (forward-line -1)
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3260 (line-number-at-pos))))))))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3261
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3262 (defun vc-annotate-compcar (threshold a-list)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3263 "Test successive cons cells of A-LIST against THRESHOLD.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3264 Return the first cons cell with a car that is not less than THRESHOLD,
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3265 nil if no such cell exists."
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3266 (let ((i 1)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3267 (tmp-cons (car a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3268 (while (and tmp-cons (< (car tmp-cons) threshold))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3269 (setq tmp-cons (car (nthcdr i a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3270 (setq i (+ i 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3271 tmp-cons)) ; Return the appropriate value
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3272
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3273 (defun vc-annotate-convert-time (time)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3274 "Convert a time value to a floating-point number of days.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3275 The argument TIME is a list as returned by `current-time' or
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3276 `encode-time', only the first two elements of that list are considered."
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3277 (/ (+ (* (float (car time)) (lsh 1 16)) (cadr time)) 24 3600))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3278
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3279 (defun vc-annotate-difference (&optional offset)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3280 "Return the time span in days to the next annotation.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3281 This calls the backend function annotate-time, and returns the
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3282 difference in days between the time returned and the current time,
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3283 or OFFSET if present."
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
3284 (let ((next-time (vc-annotate-get-time-set-line-props)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3285 (when next-time
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3286 (- (or offset
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3287 (vc-call-backend vc-annotate-backend 'annotate-current-time))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3288 next-time))))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3289
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3290 (defun vc-default-annotate-current-time (backend)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3291 "Return the current time, encoded as fractional days."
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3292 (vc-annotate-convert-time (current-time)))
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
3293
51764
3c3b6501b4f1 (vc-annotate-offset): Move defvar up.
John Paul Wallington <jpw@pobox.com>
parents: 51762
diff changeset
3294 (defvar vc-annotate-offset nil)
3c3b6501b4f1 (vc-annotate-offset): Move defvar up.
John Paul Wallington <jpw@pobox.com>
parents: 51762
diff changeset
3295
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3296 (defun vc-annotate-display (ratio &optional offset)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3297 "Highlight `vc-annotate' output in the current buffer.
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3298 RATIO, is the expansion that should be applied to `vc-annotate-color-map'.
49619
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
3299 The annotations are relative to the current time, unless overridden by OFFSET."
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3300 (when (/= ratio 1.0)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3301 (set (make-local-variable 'vc-annotate-color-map)
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3302 (mapcar (lambda (elem) (cons (* (car elem) ratio) (cdr elem)))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3303 vc-annotate-color-map)))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3304 (set (make-local-variable 'vc-annotate-offset) offset)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3305 (font-lock-mode 1))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3306
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3307 (defun vc-annotate-lines (limit)
81739
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3308 (while (< (point) limit)
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3309 (let ((difference (vc-annotate-difference vc-annotate-offset))
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3310 (start (point))
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3311 (end (progn (forward-line 1) (point))))
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3312 (when difference
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3313 (let* ((color (or (vc-annotate-compcar difference vc-annotate-color-map)
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3314 (cons nil vc-annotate-very-old-color)))
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3315 ;; substring from index 1 to remove any leading `#' in the name
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3316 (face-name (concat "vc-annotate-face-"
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3317 (if (string-equal
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3318 (substring (cdr color) 0 1) "#")
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3319 (substring (cdr color) 1)
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3320 (cdr color))))
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3321 ;; Make the face if not done.
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3322 (face (or (intern-soft face-name)
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3323 (let ((tmp-face (make-face (intern face-name))))
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3324 (set-face-foreground tmp-face (cdr color))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3325 (when vc-annotate-background
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3326 (set-face-background tmp-face
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3327 vc-annotate-background))
81739
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3328 tmp-face)))) ; Return the face
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3329 (put-text-property start end 'face face)))))
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3330 ;; Pretend to font-lock there were no matches.
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3331 nil)
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3332
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3333
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3334 ;; Set up key bindings for use while editing log messages
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3335
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
3336 (defun vc-log-edit (fileset)
47765
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
3337 "Set up `log-edit' for use with VC on FILE."
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
3338 (setq default-directory
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
3339 (with-current-buffer vc-parent-buffer default-directory))
86908
6e9e38d61817 * log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86503
diff changeset
3340 (log-edit 'vc-finish-logentry
6e9e38d61817 * log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86503
diff changeset
3341 nil
6e9e38d61817 * log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86503
diff changeset
3342 `((log-edit-listfun . (lambda () ',fileset))
6e9e38d61817 * log-edit.el (log-edit-show-diff): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86503
diff changeset
3343 (log-edit-diff-function . (lambda () (vc-diff nil)))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
3344 (set (make-local-variable 'vc-log-fileset) fileset)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3345 (make-local-variable 'vc-log-revision)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
3346 (set-buffer-modified-p nil)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3347 (setq buffer-file-name nil))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3348
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3349 ;; These things should probably be generally available
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3350
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3351 (defun vc-file-tree-walk (dirname func &rest args)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3352 "Walk recursively through DIRNAME.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3353 Invoke FUNC f ARGS on each VC-managed file f underneath it."
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3354 (vc-file-tree-walk-internal (expand-file-name dirname) func args)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3355 (message "Traversing directory %s...done" dirname))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3356
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3357 (defun vc-file-tree-walk-internal (file func args)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3358 (if (not (file-directory-p file))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3359 (when (vc-backend file) (apply func file args))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3360 (message "Traversing directory %s..." (abbreviate-file-name file))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3361 (let ((dir (file-name-as-directory file)))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3362 (mapcar
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3363 (lambda (f) (or
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3364 (string-equal f ".")
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3365 (string-equal f "..")
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3366 (member f vc-directory-exclusion-list)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3367 (let ((dirf (expand-file-name f dir)))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3368 (or
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3369 (file-symlink-p dirf) ;; Avoid possible loops.
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3370 (vc-file-tree-walk-internal dirf func args)))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3371 (directory-files dir)))))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3372
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3373 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3374
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3375 ;; DEVELOPER'S NOTES ON CONCURRENCY PROBLEMS IN THIS CODE
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3376 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3377 ;; These may be useful to anyone who has to debug or extend the package.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3378 ;; (Note that this information corresponds to versions 5.x. Some of it
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3379 ;; might have been invalidated by the additions to support branching
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3380 ;; and RCS keyword lookup. AS, 1995/03/24)
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3381 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3382 ;; A fundamental problem in VC is that there are time windows between
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3383 ;; vc-next-action's computations of the file's version-control state and
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3384 ;; the actions that change it. This is a window open to lossage in a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3385 ;; multi-user environment; someone else could nip in and change the state
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3386 ;; of the master during it.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3387 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3388 ;; The performance problem is that rlog/prs calls are very expensive; we want
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3389 ;; to avoid them as much as possible.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3390 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3391 ;; ANALYSIS:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3392 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3393 ;; The performance problem, it turns out, simplifies in practice to the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3394 ;; problem of making vc-state fast. The two other functions that call
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3395 ;; prs/rlog will not be so commonly used that the slowdown is a problem; one
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3396 ;; makes snapshots, the other deletes the calling user's last change in the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3397 ;; master.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3398 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3399 ;; The race condition implies that we have to either (a) lock the master
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3400 ;; during the entire execution of vc-next-action, or (b) detect and
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3401 ;; recover from errors resulting from dispatch on an out-of-date state.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3402 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3403 ;; Alternative (a) appears to be infeasible. The problem is that we can't
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3404 ;; guarantee that the lock will ever be removed. Suppose a user starts a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3405 ;; checkin, the change message buffer pops up, and the user, having wandered
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3406 ;; off to do something else, simply forgets about it?
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3407 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3408 ;; Alternative (b), on the other hand, works well with a cheap way to speed up
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3409 ;; vc-state. Usually, if a file is registered, we can read its locked/
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3410 ;; unlocked state and its current owner from its permissions.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3411 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3412 ;; This shortcut will fail if someone has manually changed the workfile's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3413 ;; permissions; also if developers are munging the workfile in several
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3414 ;; directories, with symlinks to a master (in this latter case, the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3415 ;; permissions shortcut will fail to detect a lock asserted from another
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3416 ;; directory).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3417 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3418 ;; Note that these cases correspond exactly to the errors which could happen
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3419 ;; because of a competing checkin/checkout race in between two instances of
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3420 ;; vc-next-action.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3421 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3422 ;; For VC's purposes, a workfile/master pair may have the following states:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3423 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3424 ;; A. Unregistered. There is a workfile, there is no master.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3425 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3426 ;; B. Registered and not locked by anyone.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3427 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3428 ;; C. Locked by calling user and unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3429 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3430 ;; D. Locked by the calling user and changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3431 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3432 ;; E. Locked by someone other than the calling user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3433 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3434 ;; This makes for 25 states and 20 error conditions. Here's the matrix:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3435 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3436 ;; VC's idea of state
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3437 ;; |
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3438 ;; V Actual state RCS action SCCS action Effect
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3439 ;; A B C D E
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3440 ;; A . 1 2 3 4 ci -u -t- admin -fb -i<file> initial admin
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3441 ;; B 5 . 6 7 8 co -l get -e checkout
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3442 ;; C 9 10 . 11 12 co -u unget; get revert
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3443 ;; D 13 14 15 . 16 ci -u -m<comment> delta -y<comment>; get checkin
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3444 ;; E 17 18 19 20 . rcs -u -M -l unget -n ; get -g steal lock
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3445 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3446 ;; All commands take the master file name as a last argument (not shown).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3447 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3448 ;; In the discussion below, a "self-race" is a pathological situation in
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3449 ;; which VC operations are being attempted simultaneously by two or more
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3450 ;; Emacsen running under the same username.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3451 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3452 ;; The vc-next-action code has the following windows:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3453 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3454 ;; Window P:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3455 ;; Between the check for existence of a master file and the call to
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3456 ;; admin/checkin in vc-buffer-admin (apparent state A). This window may
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3457 ;; never close if the initial-comment feature is on.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3458 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3459 ;; Window Q:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3460 ;; Between the call to vc-workfile-unchanged-p in and the immediately
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3461 ;; following revert (apparent state C).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3462 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3463 ;; Window R:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3464 ;; Between the call to vc-workfile-unchanged-p in and the following
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3465 ;; checkin (apparent state D). This window may never close.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3466 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3467 ;; Window S:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3468 ;; Between the unlock and the immediately following checkout during a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3469 ;; revert operation (apparent state C). Included in window Q.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3470 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3471 ;; Window T:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3472 ;; Between vc-state and the following checkout (apparent state B).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3473 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3474 ;; Window U:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3475 ;; Between vc-state and the following revert (apparent state C).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3476 ;; Includes windows Q and S.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3477 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3478 ;; Window V:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3479 ;; Between vc-state and the following checkin (apparent state
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3480 ;; D). This window may never be closed if the user fails to complete the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3481 ;; checkin message. Includes window R.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3482 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3483 ;; Window W:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3484 ;; Between vc-state and the following steal-lock (apparent
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3485 ;; state E). This window may never close if the user fails to complete
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3486 ;; the steal-lock message. Includes window X.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3487 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3488 ;; Window X:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3489 ;; Between the unlock and the immediately following re-lock during a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3490 ;; steal-lock operation (apparent state E). This window may never close
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3491 ;; if the user fails to complete the steal-lock message.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3492 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3493 ;; Errors:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3494 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3495 ;; Apparent state A ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3496 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3497 ;; 1. File looked unregistered but is actually registered and not locked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3498 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3499 ;; Potential cause: someone else's admin during window P, with
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3500 ;; caller's admin happening before their checkout.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3501 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3502 ;; RCS: Prior to version 5.6.4, ci fails with message
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3503 ;; "no lock set by <user>". From 5.6.4 onwards, VC uses the new
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3504 ;; ci -i option and the message is "<file>,v: already exists".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3505 ;; SCCS: admin will fail with error (ad19).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3506 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3507 ;; We can let these errors be passed up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3508 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3509 ;; 2. File looked unregistered but is actually locked by caller, unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3510 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3511 ;; Potential cause: self-race during window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3512 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3513 ;; RCS: Prior to version 5.6.4, reverts the file to the last saved
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3514 ;; version and unlocks it. From 5.6.4 onwards, VC uses the new
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3515 ;; ci -i option, failing with message "<file>,v: already exists".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3516 ;; SCCS: will fail with error (ad19).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3517 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3518 ;; Either of these consequences is acceptable.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3519 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3520 ;; 3. File looked unregistered but is actually locked by caller, changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3521 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3522 ;; Potential cause: self-race during window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3523 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3524 ;; RCS: Prior to version 5.6.4, VC registers the caller's workfile as
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3525 ;; a delta with a null change comment (the -t- switch will be
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3526 ;; ignored). From 5.6.4 onwards, VC uses the new ci -i option,
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3527 ;; failing with message "<file>,v: already exists".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3528 ;; SCCS: will fail with error (ad19).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3529 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3530 ;; 4. File looked unregistered but is locked by someone else.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3531 ;;;
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3532 ;; Potential cause: someone else's admin during window P, with
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3533 ;; caller's admin happening *after* their checkout.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3534 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3535 ;; RCS: Prior to version 5.6.4, ci fails with a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3536 ;; "no lock set by <user>" message. From 5.6.4 onwards,
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3537 ;; VC uses the new ci -i option, failing with message
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3538 ;; "<file>,v: already exists".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3539 ;; SCCS: will fail with error (ad19).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3540 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3541 ;; We can let these errors be passed up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3542 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3543 ;; Apparent state B ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3544 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3545 ;; 5. File looked registered and not locked, but is actually unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3546 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3547 ;; Potential cause: master file got nuked during window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3548 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3549 ;; RCS: will fail with "RCS/<file>: No such file or directory"
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3550 ;; SCCS: will fail with error ut4.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3551 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3552 ;; We can let these errors be passed up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3553 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3554 ;; 6. File looked registered and not locked, but is actually locked by the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3555 ;; calling user and unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3556 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3557 ;; Potential cause: self-race during window T.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3558 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3559 ;; RCS: in the same directory as the previous workfile, co -l will fail
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3560 ;; with "co error: writable foo exists; checkout aborted". In any other
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3561 ;; directory, checkout will succeed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3562 ;; SCCS: will fail with ge17.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3563 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3564 ;; Either of these consequences is acceptable.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3565 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3566 ;; 7. File looked registered and not locked, but is actually locked by the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3567 ;; calling user and changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3568 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3569 ;; As case 6.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3570 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3571 ;; 8. File looked registered and not locked, but is actually locked by another
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3572 ;; user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3573 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3574 ;; Potential cause: someone else checks it out during window T.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3575 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3576 ;; RCS: co error: revision 1.3 already locked by <user>
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3577 ;; SCCS: fails with ge4 (in directory) or ut7 (outside it).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3578 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3579 ;; We can let these errors be passed up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3580 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3581 ;; Apparent state C ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3582 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3583 ;; 9. File looks locked by calling user and unchanged, but is unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3584 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3585 ;; As case 5.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3586 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3587 ;; 10. File looks locked by calling user and unchanged, but is actually not
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3588 ;; locked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3589 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3590 ;; Potential cause: a self-race in window U, or by the revert's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3591 ;; landing during window X of some other user's steal-lock or window S
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3592 ;; of another user's revert.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3593 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3594 ;; RCS: succeeds, refreshing the file from the identical version in
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3595 ;; the master.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3596 ;; SCCS: fails with error ut4 (p file nonexistent).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3597 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3598 ;; Either of these consequences is acceptable.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3599 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3600 ;; 11. File is locked by calling user. It looks unchanged, but is actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3601 ;; changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3602 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3603 ;; Potential cause: the file would have to be touched by a self-race
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3604 ;; during window Q.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3605 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3606 ;; The revert will succeed, removing whatever changes came with
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3607 ;; the touch. It is theoretically possible that work could be lost.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3608 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3609 ;; 12. File looks like it's locked by the calling user and unchanged, but
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3610 ;; it's actually locked by someone else.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3611 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3612 ;; Potential cause: a steal-lock in window V.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3613 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3614 ;; RCS: co error: revision <rev> locked by <user>; use co -r or rcs -u
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3615 ;; SCCS: fails with error un2
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3616 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3617 ;; We can pass these errors up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3618 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3619 ;; Apparent state D ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3620 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3621 ;; 13. File looks like it's locked by the calling user and changed, but it's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3622 ;; actually unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3623 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3624 ;; Potential cause: master file got nuked during window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3625 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3626 ;; RCS: Prior to version 5.6.4, checks in the user's version as an
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3627 ;; initial delta. From 5.6.4 onwards, VC uses the new ci -j
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3628 ;; option, failing with message "no such file or directory".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3629 ;; SCCS: will fail with error ut4.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3630 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3631 ;; This case is kind of nasty. Under RCS prior to version 5.6.4,
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3632 ;; VC may fail to detect the loss of previous version information.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3633 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3634 ;; 14. File looks like it's locked by the calling user and changed, but it's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3635 ;; actually unlocked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3636 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3637 ;; Potential cause: self-race in window V, or the checkin happening
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3638 ;; during the window X of someone else's steal-lock or window S of
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3639 ;; someone else's revert.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3640 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3641 ;; RCS: ci will fail with "no lock set by <user>".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3642 ;; SCCS: delta will fail with error ut4.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3643 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3644 ;; 15. File looks like it's locked by the calling user and changed, but it's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3645 ;; actually locked by the calling user and unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3646 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3647 ;; Potential cause: another self-race --- a whole checkin/checkout
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3648 ;; sequence by the calling user would have to land in window R.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3649 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3650 ;; SCCS: checks in a redundant delta and leaves the file unlocked as usual.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3651 ;; RCS: reverts to the file state as of the second user's checkin, leaving
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3652 ;; the file unlocked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3653 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3654 ;; It is theoretically possible that work could be lost under RCS.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3655 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3656 ;; 16. File looks like it's locked by the calling user and changed, but it's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3657 ;; actually locked by a different user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3658 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3659 ;; RCS: ci error: no lock set by <user>
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3660 ;; SCCS: unget will fail with error un2
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3661 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3662 ;; We can pass these errors up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3663 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3664 ;; Apparent state E ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3665 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3666 ;; 17. File looks like it's locked by some other user, but it's actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3667 ;; unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3668 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3669 ;; As case 13.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3670 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3671 ;; 18. File looks like it's locked by some other user, but it's actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3672 ;; unlocked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3673 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3674 ;; Potential cause: someone released a lock during window W.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3675 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3676 ;; RCS: The calling user will get the lock on the file.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3677 ;; SCCS: unget -n will fail with cm4.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3678 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3679 ;; Either of these consequences will be OK.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3680 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3681 ;; 19. File looks like it's locked by some other user, but it's actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3682 ;; locked by the calling user and unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3683 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3684 ;; Potential cause: the other user relinquishing a lock followed by
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3685 ;; a self-race, both in window W.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3686 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3687 ;; Under both RCS and SCCS, both unlock and lock will succeed, making
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3688 ;; the sequence a no-op.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3689 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3690 ;; 20. File looks like it's locked by some other user, but it's actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3691 ;; locked by the calling user and changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3692 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3693 ;; As case 19.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3694 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3695 ;; PROBLEM CASES:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3696 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3697 ;; In order of decreasing severity:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3698 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3699 ;; Cases 11 and 15 are the only ones that potentially lose work.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3700 ;; They would require a self-race for this to happen.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3701 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3702 ;; Case 13 in RCS loses information about previous deltas, retaining
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3703 ;; only the information in the current workfile. This can only happen
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3704 ;; if the master file gets nuked in window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3705 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3706 ;; Case 3 in RCS and case 15 under SCCS insert a redundant delta with
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3707 ;; no change comment in the master. This would require a self-race in
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3708 ;; window P or R respectively.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3709 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3710 ;; Cases 2, 10, 19 and 20 do extra work, but make no changes.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3711 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3712 ;; Unfortunately, it appears to me that no recovery is possible in these
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3713 ;; cases. They don't yield error messages, so there's no way to tell that
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3714 ;; a race condition has occurred.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3715 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3716 ;; All other cases don't change either the workfile or the master, and
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3717 ;; trigger command errors which the user will see.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3718 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3719 ;; Thus, there is no explicit recovery code.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3720
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
3721 ;; arch-tag: ca82c1de-3091-4e26-af92-460abc6213a6
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3722 ;;; vc.el ends here