annotate lisp/vc.el @ 95355:b2d851c43596

Fix typo in comment.
author Juanma Barranquero <lekktu@gmail.com>
date Wed, 28 May 2008 08:10:37 +0000
parents 257f10afe123
children cb8fbc8ef1c5
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 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
48 ;; 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
49 ;; 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
50 ;; 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
51 ;; 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
52
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 ;;; Commentary:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
54
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
55 ;; 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
56 ;;
78875
2568254b40a4 Mention all supported VC backends.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78822
diff changeset
57 ;; Supported version-control systems presently include CVS, RCS, GNU
94806
eedf64b515f0 Remove wash-log from the VC backend API.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94805
diff changeset
58 ;; Arch, Subversion, Bzr, Git, Mercurial, Monotone and SCCS
78875
2568254b40a4 Mention all supported VC backends.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78822
diff changeset
59 ;; (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
60 ;;
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
61 ;; 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
62 ;; 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
63 ;; 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
64 ;; 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
65 ;; 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
66 ;; 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
67 ;; NExTSTEP 3.0.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68 ;;
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
69 ;; 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
70 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
71 ;; Proper function of the SCCS diff commands requires the shellscript vcdiff
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72 ;; to be installed somewhere on Emacs's path for executables.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
73 ;;
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
74 ;; 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
75 ;; 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
76 ;; 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
77 ;; 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
78 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
79 ;; 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
80 ;; 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
81 ;; 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
82 ;; 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
83 ;; vc may get seriously confused. Don't do these things!
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
84 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
85 ;; 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
86 ;; the file.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
87 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
88 ;; ADDING SUPPORT FOR OTHER BACKENDS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
89 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
90 ;; 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
91 ;; 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
92 ;; 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
93 ;; 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
94 ;; 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
95 ;; `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
96 ;; 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
97 ;; will be available for that file.
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 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
100 ;; 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
101 ;; 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
102 ;; `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
103 ;; 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
104 ;; 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
105 ;; 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
106 ;; 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
107 ;; the macro `with-vc-properties' in vc.el).
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
108 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
109 ;; 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
110 ;; 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
111 ;; `*'), others are optional (`-').
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
112 ;;
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
113 ;; 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
114 ;;
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
115 ;; * 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
116 ;;
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
117 ;; 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
118 ;; 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
119 ;; 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
120 ;; 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
121 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
122 ;; STATE-QUERYING FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
123 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
124 ;; * registered (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
125 ;;
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
126 ;; 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
127 ;; 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
128 ;; 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
129 ;; 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
130 ;; 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
131 ;; (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
132 ;; the controlling backend for FILE.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
133 ;;
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
134 ;; * state (file)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
135 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
136 ;; 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
137 ;; 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
138 ;; reliable state computation; it is usually called immediately after
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
139 ;; 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
140 ;; file, put that into `state-heuristic' below. Note that under most
94729
bf91c987049c Remove VC-Dired and backend dir-state methods.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94722
diff changeset
141 ;; VCSes this won't be called at all, dir-status is used instead.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
142 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
143 ;; - state-heuristic (file)
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 ;; 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
146 ;; 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
147 ;; 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
148 ;; see the doc string of `vc-state'.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
149 ;;
94003
2ecb2ea8d5b5 Change `dir-status' to not take (and pass) status-buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93956
diff changeset
150 ;; - dir-status (dir update-function)
91960
81890a88d53d (dir-status): Add a brief description.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91951
diff changeset
151 ;;
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
152 ;; 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
153 ;; 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
154 ;; 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
155 ;; 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
156 ;; 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
157 ;; 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
158 ;; 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
159 ;; 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
160 ;; 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
161 ;; (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
162 ;; 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
163 ;; 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
164 ;; 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
165 ;; 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
166 ;; `status-printer', `extra-status-menu' and `dir-status-files'.
91960
81890a88d53d (dir-status): Add a brief description.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91951
diff changeset
167 ;;
94059
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
168 ;; - 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
169 ;;
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
170 ;; 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
171 ;; 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
172 ;; 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
173 ;; 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
174 ;; are in DEFAULT-STATE.
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
175 ;;
93333
53eee5c271f4 * vc.el: Add new backend function 'status-extra-headers.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93273
diff changeset
176 ;; - 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
177 ;;
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
178 ;; 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
179 ;;
93425
8459d55c7312 Allow backends to display backend specific information in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93382
diff changeset
180 ;; - status-printer (fileinfo)
8459d55c7312 Allow backends to display backend specific information in
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93382
diff changeset
181 ;;
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
182 ;; 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
183 ;; 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
184 ;; 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
185 ;; 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
186 ;; 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
187 ;;
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
188 ;; - status-fileinfo-extra (file)
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
189 ;;
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
190 ;; 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
191 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
192 ;; * working-revision (file)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
193 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
194 ;; 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
195 ;; 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
196 ;; 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
197 ;; committed.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
198 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
199 ;; - latest-on-branch-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
200 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
201 ;; 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
202 ;; 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
203 ;; The default implementation always returns t, which means that
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
204 ;; 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
205 ;;
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
206 ;; * checkout-model (files)
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
207 ;;
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
208 ;; 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
209 ;; 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
210 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
211 ;; - workfile-unchanged-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
212 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
213 ;; 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
214 ;; 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
215 ;; 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
216 ;; 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
217 ;; default implementation of this function can be used, which
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
218 ;; 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
219 ;; 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
220 ;; `vc-disable-async-diff'.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
221 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
222 ;; - mode-line-string (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
223 ;;
82027
1350ba0c0448 * vc-cvs.el (vc-cvs-mode-line-string): Add support for tooltips
Dan Nicolaescu <dann@ics.uci.edu>
parents: 81990
diff changeset
224 ;; 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
225 ;; 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
226 ;; `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
227 ;; 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
228 ;; 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
229 ;; `vc-state' can return.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
230 ;;
94539
fee32a11924d Name change in preparation for ripping out vc-dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94538
diff changeset
231 ;; - prettify-state-info (file)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
232 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
233 ;; 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
234 ;; 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
235 ;; with all states that `vc-state' can return.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
236 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
237 ;; STATE-CHANGING FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
238 ;;
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
239 ;; * 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
240 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
241 ;; 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
242 ;; 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
243 ;; 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
244 ;;
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
245 ;; * 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
246 ;;
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
247 ;; 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
248 ;; 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
249 ;; 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
250 ;; 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
251 ;; 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
252 ;; 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
253 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
254 ;; - init-revision (file)
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
255 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
256 ;; 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
257 ;; specified by the user. If not provided, the variable
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
258 ;; 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
259 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
260 ;; - responsible-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
261 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
262 ;; 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
263 ;; 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
264 ;; 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
265 ;; like change log generation. The default implementation always
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
266 ;; returns nil.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
267 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
268 ;; - could-register (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
269 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
270 ;; 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
271 ;; default implementation always returns t.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
272 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
273 ;; - receive-file (file rev)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
274 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
275 ;; 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
276 ;; another backend. The default implementation simply calls `register'
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
277 ;; 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
278 ;; 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
279 ;; FILE that resemble those of the other backend.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
280 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
281 ;; - unregister (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
282 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
283 ;; 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
284 ;; 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
285 ;;
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
286 ;; * checkin (files rev comment)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
287 ;;
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
288 ;; 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
289 ;; 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
290 ;; 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
291 ;; 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
292 ;; 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
293 ;; 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
294 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
295 ;; * 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
296 ;;
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
297 ;; 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
298 ;; 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
299 ;; 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
300 ;; 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
301 ;;
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
302 ;; * checkout (file &optional editable rev)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
303 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
304 ;; 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
305 ;; 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
306 ;; 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
307 ;; 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
308 ;; 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
309 ;; 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
310 ;; 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
311 ;; to the backend command.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
312 ;;
39000
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
313 ;; * revert (file &optional contents-done)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
314 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
315 ;; 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
316 ;; 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
317 ;; 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
318 ;; 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
319 ;;
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
320 ;; - rollback (files)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
321 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
322 ;; 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
323 ;; 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
324 ;; 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
325 ;; 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
326 ;; '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
327 ;; files.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
328 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
329 ;; - merge (file rev1 rev2)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
330 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
331 ;; 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
332 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
333 ;; - merge-news (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
334 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
335 ;; Merge recent changes from the current branch into FILE.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
336 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
337 ;; - steal-lock (file &optional revision)
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 ;; 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
340 ;; 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
341 ;; 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
342 ;; locked by other users.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
343 ;;
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
344 ;; - 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
345 ;;
87596
0f01cefc5aa8 Fix typo in comment. Reported by Tom Tromey <tromey@redhat.com>.
Juanma Barranquero <lekktu@gmail.com>
parents: 87590
diff changeset
346 ;; 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
347 ;; 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
348 ;;
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
349 ;; - mark-resolved (files)
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
350 ;;
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
351 ;; 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
352 ;; 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
353 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
354 ;; HISTORY FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
355 ;;
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
356 ;; * print-log (files &optional buffer)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
357 ;;
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
358 ;; 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
359 ;; 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
360 ;; only a single file argument.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
361 ;;
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
362 ;; - 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
363 ;;
a861d80cf88c * log-view.el (log-view-font-lock-keywords): Use `eval' to consult the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 75347
diff changeset
364 ;; 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
365 ;; `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
366 ;; 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
367 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
368 ;; - show-log-entry (revision)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
369 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
370 ;; 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
371 ;; 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
372 ;; implementation of this function works for RCS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
373 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
374 ;; - comment-history (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
375 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
376 ;; 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
377 ;; This is used for transferring a file from one backend to another,
94806
eedf64b515f0 Remove wash-log from the VC backend API.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94805
diff changeset
378 ;; retaining comment information.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
379 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
380 ;; - update-changelog (files)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
381 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
382 ;; 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
383 ;; 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
384 ;; default implementation runs rcs2log, which handles RCS- and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
385 ;; CVS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
386 ;;
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
387 ;; * diff (files &optional rev1 rev2 buffer)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
388 ;;
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
389 ;; 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
390 ;; 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
391 ;; 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
392 ;; 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
393 ;; 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
394 ;; 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
395 ;; 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
396 ;; 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
397 ;; run asynchronously).
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
398 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
399 ;; - 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
400 ;;
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
401 ;; 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
402 ;; 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
403 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
404 ;; - annotate-command (file buf &optional rev)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
405 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
406 ;; 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
407 ;; 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
408 ;; 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
409 ;; 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
410 ;; file is fontified according to age.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
411 ;;
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
412 ;; - annotate-time ()
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
413 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
414 ;; 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
415 ;; 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
416 ;; 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
417 ;; 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
418 ;; 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
419 ;; 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
420 ;; 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
421 ;; 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
422 ;; 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
423 ;; 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
424 ;; 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
425 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
426 ;; - annotate-current-time ()
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
427 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
428 ;; 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
429 ;; 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
430 ;; (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
431 ;; 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
432 ;; 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
433 ;;
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
434 ;; - annotate-extract-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
435 ;;
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
436 ;; 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
437 ;; 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
438 ;; 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
439 ;; corresponding to the current line.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
440 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
441 ;; TAG SYSTEM
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
442 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
443 ;; - create-tag (dir name branchp)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
444 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
445 ;; Attach the tag NAME to the state of the working copy. This
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
446 ;; should make sure that files are up-to-date before proceeding with
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
447 ;; the action. DIR can also be a file and if BRANCHP is specified,
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
448 ;; NAME should be created as a branch and DIR should be checked out
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
449 ;; under this new branch. The default implementation does not
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
450 ;; support branches but does a sanity check, a tree traversal and
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
451 ;; assigns the tag to each file.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
452 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
453 ;; - retrieve-tag (dir name update)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
454 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
455 ;; Retrieve the version tagged by NAME of all registered files at or below DIR.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
456 ;; If UPDATE is non-nil, then update buffers of any files in the
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
457 ;; tag that are currently visited. The default implementation
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
458 ;; 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
459 ;; 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
460 ;; function to retrieve the corresponding revisions.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
461 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
462 ;; MISCELLANEOUS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
463 ;;
91994
aca0b1aa678a Explain vc-BACKEND-root in Commentary; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 91960
diff changeset
464 ;; - root (dir)
aca0b1aa678a Explain vc-BACKEND-root in Commentary; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 91960
diff changeset
465 ;;
aca0b1aa678a Explain vc-BACKEND-root in Commentary; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 91960
diff changeset
466 ;; 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
467 ;; 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
468 ;; 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
469 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
470 ;; - make-version-backups-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
471 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
472 ;; 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
473 ;; 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
474 ;; `revert' operations itself, without calling the backend system. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
475 ;; default implementation always returns nil.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
476 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
477 ;; - repository-hostname (dirname)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
478 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
479 ;; 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
480 ;; 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
481 ;; 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
482 ;; 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
483 ;; for their convenience.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
484 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
485 ;; - previous-revision (file rev)
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
486 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
487 ;; 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
488 ;; revision exists.
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
489 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
490 ;; - next-revision (file rev)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
491 ;;
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
492 ;; 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
493 ;; revision exists.
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
494 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
495 ;; - check-headers ()
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 ;; 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
498 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
499 ;; - clear-headers ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
500 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
501 ;; 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
502 ;; 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
503 ;; 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
504 ;; 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
505 ;; 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
506 ;; wrong information.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
507 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
508 ;; - delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
509 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
510 ;; 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
511 ;; 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
512 ;; signal an error.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
513 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
514 ;; - rename-file (old new)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
515 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
516 ;; 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
517 ;; 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
518 ;; 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
519 ;;
54398
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
520 ;; - find-file-hook ()
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
521 ;;
54530
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
522 ;; 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
523 ;; 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
524 ;;
54530
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
525 ;; - 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
526 ;;
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
527 ;; 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
528 ;; 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
529 ;;
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
530 ;; - 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
531 ;;
1926a08e8926 * vc-arch.el (vc-arch-extra-menu-map): New var and fun.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78599
diff changeset
532 ;; 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
533 ;; 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
534 ;; 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
535 ;; 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
536 ;; 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
537 ;; 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
538 ;;
d42fe75822fe * vc.el (vc-status-menu, vc-status-menu-map-filter): New functions.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91944
diff changeset
539 ;; - 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
540 ;;
92122
74bf6df13b6c * vc.el (vc-find-revision): Make vc-parent-buffer local before
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92093
diff changeset
541 ;; 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
542 ;; 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
543 ;; 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
544 ;; 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
545 ;; 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
546 ;; generic concepts.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
547
87743
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
548 ;;; Todo:
c2a952d12e21 * smerge-mode.el (smerge-auto): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87739
diff changeset
549
95269
1e9eb6106f5a (vc-delete-file): Don't try to resynch the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95079
diff changeset
550 ;; - Add key-binding for vc-delete-file.
1e9eb6106f5a (vc-delete-file): Don't try to resynch the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95079
diff changeset
551
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
552 ;;;; New Primitives:
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
553 ;;
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
554 ;; - deal with push/pull operations.
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
555 ;;
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
556 ;; - add a mechanism for editing the underlying VCS's list of files
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
557 ;; to be ignored, when that's possible.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
558 ;;
94883
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
559 ;;;; Primitives that need changing:
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
560 ;;
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
561 ;; - vc-update/vc-merge should deal with VC systems that don't
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
562 ;; update/merge on a file basis, but on a whole repository basis.
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
563 ;; vc-update and vc-merge assume the arguments are always files,
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
564 ;; they don't deal with directories. Make sure the *vc-dir* buffer
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
565 ;; is updated after these operations.
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
566 ;; At least bzr, git and hg should benefit from this.
b615f9b9d57e Re-add Todo item about merging.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94882
diff changeset
567 ;;
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
568 ;;;; Improved branch and tag handling:
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
569 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
570 ;; - add a generic mechanism for remembering the current branch names,
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
571 ;; display the branch name in the mode-line. Replace
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
572 ;; vc-cvs-sticky-tag with that.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
573 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
574 ;; - C-x v b does switch to a different backend, but the mode line is not
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
575 ;; adapted accordingly. Also, it considers RCS and CVS to be the same,
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
576 ;; which is pretty confusing.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
577 ;;
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
578 ;; - vc-create-tag and vc-retrieve-tag should update the
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
579 ;; buffers that might be visiting the affected files.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
580 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
581 ;;;; Default Behavior:
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
582 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
583 ;; - do not default to RCS anymore when the current directory is not
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
584 ;; controlled by any VCS and the user does C-x v v
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
585 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
586 ;; - vc-responsible-backend should not return RCS if no backend
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
587 ;; declares itself responsible.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
588 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
589 ;;;; Internal cleanups:
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
590 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
591 ;; - backends that care about vc-stay-local should try to take it into
95269
1e9eb6106f5a (vc-delete-file): Don't try to resynch the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95079
diff changeset
592 ;; account for vc-dir. Is this likely to be useful??? YES!
94861
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
593 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
594 ;; - vc-expand-dirs should take a backend parameter and only look for
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
595 ;; files managed by that backend.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
596 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
597 ;; - Another important thing: merge all the status-like backend operations.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
598 ;; We should remove dir-status, state, and dir-status-files, and
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
599 ;; replace them with just `status' which takes a fileset and a continuation
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
600 ;; (like dir-status) and returns a buffer in which the process(es) are run
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
601 ;; (or nil if it worked synchronously). Hopefully we can define the old
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
602 ;; 4 operations in term of this one.
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
603 ;;
142a56989604 Reorganize to-do list.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94857
diff changeset
604 ;;;; Other
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
605 ;;
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
606 ;; - 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
607 ;;
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
608 ;; - 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
609 ;; 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
610 ;; 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
611 ;; 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
612 ;; 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
613 ;;
95079
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
614 ;; - C-x v l should insert the file set in the *VC-log* buffer so that
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
615 ;; log-view can recognize it and use it for its commands.
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
616 ;;
93670
80757ac2da77 (vc-default-status-fileinfo-extra): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93461
diff changeset
617 ;; - 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
618 ;; 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
619 ;; 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
620 ;;
93362
ca726aff3769 Reshuffle TODOs.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93346
diff changeset
621 ;; - 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
622 ;; 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
623 ;;
94488
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
624 ;; - 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
625 ;; *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
626 ;; 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
627 ;; 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
628 ;; `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
629 ;; skeleton for the log...
d3100c0eddb7 (vc-deduce-fileset): Add new parameter.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94481
diff changeset
630 ;;
95327
257f10afe123 Add todo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95326
diff changeset
631 ;; - The *vc-dir* buffer needs to be updated properly after VC
257f10afe123 Add todo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95326
diff changeset
632 ;; operations on directories that change the file VC state.
257f10afe123 Add todo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95326
diff changeset
633 ;;
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
634 ;; - 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
635 ;; 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
636 ;; possible VC states.
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
637 ;;
94836
3cb546529dde Update todo.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94822
diff changeset
638 ;; - add a function that calls vc-dir to `find-directory-functions'.
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
639 ;;
92091
f6aa0a65fa82 (vc-exec-after): Move setting mode-line-process in the
Dan Nicolaescu <dann@ics.uci.edu>
parents: 92038
diff changeset
640 ;; - 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
641 ;; files. Now that unregistered and ignored files are shown in
94729
bf91c987049c Remove VC-Dired and backend dir-state methods.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94722
diff changeset
642 ;; 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
643 ;; 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
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 ;;
95079
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
652 ;;;; Problems:
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
653 ;;
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
654 ;; - the *vc-dir* buffer is not updated correctly anymore after VC
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
655 ;; operations that change the file state.
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
656 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
657 ;;; Code:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
658
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
659 (require 'vc-hooks)
94571
61cca370b8f5 vc-dispatcher layer separation.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94570
diff changeset
660 (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
661 (require 'tool-bar)
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
662 (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
663
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
664 (eval-when-compile
94582
8393f040d26d Move VC-Dired code from vc.el to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94579
diff changeset
665 (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
666
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
667 (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
668 (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
669 (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
670 minor-mode-alist)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
671
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
672 ;; General customization
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
673
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
674 (defgroup vc nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
675 "Version-control system in Emacs."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
676 :group 'tools)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
677
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
678 (defcustom vc-initial-comment nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
679 "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
680 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
681 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
682
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
683 (defcustom vc-default-init-revision "1.1"
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
684 "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
685 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
686 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
687 :type 'string
21669
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
688 :group 'vc
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
689 :version "20.3")
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
690
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
691 (defcustom vc-checkin-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
692 "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
693 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
694 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
695 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
696 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
697 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
698 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
699 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
700
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
701 (defcustom vc-checkout-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
702 "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
703 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
704 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
705 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
706 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
707 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
708 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
709 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
710
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
711 (defcustom vc-register-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
712 "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
713 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
714 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
715 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
716 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
717 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
718 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
719 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
720
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
721 (defcustom vc-diff-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
722 "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
723 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
724 `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
725 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
726 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
727 specific to any particular backend."
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
728 :type '(choice (const :tag "None" nil)
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
729 (string :tag "Argument String")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
730 (repeat :tag "Argument List"
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
731 :value ("")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
732 string))
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
733 :group 'vc
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
734 :version "21.1")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
735
71446
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
736 (defcustom vc-diff-knows-L nil
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
737 "*Indicates whether diff understands the -L option.
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
738 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
739 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
740 :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
741 :group 'vc)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
742
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
743 (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
744 "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
745 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
746 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
747 :type '(choice (const :tag "No" nil)
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
748 (const :tag "Yes" t))
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
749 :group 'vc
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59442
diff changeset
750 :version "22.1")
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
751
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
752 ;;;###autoload
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
753 (defcustom vc-checkout-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
754 "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
755 See `run-hooks'."
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
756 :type 'hook
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
757 :group 'vc
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
758 :version "21.1")
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
759
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
760 (defcustom vc-annotate-display-mode 'fullscale
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
761 "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
762 :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
763 (const :tag "Scale to Oldest" scale)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
764 (const :tag "Scale Oldest->Newest" fullscale)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
765 (number :tag "Specify Fractional Number of Days"
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
766 :value "20.5"))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
767 :group 'vc)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
768
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
769 ;;;###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
770 (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
771 "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
772 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
773 :type 'hook
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
774 :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
775 :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
776
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
777 ;;;###autoload
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
778 (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
779 "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
780 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
781 :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
782 :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
783
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
784 ;; Annotate customization
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
785 (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
786 (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
787 ;; A custom sorted TTY colormap
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
788 (let* ((colors
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
789 (sort
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
790 (delq nil
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
791 (mapcar (lambda (x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
792 (if (not (or
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
793 (string-equal (car x) "white")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
794 (string-equal (car x) "black") ))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
795 (car x)))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
796 (tty-color-alist)))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
797 (lambda (a b)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
798 (cond
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
799 ((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
800 ((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
801 ((string-equal a "yellow") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
802 ((string-equal b "yellow") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
803 ((string-equal a "cyan") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
804 ((string-equal b "cyan") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
805 ((string-equal a "green") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
806 ((string-equal b "green") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
807 ((string-equal a "magenta") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
808 ((string-equal b "magenta") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
809 (t (string< a b))))))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
810 (date 20.)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
811 (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
812 (mapcar (lambda (x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
813 (prog1
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
814 (cons date x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
815 (setq date (+ date delta)))) colors))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
816 ;; 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
817 '(( 20. . "#FF3F3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
818 ( 40. . "#FF6C3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
819 ( 60. . "#FF993F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
820 ( 80. . "#FFC63F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
821 (100. . "#FFF33F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
822 (120. . "#DDFF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
823 (140. . "#B0FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
824 (160. . "#83FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
825 (180. . "#56FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
826 (200. . "#3FFF56")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
827 (220. . "#3FFF83")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
828 (240. . "#3FFFB0")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
829 (260. . "#3FFFDD")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
830 (280. . "#3FF3FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
831 (300. . "#3FC6FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
832 (320. . "#3F99FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
833 (340. . "#3F6CFF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
834 (360. . "#3F3FFF")))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
835 "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
836 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
837 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
838 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
839 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
840 :type 'alist
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
841 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
842
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
843 (defcustom vc-annotate-very-old-color "#3F3FFF"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
844 "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
845 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
846 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
847
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
848 (defcustom vc-annotate-background "black"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
849 "Background color for \\[vc-annotate].
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
850 Default color is used if nil."
93055
e1ae2150f28e (vc-annotate-background): Fix custom type.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 93035
diff changeset
851 :type '(choice (const :tag "Default background" nil) (color))
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
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
854 (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
855 "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
856 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
857 :type '(repeat number)
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
858 :group 'vc)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
859
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
860 (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
861 (let ((m (make-sparse-keymap)))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
862 (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
863 (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
864 (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
865 (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
866 (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
867 (define-key m "N" 'vc-annotate-next-revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
868 (define-key m "P" 'vc-annotate-prev-revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
869 (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
870 (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
871 m)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
872 "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
873
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
874 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
875
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
876 (defcustom vc-static-header-alist
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
877 '(("\\.c\\'" .
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
878 "\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
879 "*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
880 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
881 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
882 :type '(repeat (cons :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
883 (regexp :tag "File Type")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
884 (string :tag "Header String")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
885 :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
886
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
887 (defcustom vc-comment-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
888 '((nroff-mode ".\\\"" ""))
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
889 "*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
890 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
891 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
892 is sensitive to blank lines."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
893 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
894 (symbol :tag "Mode")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
895 (string :tag "Comment Start")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
896 (string :tag "Comment End")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
897 :group 'vc)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
898
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
899 (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
900 "*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
901 Verify that the file really is not locked
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
902 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
903 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
904 :group 'vc)
49619
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
905 (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
906 "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
907 "21.1")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
908
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
909
94576
7de38dedf0a6 Move the command-closure machinery to vc-dispatcher.el.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94573
diff changeset
910 ;; Variables users don't need to see
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
911
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
912 (defvar vc-disable-async-diff nil
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
913 "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
914 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
915 in their implementation of vc-BACKEND-diff.")
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
916
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
917 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
918
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
919 (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
920 "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
921 (interactive)
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
922 (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
923
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
924 (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
925 "Execute FORM, then maybe set per-file properties for FILES.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
926 SETTINGS is an association list of property/value pairs. After
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
927 executing FORM, set those properties from SETTINGS that have not yet
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
928 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
929 (declare (debug t))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
930 `(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
931 ,form
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
932 (dolist (file ,files)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
933 (dolist (setting ,settings)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
934 (let ((property (car setting)))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
935 (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
936 (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
937 property (cdr setting))))))))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
938
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
939 ;;; 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
940
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
941 (defun vc-responsible-backend (file &optional register)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
942 "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
943 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
944 registration should be found.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
945
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
946 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
947 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
948 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
949 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
950 responsible, return the first backend.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
951
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
952 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
953 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
954 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
955 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
956 (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
957 (error "No handled backends"))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
958 (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
959 (catch 'found
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
960 ;; 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
961 ;; 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
962 (dolist (backend vc-handled-backends)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
963 (and (or (not register)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
964 (not (vc-call-backend backend 'registered file)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
965 (vc-call-backend backend 'responsible-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
966 (throw 'found backend)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
967 ;; no responsible backend
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
968 (if (not register)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
969 ;; 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
970 (car vc-handled-backends)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
971 ;; 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
972 ;; could register FILE
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
973 (dolist (backend vc-handled-backends)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
974 (and (not (vc-call-backend backend 'registered file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
975 (vc-call-backend backend 'could-register file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
976 (throw 'found backend)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
977 (error "No backend that could register")))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
978
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
979 (defun vc-expand-dirs (file-or-dir-list)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
980 "Expands directories in a file list specification.
94886
9e19bca35d7f Tell (vc-expand-dirs) not to throw out explicitly specified files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94883
diff changeset
981 Within directories, only files already under version control are noticed."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
982 (let ((flattened '()))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
983 (dolist (node file-or-dir-list)
95322
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
984 (when (file-directory-p node)
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
985 (vc-file-tree-walk
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
986 node (lambda (f) (when (vc-backend f) (push f flattened)))))
54121bb9b5ad (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95319
diff changeset
987 (unless (file-directory-p node) (push node flattened)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
988 (nreverse flattened)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
989
94974
3a282ce8370c Make vc-deduce-fileset do the right thing in derived buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94886
diff changeset
990 (defun vc-derived-from-dir-mode (&optional buffer)
3a282ce8370c Make vc-deduce-fileset do the right thing in derived buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94886
diff changeset
991 "Are we in a VC-directory buffer, or do we have one as an ancestor?"
3a282ce8370c Make vc-deduce-fileset do the right thing in derived buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94886
diff changeset
992 (let ((buffer (or buffer (current-buffer))))
3a282ce8370c Make vc-deduce-fileset do the right thing in derived buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94886
diff changeset
993 (cond ((derived-mode-p 'vc-dir-mode) t)
3a282ce8370c Make vc-deduce-fileset do the right thing in derived buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94886
diff changeset
994 (vc-parent-buffer (vc-derived-from-dir-mode vc-parent-buffer))
3a282ce8370c Make vc-deduce-fileset do the right thing in derived buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94886
diff changeset
995 (t nil))))
3a282ce8370c Make vc-deduce-fileset do the right thing in derived buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94886
diff changeset
996
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
997 (defvar vc-dir-backend nil
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
998 "The backend used by the current *vc-dir* buffer.")
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
999
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1000 ;; FIXME: this is not functional, commented out.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1001 ;; (defun vc-deduce-fileset (&optional observer)
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1002 ;; "Deduce a set of files and a backend to which to apply an operation and
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1003 ;; the common state of the fileset. Return (BACKEND . FILESET)."
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1004 ;; (let* ((selection (vc-dispatcher-selection-set observer))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1005 ;; (raw (car selection)) ;; Selection as user made it
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1006 ;; (cooked (cdr selection)) ;; Files only
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1007 ;; ;; FIXME: Store the backend in a buffer-local variable.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1008 ;; (backend (if (vc-derived-from-dir-mode (current-buffer))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1009 ;; ;; FIXME: this should use vc-dir-backend from
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1010 ;; ;; the *vc-dir* buffer.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1011 ;; (vc-responsible-backend default-directory)
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1012 ;; (assert (and (= 1 (length raw))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1013 ;; (not (file-directory-p (car raw)))))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1014 ;; (vc-backend (car cooked)))))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1015 ;; (cons backend selection)))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1016
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1017 (defun vc-deduce-fileset (&optional observer allow-unregistered)
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1018 "Deduce a set of files and a backend to which to apply an operation.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1019
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1020 Return (BACKEND FILESET FILESET_ONLY_FILES).
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1021 If we're in VC-dir mode, the fileset is the list of marked files.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1022 Otherwise, if we're looking at a buffer visiting a version-controlled file,
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1023 the fileset is a singleton containing this file.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1024 If none of these conditions is met, but ALLOW_UNREGISTERED is on and the
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1025 visited file is not registered, return a singleton fileset containing it.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1026 Otherwise, throw an error."
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1027 ;; FIXME: OBSERVER is unused. The name is not intuitive and is not
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1028 ;; documented.
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1029 (let (backend)
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1030 (cond
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1031 ((derived-mode-p 'vc-dir-mode)
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1032 (let ((marked (vc-dir-marked-files)))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1033 (if marked
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1034 (list vc-dir-backend marked (vc-dir-marked-only-files))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1035 (let ((crt (vc-dir-current-file)))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1036 (list vc-dir-backend (list crt) (vc-dir-child-files))))))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1037 ((setq backend (vc-backend buffer-file-name))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1038 (list backend (list buffer-file-name) (list buffer-file-name)))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1039 ((and vc-parent-buffer (or (buffer-file-name vc-parent-buffer)
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1040 (with-current-buffer vc-parent-buffer
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1041 (eq major-mode 'vc-dir-mode))))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1042 (progn
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1043 (set-buffer vc-parent-buffer)
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1044 (vc-deduce-fileset)))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1045 ((and allow-unregistered (not (vc-registered buffer-file-name)))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1046 (list (vc-responsible-backend
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1047 (file-name-directory (buffer-file-name)))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1048 (list buffer-file-name) (list buffer-file-name)))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1049 (t (error "No fileset is available here.")))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1050
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1051 (defun vc-ensure-vc-buffer ()
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1052 "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
1053 (cond
94729
bf91c987049c Remove VC-Dired and backend dir-state methods.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94722
diff changeset
1054 ((vc-dispatcher-browsing)
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
1055 (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
1056 (t
87337
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
1057 (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
1058 (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
1059 ;; 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
1060 ;; current buffer are the same buffer.
bad7c1eb5392 (vc-ensure-vc-buffer): Avoid infinite looping when
Martin Rudalics <rudalics@gmx.at>
parents: 87319
diff changeset
1061 (not (eq vc-parent-buffer (current-buffer))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1062 (set-buffer vc-parent-buffer))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1063 (if (not buffer-file-name)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1064 (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
1065 (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
1066 (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
1067
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1068 ;;; 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
1069 ;; 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
1070 ;; 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
1071
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1072 (defsubst vc-editable-p (file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1073 "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
1074 (let ((backend (vc-backend file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1075 (and backend
94563
a0bb8ca25a33 Clean up vc*-revision-granularity and vc*-checkout-model.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94556
diff changeset
1076 (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
1077 (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
1078
87477
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1079 (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
1080 "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
1081 (or
b5060e79eb98 * vc-svn.el (vc-svn-parse-status): Recognize 'added, 'removed,
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87450
diff changeset
1082 (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
1083 (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
1084
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1085 ;; Here's the major entry point.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1086
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1087 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1088 (defun vc-next-action (verbose)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1089 "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
1090 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
1091
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1092 For locking systems:
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1093 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
1094 control.
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1095 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
1096 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
1097 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
1098 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
1099 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
1100 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
1101 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
1102 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
1103 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
1104 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
1105 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
1106 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
1107
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1108 For merging systems:
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1109 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
1110 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
1111 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
1112 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
1113 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
1114 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
1115 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
1116 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
1117 merge in the changes into your working copy."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1118 (interactive "P")
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1119 (let* ((vc-fileset (vc-deduce-fileset nil t))
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1120 (backend (car vc-fileset))
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1121 (files (nth 1 vc-fileset))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1122 (fileset-only-files (nth 2 vc-fileset))
94878
112212c5e23c Comment.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94861
diff changeset
1123 ;; FIXME: We used to call `vc-recompute-state' here.
94803
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1124 (state (vc-state (car fileset-only-files)))
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1125 ;; The backend should check that the checkout-model is consistent
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1126 ;; among all the `files'.
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1127 (model
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1128 ;; FIXME: This is not very elegant...
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1129 (when (and state (not (eq state 'unregistered)))
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1130 (vc-checkout-model backend files)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1131 revision)
94803
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1132
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1133 ;; Check that all files are in a consistent state, since we use that
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1134 ;; state to decide which operation to perform.
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1135 (dolist (file (cdr fileset-only-files))
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1136 (unless (vc-compatible-state (vc-state file) state)
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1137 (error "%s:%s clashes with %s:%s"
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1138 file (vc-state file) (car fileset-only-files) state)))
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
1139
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1140 ;; Do the right thing
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1141 (cond
94538
dc1cd59ce955 Better error message on missing files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94536
diff changeset
1142 ((eq state 'missing)
dc1cd59ce955 Better error message on missing files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94536
diff changeset
1143 (error "Fileset files are missing, so cannot be operated on."))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1144 ((eq state 'ignored)
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1145 (error "Fileset files are ignored by the version-control system."))
95326
23822423eb64 (vc-deduce-fileset): Replace implementation with one based on a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95325
diff changeset
1146 ((or (null state) (eq state 'unregistered))
94536
4482905cde4e (vc-register): Change argument order so that the prefix
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94535
diff changeset
1147 (mapc (lambda (arg) (vc-register nil arg)) files))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1148 ;; 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
1149 ((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
1150 (cond
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1151 (verbose
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1152 ;; go to a different revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1153 (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
1154 (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
1155 (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
1156 (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
1157 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1158 (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
1159 ((not (eq model 'implicit))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1160 ;; check the files out
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1161 (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
1162 (t
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1163 ;; do nothing
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1164 (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
1165 ;; 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
1166 ((vc-compatible-state state 'edited)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1167 (let ((ready-for-commit files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1168 ;; 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
1169 (dolist (file files)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1170 (unless (file-writable-p file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1171 ;; Make the file+buffer read-write.
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1172 (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
1173 (error "Aborted"))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1174 (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
1175 (let ((visited (get-file-buffer file)))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1176 (when visited
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1177 (with-current-buffer visited
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1178 (toggle-read-only -1))))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1179 ;; 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
1180 (save-excursion
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1181 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1182 (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
1183 ;; 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
1184 ;; 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
1185 (when (and (not (eq model 'implicit))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1186 (vc-workfile-unchanged-p file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1187 ;; 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
1188 ;; 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
1189 ;; 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
1190 ;; finishing the log entry and committing.
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1191 (not (and visited (buffer-modified-p))))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1192 (vc-revert-file file)
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1193 (delete file ready-for-commit)))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1194 ;; Remaining files need to be committed
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1195 (if (not ready-for-commit)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1196 (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
1197 (if (not verbose)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1198 (vc-checkin ready-for-commit)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1199 (progn
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1200 (setq revision (read-string "New revision or backend: "))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1201 (let ((vsym (intern (upcase revision))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1202 (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
1203 (dolist (file files) (vc-transfer-file file vsym))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1204 (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
1205 ;; 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
1206 ((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
1207 ;; 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
1208 ;; 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
1209 ;; 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
1210 ;; 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
1211 ;; 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
1212 ;; 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
1213 ;; 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
1214 ;; 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
1215 ;; 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
1216 ;; 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
1217 ;; 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
1218 ;; 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
1219 (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
1220 (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
1221 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
1222 (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
1223 (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
1224 state)))
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1225 ;; conflict
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1226 ((eq state 'conflict)
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1227 ;; FIXME: Is it really the UI we want to provide?
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1228 ;; In my experience, the conflicted files should be marked as resolved
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1229 ;; one-by-one when saving the file after resolving the conflicts.
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1230 ;; I.e. stating explicitly that the conflicts are resolved is done
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1231 ;; very rarely.
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1232 (vc-mark-resolved backend files))
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1233 ;; needs-update
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1234 ((eq state 'needs-update)
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1235 (dolist (file files)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1236 (if (yes-or-no-p (format
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1237 "%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
1238 (file-name-nondirectory file)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1239 (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
1240 (when (and (not (eq model 'implicit))
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1241 (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
1242 (vc-checkout file t)))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1243 ;; needs-merge
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1244 ((eq state 'needs-merge)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1245 (dolist (file files)
87826
06bebff4deab Add a TODO note about vc-state.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 87785
diff changeset
1246 (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
1247 "%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
1248 (file-name-nondirectory file)))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1249 (vc-maybe-resolve-conflicts
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1250 file (vc-call-backend backend '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
1251
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1252 ;; unlocked-changes
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1253 ((eq state 'unlocked-changes)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1254 (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
1255 (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
1256 (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
1257 (if (save-window-excursion
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1258 (vc-diff-internal nil
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1259 (cons (car vc-fileset) (cons (cadr vc-fileset) (list file)))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1260 (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
1261 (goto-char (point-min))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1262 (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
1263 (insert
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1264 (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
1265 (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
1266 (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
1267 "Claim lock retaining changes? ")))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1268 (progn (vc-call-backend backend '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
1269 (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
1270 ;; 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
1271 ;; 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
1272 (vc-clear-headers file)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1273 (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
1274 (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
1275 (if (not (yes-or-no-p
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1276 "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
1277 (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
1278 (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
1279 (vc-checkout file t)))))
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1280 ;; Unknown fileset state
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1281 (t
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1282 (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
1283
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
1284 (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
1285 "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
1286 (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
1287 (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
1288 (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
1289 (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
1290 (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
1291 "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
1292 (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
1293 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
1294 (vc-call-backend backend 'create-repo))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1295
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1296 ;;;###autoload
94536
4482905cde4e (vc-register): Change argument order so that the prefix
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94535
diff changeset
1297 (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
1298 "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
1299 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
1300 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
1301 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
1302
31520
f9d2d484e1e2 * vc-sccs.el (vc-sccs-register):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31435
diff changeset
1303 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
1304 `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
1305 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
1306 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
1307 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
1308 first backend that could register the file is used."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1309 (interactive "P")
86055
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1310 (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
1311
87319
ac2e9c3d2b02 bname needs to be a buffer name, not a filename.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87147
diff changeset
1312 (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
1313 (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
1314 (when (vc-backend fname)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1315 (if (vc-registered fname)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1316 (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
1317 (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
1318 (error "Aborted"))))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1319 ;; 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
1320 ;; 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
1321 (when bname
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1322 (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
1323 (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
1324 (zerop (buffer-size))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1325 (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
1326 (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
1327 (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
1328 (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
1329 (if set-revision
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1330 (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
1331 fname))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1332 (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
1333 'init-revision))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1334 (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
1335 nil
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1336 "Enter initial comment."
95018
2253b8d4def6 More elimination of buffer name dependencies.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95017
diff changeset
1337 "*VC-log*"
86055
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1338 (lambda (files rev comment)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1339 (dolist (file files)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1340 (message "Registering %s... " file)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1341 (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
1342 (vc-file-clearprops file)
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1343 (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
1344 (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
1345 (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
1346 (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
1347 (setq backup-inhibited t)))
f064a093bf93 (vc-register): Allow registering a file passed as a
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86034
diff changeset
1348 (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
1349
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1350 (defun vc-register-with (backend)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1351 "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
1352 (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
1353 (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
1354 (error "Unknown back end."))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1355 (let ((vc-handled-backends (list backend)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1356 (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
1357
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1358 (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
1359 "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
1360 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
1361 REV defaults to the latest revision.
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1362
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1363 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
1364 (and writable
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1365 (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
1366 (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
1367 (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
1368 (vc-make-version-backup file))
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1369 (let ((backend (vc-backend file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1370 (with-vc-properties (list file)
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1371 (condition-case err
94495
027a58c5f305 (vc-checkout): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94488
diff changeset
1372 (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
1373 (file-error
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1374 ;; Maybe the backend is not installed ;-(
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1375 (when writable
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1376 (let ((buf (get-file-buffer file)))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1377 (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
1378 (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
1379 `((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
1380 (not writable))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1381 (if (vc-call-backend backend 'latest-on-branch-p file)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1382 'up-to-date
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
1383 'needs-update)
94481
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1384 'edited))
ad6c174910db Make `checkout-model' apply to filesets.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94478
diff changeset
1385 (vc-checkout-time . ,(nth 5 (file-attributes file))))))
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1386 (vc-resynch-buffer file t t)
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1387 (run-hooks 'vc-checkout-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1388
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1389 (defun vc-mark-resolved (backend files)
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1390 (with-vc-properties
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1391 files
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1392 (vc-call-backend backend 'mark-resolved files)
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1393 ;; 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
1394 `((vc-state . edited))))
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
1395
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1396 (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
1397 "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
1398 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1399 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1400 (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
1401 (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
1402 (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
1403 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
1404 (error "Steal canceled"))
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1405 (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
1406 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1407 (list file)
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1408 (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
1409 `((vc-state . edited)))
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1410 (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
1411 (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
1412 ;; 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
1413 ;; 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
1414 (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
1415 (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
1416 (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
1417 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1418 (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
1419 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1420 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1421 (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
1422
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1423 (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
1424 "Check in FILES.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1425 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
1426 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
1427 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
1428 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
1429 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
1430
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1431 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
1432 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
1433
94579
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1434 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
1435 (when vc-before-checkin-hook
dca2377770e7 Move context-preservation machinery.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94576
diff changeset
1436 (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
1437 (vc-start-logentry
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1438 files rev comment initial-contents
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1439 "Enter a change comment."
95018
2253b8d4def6 More elimination of buffer name dependencies.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95017
diff changeset
1440 "*VC-log*"
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1441 (lambda (files rev comment)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1442 (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
1443 ;; "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
1444 ;; 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
1445 (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
1446 (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
1447 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1448 files
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1449 ;; 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
1450 ;; 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
1451 (progn
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1452 (vc-call checkin files rev comment)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1453 (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
1454 `((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
1455 (vc-checkout-time . ,(nth 5 (file-attributes file)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1456 (vc-working-revision . nil)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1457 (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
1458 'vc-checkin-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1459
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1460 ;;; Additional entry points for examining version histories
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1461
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1462 ;; (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
1463 ;; "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
1464 ;; 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
1465 ;; ;; 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
1466 ;; ;; 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
1467 ;; ;; 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
1468 ;; ;; 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
1469 ;; ;; 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
1470 ;; ;; to backend-specific implementations.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1471 ;; (setq default-directory dir)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1472 ;; (vc-file-tree-walk
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1473 ;; default-directory
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1474 ;; (lambda (f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1475 ;; (vc-exec-after
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1476 ;; `(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
1477 ;; (message "Looking at %s" ',f)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1478 ;; (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
1479 ;; '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
1480
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1481 (defun vc-coding-system-for-diff (file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1482 "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
1483 (or coding-system-for-read
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1484 ;; if we already have this file open,
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1485 ;; use the buffer's coding system
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1486 (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
1487 (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
1488 buffer-file-coding-system)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1489 ;; 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
1490 (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
1491 ;; and a final fallback
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1492 'undecided))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1493
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1494 (defun vc-switches (backend op)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1495 (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
1496 (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
1497 (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
1498 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
1499 "-switches")))))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1500 (when (boundp sym) (symbol-value sym))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1501 (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
1502 (when (boundp sym) (symbol-value sym)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1503 (cond
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1504 ((eq op 'diff) diff-switches)))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1505 (if (stringp switches) (list switches)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1506 ;; If not a list, return nil.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1507 ;; 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
1508 ;; 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
1509 (when (listp switches) switches))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1510
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1511 ;; Old def for compatibility with Emacs-21.[123].
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
1512 (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
1513 (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
1514
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1515 (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
1516 ;; 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
1517 ;; 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
1518 (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
1519 (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
1520 (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
1521 (with-current-buffer buffer
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1522 (and messages emptyp
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1523 (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
1524 (insert (cdr messages) ".\n")
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1525 (message "%s" (cdr messages))))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1526 (goto-char (point-min))
87931
9f4909ced989 Handle dead buffers in async filters/sentinels.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 87930
diff changeset
1527 (when window
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1528 (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
1529 (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
1530 (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
1531
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1532 (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
1533 "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
1534
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1535 (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
1536 "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
1537 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
1538 returns t if the buffer had changes, nil otherwise."
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
1539 (let* ((files (cadr vc-fileset))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1540 (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
1541 (vc-delistify files))
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1542 (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
1543 (or rev1 "working revision")
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1544 (or rev2 "workfile"))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1545 ;; 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
1546 ;; 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
1547 ;; 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
1548 (coding-system-for-read
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1549 (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
1550 (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
1551 (message "%s" (car messages))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1552 ;; 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
1553 ;; 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
1554 ;; 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
1555 ;;
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1556 ;; 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
1557 ;; 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
1558 ;; 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
1559 ;; `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
1560 ;; 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
1561 ;; 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
1562 (when vc-diff-added-files
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1563 (let ((filtered '()))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1564 (dolist (file files)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1565 (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
1566 (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
1567 (push file filtered)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1568 ;; 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
1569 ;; 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
1570 (if (or rev1 rev2)
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1571 (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
1572 ;; We regard this as "changed".
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1573 ;; Diff it against /dev/null.
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1574 (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
1575 1 "diff" file
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1576 (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
1577 (setq files (nreverse filtered))))
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1578 (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
1579 (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
1580 (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
1581 (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
1582 (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
1583 ;; 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
1584 (progn
91698
c22d8444f043 Make vc-diff-internal messages consistent across many cases.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 88111
diff changeset
1585 (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
1586 nil)
85972
51aa47312c4b * ediff-init.el (ediff-xemacs-p, ediff-emacs-p): Remove.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 85794
diff changeset
1587 (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
1588 ;; 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
1589 ;; 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
1590 ;; 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
1591 (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
1592 (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
1593 messages)))
86100
ac69f23a84ce (vc-diff-internal): Pop-to-buffer later.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 86055
diff changeset
1594 ;; 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
1595 (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
1596 ;; 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
1597 ;; 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
1598 t)))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1599
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1600 ;;;###autoload
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1601 (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
1602 "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
1603 (interactive
94820
5b364ab2654b Dupport an use an observer flag in (vc-dispatcher-selection-set).
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94819
diff changeset
1604 (let* ((vc-fileset (vc-deduce-fileset t))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
1605 (files (cadr vc-fileset))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1606 (backend (car vc-fileset))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1607 (first (car files))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1608 (completion-table
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1609 (vc-call-backend backend 'revision-completion-table files))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1610 (rev1-default nil)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1611 (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
1612 (cond
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1613 ;; 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
1614 ;; filesets, but not yet.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1615 ((/= (length files) 1)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1616 nil)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1617 ;; 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
1618 ((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
1619 nil)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1620 ;; 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
1621 ((not (vc-up-to-date-p first))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1622 (setq rev1-default (vc-working-revision first)))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1623 ;; 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
1624 (t
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1625 (setq rev1-default (vc-call-backend backend 'previous-revision first
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1626 (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
1627 (when (string= rev1-default "") (setq rev1-default nil))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1628 (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
1629 ;; 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
1630 (let* ((rev1-prompt (if rev1-default
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1631 (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
1632 rev1-default "): ")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1633 "Older revision: "))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1634 (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
1635 (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
1636 (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
1637 (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
1638 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
1639 (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
1640 (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
1641 (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
1642 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
1643 (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
1644 (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
1645 (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
1646 (list files rev1 rev2))))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1647 ;; All that was just so we could do argument completion!
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1648 (when (and (not rev1) rev2)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
1649 (error "Not a valid revision range."))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1650 ;; Yes, it's painful to call (vc-deduce-fileset) again. Alas, the
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1651 ;; placement rules for (interactive) don't actually leave us a choice.
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1652 (vc-diff-internal t (vc-deduce-fileset) 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
1653
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1654 ;; (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
1655 ;; "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
1656 ;; (catch 'found
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1657 ;; (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
1658 ;; 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
1659
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
1660 ;;;###autoload
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1661 (defun vc-diff (historic &optional not-urgent)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1662 "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
1663 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
1664 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
1665 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
1666
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1667 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
1668 saving the buffer."
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1669 (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
1670 (if historic
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
1671 (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
1672 (when buffer-file-name (vc-buffer-sync not-urgent))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
1673 (vc-diff-internal t (vc-deduce-fileset) nil nil (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
1674
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1675 ;;;###autoload
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1676 (defun vc-revision-other-window (rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1677 "Visit revision REV of the current file in another window.
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1678 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
1679 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
1680 (interactive
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1681 (save-current-buffer
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1682 (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
1683 (let ((completion-table
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1684 (vc-call revision-completion-table buffer-file-name))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1685 (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
1686 (list
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1687 (if completion-table
2dd5d799a16d * vc-git.el: (vc-directory-exclusion-list, vc-handled-backends):
Dan Nicolaescu <dann@ics.uci.edu>
parents: 78236
diff changeset
1688 (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
1689 (read-string prompt))))))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1690 (vc-ensure-vc-buffer)
32888
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1691 (let* ((file buffer-file-name)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1692 (revision (if (string-equal rev "")
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1693 (vc-working-revision file)
41556
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1694 rev)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1695 (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
1696
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1697 (defun vc-find-revision (file revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1698 "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
1699 (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
1700 (filebuf (or (get-file-buffer file) (current-buffer)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1701 (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
1702 (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
1703 (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
1704 (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
1705 (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
1706 (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
1707 (let ((failed t))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1708 (unwind-protect
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1709 (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
1710 (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
1711 (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
1712 (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
1713 ;; 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
1714 ;; vc-checkout-switches.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1715 (with-current-buffer filebuf
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1716 (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
1717 (setq failed nil))
86248
cde7fc4f5945 (vc-find-revision): Set the parent buffer.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 86100
diff changeset
1718 (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
1719 (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
1720 (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
1721 (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
1722 (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
1723 (with-current-buffer result-buf
86410
bca8808972f0 Delete eol whitespace; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86370
diff changeset
1724 ;; 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
1725 ;; 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
1726 (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
1727 result-buf)))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1728
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1729 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1730
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1731 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1732 (defun vc-insert-headers ()
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1733 "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
1734 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
1735 the variable `vc-BACKEND-header'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1736 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1737 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1738 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1739 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1740 (widen)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1741 (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
1742 (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
1743 (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
1744 (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
1745 (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
1746 (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
1747 'header))
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
1748 (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
1749 (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
1750 (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
1751 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
1752 (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
1753 (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
1754 (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
1755 (insert (format (cdr f) (car hdstrings)))))))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1756
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1757 (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
1758 "Clear all version headers in the current buffer (or FILE).
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1759 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
1760 (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
1761 (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
1762 (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
1763 (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
1764 (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
1765 (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
1766 ;; 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
1767 ;; 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
1768 ;; 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
1769 (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
1770 (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
1771 (vc-restore-buffer-context context))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
1772 (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
1773 (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
1774 (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
1775
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
1776 (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
1777 "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
1778 (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
1779 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
1780 "Enter a replacement change comment."
95018
2253b8d4def6 More elimination of buffer name dependencies.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95017
diff changeset
1781 "*VC-log*"
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
1782 (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
1783 (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
1784 ;; 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
1785 ;; 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
1786 ;; 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
1787 (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
1788 '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
1789
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1790 ;;;###autoload
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1791 (defun vc-merge ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1792 "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
1793 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
1794 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
1795 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
1796 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
1797
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1798 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
1799 (interactive)
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1800 (vc-ensure-vc-buffer)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1801 (vc-buffer-sync)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1802 (let* ((file buffer-file-name)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1803 (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
1804 (state (vc-state file))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1805 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
1806 (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
1807 ((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
1808 (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
1809 ((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
1810 (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
1811 "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
1812 (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
1813 (error "Merge aborted"))))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1814 (setq first-revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1815 (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
1816 "(default news on current branch): ")))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1817 (if (string= first-revision "")
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1818 (setq status (vc-call-backend backend 'merge-news file))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1819 (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
1820 (error "Sorry, merging is not implemented for %s" backend)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1821 (if (not (vc-branch-p first-revision))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1822 (setq second-revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1823 (read-string "Second revision: "
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1824 (concat (vc-branch-part first-revision) ".")))
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1825 ;; 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
1826 ;; accordingly, so that vc-BACKEND-merge understands us.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1827 (setq second-revision first-revision)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1828 ;; first-revision must be the starting point of the branch
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
1829 (setq first-revision (vc-branch-part first-revision)))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1830 (setq status (vc-call-backend backend 'merge file
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
1831 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
1832 (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
1833
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1834 (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
1835 (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
1836 (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
1837 (smerge-mode 1)
54586
c3043c1faed3 (vc-maybe-resolve-conflicts): Don't prompt the user.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54562
diff changeset
1838 (message "File contains conflicts.")))
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1839
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1840 ;;;###autoload
47781
79bdd88fb006 (vc-resolve-conflicts); Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47780
diff changeset
1841 (defalias 'vc-resolve-conflicts 'smerge-ediff)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1842
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1843 ;; 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
1844
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1845 (defun vc-default-status-extra-headers (backend dir)
95060
e1e4085b4297 (vc-annotate-show-diff-revision-at-line): Change
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95054
diff changeset
1846 ;; Be loud by default to remind people to add code to display
95325
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1847 ;; backend specific headers.
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1848 ;; XXX: change this to return nil before the release.
95325
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1849 (concat
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1850 (propertize "Extra : " 'face 'font-lock-type-face)
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1851 (propertize "Please add backend specific headers here. It's easy!"
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1852 'face 'font-lock-warning-face)))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1853
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1854 (defun vc-dir-headers (backend dir)
95325
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1855 "Display the headers in the *VC dir* 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
1856 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
1857 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
1858 (concat
95325
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1859 (propertize "VC backend : " 'face 'font-lock-type-face)
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1860 (propertize (format "%s\n" backend) 'face 'font-lock-variable-name-face)
95325
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1861 (propertize "Working dir: " 'face 'font-lock-type-face)
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1862 (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
1863 (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
1864 "\n"))
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1865
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1866 (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
1867 "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
1868 ;; If you change the layout here, change vc-dir-move-to-goal-column.
95054
31c82b39ac3c Use state prettyprinter in vc-dir buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95049
diff changeset
1869 (let* ((isdir (vc-dir-fileinfo->directory fileentry))
31c82b39ac3c Use state prettyprinter in vc-dir buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95049
diff changeset
1870 (state (if isdir 'DIRECTORY (vc-dir-fileinfo->state fileentry)))
95325
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1871 (filename (vc-dir-fileinfo->name fileentry)))
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1872 ;; FIXME: Backends that want to print the state in a different way
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1873 ;; can do it by defining the `status-printer' function. Using
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1874 ;; `prettify-state-info' adds two extra vc-calls per item, which
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1875 ;; is too expensive.
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1876 ;;(prettified (if isdir state (vc-call-backend backend 'prettify-state-info filename))))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1877 (insert
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1878 (propertize
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1879 (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
1880 '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
1881 " "
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1882 (propertize
95325
da0363084105 (Problems): Remove fixed issues.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95324
diff changeset
1883 (format "%-20s" state)
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1884 '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
1885 ((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
1886 (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
1887 '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
1888 " "
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1889 (propertize
95054
31c82b39ac3c Use state prettyprinter in vc-dir buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95049
diff changeset
1890 (format "%s" filename)
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1891 '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
1892 '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
1893
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1894 (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
1895 nil)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1896
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1897 (defun vc-dir-refresh-files (files default-state)
95324
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1898 "Refresh some files in the *VC-dir* buffer."
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1899 (let ((def-dir default-directory)
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1900 (backend vc-dir-backend))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1901 (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
1902 ;; 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
1903 ;; `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
1904 ;; 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
1905 ;; 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
1906 ;; 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
1907 (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
1908 (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
1909 (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
1910 (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
1911 (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
1912 (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
1913 (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
1914 (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
1915 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
1916 (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
1917 ;; 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
1918 ;; 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
1919 ;; 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
1920 (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
1921 (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
1922 (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
1923 (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
1924 ;; 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
1925 ;; 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
1926 ;; 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
1927 (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
1928 (lambda (info)
95324
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1929 ;; The state for directory entries might
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1930 ;; have been changed to 'up-to-date,
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1931 ;; reset it, othewise it will be removed when doing 'x'
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1932 ;; next time.
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1933 ;; FIXME: There should be a more elegant way to do this.
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1934 (when (and (vc-dir-fileinfo->directory info)
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1935 (eq (vc-dir-fileinfo->state info)
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1936 'up-to-date))
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1937 (setf (vc-dir-fileinfo->state info) nil))
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1938
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1939 (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
1940
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1941 (defun vc-dir-refresh ()
95324
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1942 "Refresh the contents of the *VC-dir* 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
1943 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
1944 (interactive)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1945 (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
1946 (error "Another update process is in progress, cannot run two at a time")
95324
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1947 (let ((def-dir default-directory)
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1948 (backend vc-dir-backend))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1949 (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
1950 ;; 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
1951 ;; `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
1952 ;; 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
1953 ;; 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
1954 ;; 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
1955
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
1956 ;; 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
1957 ;; `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
1958 ;; `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
1959 ;; 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
1960 ;; 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
1961 (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
1962 (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
1963 (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
1964 ;; 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
1965 (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
1966 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
1967 (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
1968 (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
1969 (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
1970 (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
1971 (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
1972 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
1973 (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
1974 ;; 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
1975 ;; 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
1976 ;; 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
1977 (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
1978 (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
1979 (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
1980 (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
1981 (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
1982 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
1983 (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
1984 (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
1985 (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
1986 '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
1987 (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
1988
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
1989 (defun vc-dir-show-fileentry (file)
95324
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
1990 "Insert an entry for a specific file into the current *VC-dir* listing.
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
1991 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
1992 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
1993 (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
1994 (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
1995
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
1996 (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
1997 "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
1998 (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
1999 (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
2000 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
2001 (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
2002
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2003 (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
2004 "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
2005 (interactive)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2006 ;; 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
2007 (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
2008 (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
2009
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2010 (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
2011 "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
2012 nil)
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2013
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2014 ;; 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
2015
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2016 (defun vc-generic-status-printer (fileentry)
95079
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
2017 (vc-call-backend vc-dir-backend 'status-printer fileentry))
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
2018
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2019 (defun vc-generic-state (file)
95079
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
2020 (vc-call-backend vc-dir-backend 'state file))
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
2021
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2022 (defun vc-generic-status-fileinfo-extra (file)
95079
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
2023 (vc-call-backend vc-dir-backend 'status-fileinfo-extra file))
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2024
95016
ebce6f4852ad Move vc-dir menu hook back to vc-dispatcher.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94984
diff changeset
2025 (defun vc-dir-extra-menu ()
95079
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
2026 (vc-call-backend vc-dir-backend 'extra-status-menu))
95016
ebce6f4852ad Move vc-dir menu hook back to vc-dispatcher.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94984
diff changeset
2027
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2028 (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
2029 "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
2030 (vc-create-client-object
95324
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
2031 "VC dir"
95079
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
2032 (vc-dir-headers vc-dir-backend file-or-dir)
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2033 #'vc-generic-status-printer
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2034 #'vc-generic-state
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2035 #'vc-generic-status-fileinfo-extra
95016
ebce6f4852ad Move vc-dir menu hook back to vc-dispatcher.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94984
diff changeset
2036 #'vc-dir-refresh
ebce6f4852ad Move vc-dir menu hook back to vc-dispatcher.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94984
diff changeset
2037 #'vc-dir-extra-menu))
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2038
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2039 ;;;###autoload
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2040 (defun vc-dir (dir)
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2041 "Show the VC status for DIR."
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2042 (interactive "DVC status for directory: ")
95017
7be06414cb71 Remove assumptions about buffer names.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95016
diff changeset
2043 (pop-to-buffer (vc-dir-prepare-status-buffer "*vc-dir*" dir))
94803
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
2044 (if (and (derived-mode-p '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
2045 (vc-dir-refresh)
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2046 ;; 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
2047 (progn
95079
3068b2728aa4 (Todo): Add known problems.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95060
diff changeset
2048 (set (make-local-variable 'vc-dir-backend) (vc-responsible-backend dir))
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2049 ;; 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
2050 (vc-dir-mode (vc-make-backend-object dir))
94803
0c63a93bf877 (vc-deduce-fileset): Don't require the checkout-model and the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94796
diff changeset
2051 ;; FIXME: Make a derived-mode instead.
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2052 ;; Add VC-specific keybindings
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2053 (let ((map (current-local-map)))
95324
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
2054 (define-key map "v" 'vc-next-action) ;; C-x v v
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2055 (define-key map "=" 'vc-diff) ;; C-x v =
94819
aa24238f3274 VC directory bindings are noew documented.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94811
diff changeset
2056 (define-key map "i" 'vc-dir-register) ;; C-x v i
94611
78377ffa1363 Bug fix for vc-dispatcher split.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94608
diff changeset
2057 (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
2058 (define-key map "l" 'vc-print-log) ;; C-x v l
94819
aa24238f3274 VC directory bindings are noew documented.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94811
diff changeset
2059 ;; More confusing than helpful, probably
aa24238f3274 VC directory bindings are noew documented.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94811
diff changeset
2060 ;(define-key map "R" 'vc-revert) ;; u is taken by dispatcher unmark.
aa24238f3274 VC directory bindings are noew documented.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94811
diff changeset
2061 ;(define-key map "A" 'vc-annotate) ;; g is taken by dispatcher refresh
94695
f46fc59d6e9e More refactoring.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94689
diff changeset
2062 (define-key map "x" 'vc-dir-hide-up-to-date))
94722
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2063 )
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2064 ;; FIXME: Needs to alter a buffer-local map, otherwise clients may clash
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2065 (let ((map vc-dir-menu-map))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2066 ;; VC info details
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2067 (define-key map [sepvcdet] '("--"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2068 (define-key map [remup]
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2069 '(menu-item "Hide up-to-date" vc-dir-hide-up-to-date
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2070 :help "Hide up-to-date items from display"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2071 ;; FIXME: This needs a key binding. And maybe a better name
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2072 ;; ("Insert" like PCL-CVS uses does not sound that great either)...
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2073 (define-key map [ins]
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2074 '(menu-item "Show File" vc-dir-show-fileentry
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2075 :help "Show a file in the VC status listing even though it might be up to date"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2076 (define-key map [annotate]
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2077 '(menu-item "Annotate" vc-annotate
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2078 :help "Display the edit history of the current file using colors"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2079 (define-key map [diff]
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2080 '(menu-item "Compare with Base Version" vc-diff
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2081 :help "Compare file set with the base version"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2082 (define-key map [log]
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2083 '(menu-item "Show history" vc-print-log
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2084 :help "List the change log of the current file set in a window"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2085 ;; VC commands.
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2086 (define-key map [sepvccmd] '("--"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2087 (define-key map [update]
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2088 '(menu-item "Update to latest version" vc-update
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2089 :help "Update the current fileset's files to their tip revisions"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2090 (define-key map [revert]
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2091 '(menu-item "Revert to base version" vc-revert
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2092 :help "Revert working copies of the selected fileset to their repository contents."))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2093 (define-key map [next-action]
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2094 ;; FIXME: This really really really needs a better name!
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2095 ;; And a key binding too.
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2096 '(menu-item "Check In/Out" vc-next-action
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2097 :help "Do the next logical version control operation on the current fileset"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2098 (define-key map [register]
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2099 '(menu-item "Register" vc-dir-register
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2100 :help "Register file set into the version control system"))
3f069e5a5693 Second attempt to move the VC-specific menu initialization.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94699
diff changeset
2101 )))
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
2102
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2103 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2104
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2105 (defun vc-tag-precondition (dir)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2106 "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
2107 If any file is not up-to-date, return the name of the first such file.
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2108 \(This means, neither tag creation nor retrieval is allowed.\)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2109 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
2110 Otherwise, return nil."
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2111 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2112 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2113 (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
2114 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2115 (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
2116 (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
2117 (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
2118 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2119
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2120 ;;;###autoload
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2121 (defun vc-create-tag (dir name branchp)
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2122 "Descending recursively from DIR, make a tag called NAME.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2123 For each registered file, the working revision becomes part of
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2124 the named configuration. If the prefix argument BRANCHP is
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2125 given, the tag is made as a new branch and the files are
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2126 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
2127 (interactive
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2128 (list (read-file-name "Directory: " default-directory default-directory t)
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2129 (read-string "New tag 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
2130 current-prefix-arg))
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2131 (message "Making %s... " (if branchp "branch" "tag"))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2132 (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
2133 (vc-call-backend (vc-responsible-backend dir)
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2134 'create-tag dir name branchp)
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2135 (message "Making %s... done" (if branchp "branch" "tag")))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2136
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2137 ;;;###autoload
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2138 (defun vc-retrieve-tag (dir name)
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2139 "Descending recursively from DIR, retrieve the tag called NAME.
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2140 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
2141 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
2142 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
2143 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
2144 (interactive
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2145 (list (read-file-name "Directory: " default-directory default-directory t)
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2146 (read-string "Tag 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
2147 (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
2148 (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
2149 (format "Updating %s... " (abbreviate-file-name dir))
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2150 (format "Retrieving tag into %s... "
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 (abbreviate-file-name dir)))))
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
2152 (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
2153 (vc-call-backend (vc-responsible-backend dir)
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2154 'retrieve-tag dir name update)
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
2155 (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
2156
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2157 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2158
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2159 ;;;###autoload
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2160 (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
2161 "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
2162 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
2163 (interactive)
94820
5b364ab2654b Dupport an use an observer flag in (vc-dispatcher-selection-set).
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94819
diff changeset
2164 (let* ((vc-fileset (vc-deduce-fileset t))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2165 (backend (car vc-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2166 (files (cadr vc-fileset))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2167 (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
2168 ;; 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
2169 ;; 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
2170 ;; 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
2171 (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
2172 (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
2173 (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
2174 `(let ((inhibit-read-only t))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2175 (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
2176 (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
2177 (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
2178 (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
2179 (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
2180 (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
2181 (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
2182 (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
2183 (shrink-window-if-larger-than-buffer)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2184 ;; move point to the log entry for the working revision
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2185 (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
2186 (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
2187 (set-buffer-modified-p nil)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2188
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2189 ;;;###autoload
81957
8f9991bf3b41 Generalize stay-local-p to operatre on lists of files.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 81923
diff changeset
2190 (defun vc-revert ()
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2191 "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
2192 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
2193 to the working revision (except for keyword expansion)."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2194 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2195 (let* ((vc-fileset (vc-deduce-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2196 (files (cadr vc-fileset)))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2197 ;; 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
2198 ;; 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
2199 ;; 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
2200 ;; 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
2201 (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
2202 (vc-buffer-sync nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2203 (dolist (file files)
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2204 (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
2205 (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
2206 (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
2207 (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
2208 (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
2209 (error "Revert canceled"))))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2210 (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
2211 (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
2212 (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
2213 (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
2214 (kill-buffer "*vc-diff*"))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2215 (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
2216 (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
2217 (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
2218 (message "Reverting %s...done" (vc-delistify files)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2219
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2220 ;;;###autoload
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2221 (defun vc-rollback ()
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2222 "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
2223 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
2224 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
2225 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2226 (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
2227 (backend (car vc-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2228 (files (cadr vc-fileset))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2229 (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
2230 (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
2231 (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
2232 (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
2233 (error "Rollback requires a singleton fileset or repository versioning"))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2234 ;; FIXME: latest-on-branch-p should take the fileset.
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2235 (when (not (vc-call-backend backend 'latest-on-branch-p (car files)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2236 (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
2237 ;; 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
2238 ;; 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
2239 ;; 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
2240 ;; 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
2241 (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
2242 (vc-buffer-sync nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2243 (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
2244 (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
2245 (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
2246 (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
2247 (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
2248 ;; Accumulate changes associated with the fileset
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2249 (vc-setup-buffer "*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2250 (not-modified)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2251 (message "Finding changes...")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2252 (let* ((tip (vc-working-revision (car files)))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2253 ;; FIXME: `previous-revision' should take the fileset.
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2254 (previous (vc-call-backend backend 'previous-revision
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2255 (car files) tip)))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2256 (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
2257 ;; Display changes
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2258 (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
2259 (error "Rollback canceled"))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2260 (delete-windows-on "*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2261 (kill-buffer"*vc-diff*")
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2262 ;; Do the actual reversions
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2263 (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
2264 (with-vc-properties
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2265 files
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2266 (vc-call-backend backend 'rollback files)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2267 `((vc-state . ,'up-to-date)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2268 (vc-checkout-time . , (nth 5 (file-attributes file)))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2269 (vc-working-revision . nil)))
85454
be5bf5efd2ed Remove `diff-tree' operation, now subsumed by `diff'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85364
diff changeset
2270 (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
2271 (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
2272
38595
396f97177ef1 (vc-switch-backend): Fix autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38442
diff changeset
2273 ;;;###autoload
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2274 (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
2275
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2276 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2277 (defun vc-update ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2278 "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
2279 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
2280 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
2281 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
2282 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
2283 (interactive)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2284 (let* ((vc-fileset (vc-deduce-fileset))
94778
b9687393def1 Large simplification in (vc-deduce-fileset) logic.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94729
diff changeset
2285 (backend (car vc-fileset))
94984
b8d24d4a4bdc Eliminate exoensive (vc-expand-dirs) calls.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94974
diff changeset
2286 (files (cadr vc-fileset)))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2287 (dolist (file files)
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2288 (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
2289 (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
2290 (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
2291 (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
2292 (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
2293 (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
2294 (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
2295 (error "%s"
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2296 (substitute-command-keys
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2297 "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
2298 (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
2299 (vc-state file)
87147
e07baccc00fc Fix vc.el breakage.
Deepak Goel <deego@gnufans.org>
parents: 87145
diff changeset
2300 (substitute-command-keys
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2301 "\\[vc-next-action] to correct")))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2302 (vc-maybe-resolve-conflicts
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2303 file (vc-call-backend backend 'merge-news file)))))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2304
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2305 (defun vc-version-backup-file (file &optional rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2306 "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
2307 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
2308 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
2309 its name; otherwise return nil."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2310 (when (vc-call make-version-backups-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2311 (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
2312 (if (file-exists-p backup-file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2313 backup-file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2314 ;; 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
2315 (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
2316 (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
2317 backup-file)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2318
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2319 (defun vc-revert-file (file)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2320 "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
2321 (with-vc-properties
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2322 (list file)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2323 (let ((backup-file (vc-version-backup-file file)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2324 (when backup-file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2325 (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
2326 (vc-delete-automatic-version-backups file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2327 (vc-call revert file backup-file))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2328 `((vc-state . up-to-date)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2329 (vc-checkout-time . ,(nth 5 (file-attributes file)))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2330 (vc-resynch-buffer file t t))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2331
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2332 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2333 (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
2334 "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
2335 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
2336 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
2337 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
2338 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
2339 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
2340 (interactive
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2341 (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
2342 (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
2343 (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
2344 (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
2345 (backends nil))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2346 (unless backend
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2347 (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
2348 ;; Find the registered backends.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2349 (dolist (backend vc-handled-backends)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2350 (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
2351 (push backend backends)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2352 ;; Find the next backend.
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2353 (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
2354 (others (delete backend backends)))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2355 (cond
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2356 ((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
2357 (current-prefix-arg
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2358 (intern
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2359 (upcase
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2360 (completing-read
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2361 (format "Switch to backend [%s]: " def)
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2362 (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
2363 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
2364 (t def))))))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2365 (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
2366 (vc-file-clearprops file)
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2367 (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
2368 ;; 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
2369 (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
2370 (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
2371 (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
2372 (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
2373
38726
2dddcf515155 (vc-transfer-file): Fix malformed autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38608
diff changeset
2374 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2375 (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
2376 "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
2377 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
2378 \(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
2379 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
2380 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
2381 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
2382 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
2383 \(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
2384 (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
2385 (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
2386 (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
2387 (move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2388 (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
2389 ;; 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
2390 (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
2391 (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
2392 (comment nil))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2393 (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
2394 (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
2395 (if registered
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2396 (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
2397 ;; `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
2398 (vc-switch-backend file old-backend)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2399 (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
2400 (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
2401 (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
2402 ;; 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
2403 (unwind-protect
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2404 (progn
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2405 (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
2406 (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
2407 ;; 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
2408 ;; 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
2409 ;; 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
2410 (if unmodified-file
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2411 (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
2412 '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
2413 (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
2414 (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
2415 (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
2416 (when modified-file
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2417 (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
2418 (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
2419 (vc-checkout file t nil))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2420 (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
2421 (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
2422 (when move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2423 (vc-switch-backend file old-backend)
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2424 (setq comment (vc-call-backend old-backend 'comment-history file))
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2425 (vc-call-backend old-backend 'unregister file))
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2426 (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
2427 (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
2428 (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
2429 (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
2430 (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
2431
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2432 (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
2433 "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
2434 (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
2435 (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
2436 (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
2437 (masters
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2438 ;; 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
2439 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2440 (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
2441 templates)))
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2442 (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
2443 (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
2444 (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
2445 (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
2446 oldmaster
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2447 (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
2448 ;; 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
2449 (dolist (f masters)
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
2450 (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
2451 (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
2452 ;; 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
2453 (dolist (f masters)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2454 (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
2455 (file-directory-p dir))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2456 (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
2457 (error "New file lacks a version control directory")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2458
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2459 (defun vc-delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2460 "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
2461 (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
2462 (setq file (expand-file-name file))
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2463 (let ((buf (get-file-buffer file))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2464 (backend (vc-backend file)))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2465 (unless backend
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2466 (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
2467 (file-name-nondirectory file)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2468 (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
2469 (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
2470 (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
2471 (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
2472 (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
2473 (when (eq state 'edited)
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2474 (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
2475 (when (eq state 'conflict)
069edac43148 (vc-delete-file): Check if the file has uncommitted changed.
Sam Steingold <sds@gnu.org>
parents: 94519
diff changeset
2476 (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
2477 (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
2478 (file-name-nondirectory file)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2479 (error "Abort!"))
94499
5f57377d1eff (vc-dir-mode-map): Bind "d" to vc-dir-delete-file.
Sam Steingold <sds@gnu.org>
parents: 94495
diff changeset
2480 (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
2481 (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
2482 (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
2483 (let ((backup-inhibited nil))
95269
1e9eb6106f5a (vc-delete-file): Don't try to resynch the buffer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 95079
diff changeset
2484 (backup-buffer))))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2485 (vc-call-backend backend 'delete-file file)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2486 ;; 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
2487 (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
2488 ;; 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
2489 (vc-file-clearprops file)
95270
4d7bc1390196 (vc-delete-file): Make sure the buffer is deleted and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95269
diff changeset
2490 ;; Make sure the buffer is deleted and the *vc-dir* buffers are
4d7bc1390196 (vc-delete-file): Make sure the buffer is deleted and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95269
diff changeset
2491 ;; updated after this.
4d7bc1390196 (vc-delete-file): Make sure the buffer is deleted and
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95269
diff changeset
2492 (vc-resynch-buffer file nil t)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2493
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2494 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2495 (defun vc-rename-file (old new)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2496 "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
2497 (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
2498 (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
2499 (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
2500 (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
2501 (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
2502 (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
2503 (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
2504 (error "New file already exists"))
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2505 (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
2506 (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
2507 (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
2508 (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
2509 (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
2510 (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
2511 ;; 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
2512 (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
2513 ;; ?? 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
2514 ;; 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
2515 ;; 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
2516 (when oldbuf
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2517 (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
2518 (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
2519 (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
2520 (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
2521 (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
2522 (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
2523
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2524 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2525 (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
2526 "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
2527 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
2528 directory.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2529
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2530 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
2531
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2532 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
2533 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
2534 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
2535
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2536 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
2537 log entries should be gathered."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2538 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2539 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2540 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2541 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2542 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2543 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2544 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2545 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2546 (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
2547 (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
2548 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2549 (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
2550 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2551 (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
2552 ;; 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
2553 ;; 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
2554 ;; 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
2555 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
2556 (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
2557 '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
2558
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2559 ;;; 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
2560
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
2561 (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
2562 (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
2563
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2564 ;; 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
2565 ;; 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
2566 ;; it is used in code below.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2567 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2568 (defun vc-trunk-p (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2569 "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
2570 (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
2571
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2572 (defun vc-branch-p (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2573 "Return t if REV is a branch revision."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2574 (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
2575
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2576 ;;;###autoload
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2577 (defun vc-branch-part (rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2578 "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
2579 (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
2580 (when index
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2581 (substring rev 0 index))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2582
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2583 (defun vc-minor-part (rev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2584 "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
2585 (string-match "[0-9]+\\'" rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2586 (substring rev (match-beginning 0) (match-end 0)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2587
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2588 (defun vc-default-previous-revision (backend file rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2589 "Return the revision number immediately preceding REV for FILE,
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2590 or nil if there is no previous revision. This default
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2591 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
2592 used by RCS and CVS."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2593 (let ((branch (vc-branch-part rev))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2594 (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
2595 (when branch
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2596 (if (> minor-num 1)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2597 ;; 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
2598 (concat branch "." (number-to-string (1- minor-num)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2599 (if (vc-trunk-p rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2600 ;; we are at the beginning of the trunk --
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2601 ;; don't know anything to return here
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2602 nil
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2603 ;; we are at the beginning of a branch --
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2604 ;; return revision of starting point
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2605 (vc-branch-part branch))))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2606
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2607 (defun vc-default-next-revision (backend file rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2608 "Return the revision number immediately following REV for FILE,
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2609 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
2610 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
2611 and CVS."
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2612 (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
2613 (let ((branch (vc-branch-part rev))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2614 (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
2615 (concat branch "." (number-to-string (1+ minor-num))))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2616
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2617 (defun vc-default-responsible-p (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2618 "Indicate whether BACKEND is reponsible for FILE.
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2619 The default is to return nil always."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2620 nil)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2621
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2622 (defun vc-default-could-register (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2623 "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
2624 The default implementation returns t for all files."
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2625 t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2626
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2627 (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
2628 "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
2629 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
2630 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
2631 t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2632
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2633 (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
2634
80875
51b85ee9ab0f Ensure that update-changelog issues an error when used with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
2635 (defalias 'vc-cvs-update-changelog 'vc-update-changelog-rcs2log)
95324
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
2636
80875
51b85ee9ab0f Ensure that update-changelog issues an error when used with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
2637 (defalias 'vc-rcs-update-changelog 'vc-update-changelog-rcs2log)
95324
51f0a2e341de (vc-make-backend-object): Fix name.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95322
diff changeset
2638
80875
51b85ee9ab0f Ensure that update-changelog issues an error when used with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 75347
diff changeset
2639 ;; 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
2640 ;; 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
2641 (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
2642 "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
2643 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
2644 ;; 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
2645 (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
2646 (changelog (find-change-log))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2647 ;; 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
2648 (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
2649 (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
2650 (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
2651 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
2652 (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
2653 (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
2654 (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
2655 (user-full-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2656 (user-login-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2657 (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
2658 (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
2659 user-mail-address)))
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2660 (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
2661 (barf-if-buffer-read-only)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2662 (vc-buffer-sync)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2663 (undo-boundary)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2664 (goto-char (point-min))
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2665 (push-mark)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2666 (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
2667 (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
2668 (unwind-protect
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2669 (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
2670 (setq default-directory odefault)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2671 (if (eq 0 (apply 'call-process
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2672 (expand-file-name "rcs2log"
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2673 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
2674 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
2675 "-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
2676 "-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
2677 "\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
2678 "\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
2679 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2680 (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
2681 (file-relative-name
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2682 (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
2683 files)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2684 "done"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2685 (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
2686 (erase-buffer)
59011
816dc38b1981 (vc-default-update-changelog): Use insert-file-contents, rather than
André Spiegel <spiegel@gnu.org>
parents: 58642
diff changeset
2687 (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
2688 "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
2689 (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
2690 (delete-file tempfile)))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2691
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2692 (defun vc-default-find-revision (backend file rev buffer)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2693 "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
2694 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
2695 to provide the `find-revision' operation instead."
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2696 (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
2697 (unwind-protect
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2698 (progn
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2699 (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
2700 (with-current-buffer buffer
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2701 (insert-file-contents-literally tmpfile)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2702 (delete-file tmpfile))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2703
94539
fee32a11924d Name change in preparation for ripping out vc-dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94538
diff changeset
2704 (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
2705 (let* ((state (vc-state file))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2706 (statestring
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2707 (cond
95054
31c82b39ac3c Use state prettyprinter in vc-dir buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95049
diff changeset
2708 ((stringp state) (concat "(locked:" 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
2709 ((eq state 'edited) "(modified)")
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2710 ((eq state 'needs-merge) "(merge)")
94521
2a61c5f918a5 Change 'needs-patch to 'needs-update.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94520
diff changeset
2711 ((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
2712 ((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
2713 ((eq state 'removed) "(removed)")
94699
7e7ef774315b Cleanup preparatory to getting rid of dired.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94698
diff changeset
2714 ((eq state 'ignored) "(ignored)")
95054
31c82b39ac3c Use state prettyprinter in vc-dir buffers.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95049
diff changeset
2715 ((eq state 'unregistered) "(unregistered)")
87450
71fc7b1db920 * vc-hooks.el (vc-state): Document new 'ignored and 'unregistered
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 87449
diff changeset
2716 ((eq state 'unlocked-changes) "(stale)")
95314
325b3c8ac762 (vc-default-prettify-state-info): Fix formatting of an
Andreas Schwab <schwab@suse.de>
parents: 95270
diff changeset
2717 (t (format "(unknown:%s)" state))))
85132
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2718 (buffer
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2719 (get-file-buffer file))
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2720 (modflag
d5d7671ba1ea Merge in new VC with filesets.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85114
diff changeset
2721 (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
2722 (concat statestring modflag)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2723
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2724 (defun vc-default-rename-file (backend old new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2725 (condition-case nil
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2726 (add-name-to-file old new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2727 (error (rename-file old new)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2728 (vc-delete-file old)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2729 (with-current-buffer (find-file-noselect new)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2730 (vc-register)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2731
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
2732 (defalias 'vc-default-check-headers 'ignore)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2733
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2734 (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
2735
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2736 (defun vc-default-show-log-entry (backend rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2737 (with-no-warnings
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2738 (log-view-goto-rev rev)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2739
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2740 (defun vc-default-comment-history (backend file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2741 "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
2742 (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
2743 (with-current-buffer "*vc*"
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2744 (vc-call-backend backend 'print-log (list file))
93956
bfc762f0b49c * vc-hooks.el (vc-state): Add new state `conflict'.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 93934
diff changeset
2745 (buffer-string))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2746
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2747 (defun vc-default-receive-file (backend file rev)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2748 "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
2749 (vc-call-backend backend 'register file rev ""))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2750
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2751 (defun vc-default-retrieve-tag (backend dir name update)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2752 (if (string= name "")
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2753 (progn
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2754 (vc-file-tree-walk
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2755 dir
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2756 (lambda (f) (and
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2757 (vc-up-to-date-p f)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2758 (vc-error-occurred
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2759 (vc-call-backend backend '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
2760 (when update (vc-resynch-buffer f t t)))))))
95020
4da572dc4992 Snapshot primitives globally renamed to refer to tags, documentation updated.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 95018
diff changeset
2761 (let ((result (vc-tag-precondition dir)))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2762 (if (stringp result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2763 (error "File %s is locked" result)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2764 (setq update (and (eq result 'visited) update))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2765 (vc-file-tree-walk
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2766 dir
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2767 (lambda (f) (vc-error-occurred
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2768 (vc-call-backend backend '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
2769 (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
2770
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2771 (defun vc-default-revert (backend file contents-done)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2772 (unless contents-done
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
2773 (let ((rev (vc-working-revision file))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2774 (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
2775 (message "Checking out %s..." file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2776 (let ((failed t)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2777 (backup-name (car (find-backup-file-name file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2778 (when backup-name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2779 (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
2780 (unless (file-writable-p file)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2781 (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
2782 (unwind-protect
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2783 (let ((coding-system-for-read 'no-conversion)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2784 (coding-system-for-write 'no-conversion))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2785 (with-temp-file file
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2786 (let ((outbuf (current-buffer)))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2787 ;; 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
2788 (with-current-buffer file-buffer
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2789 (let ((default-directory (file-name-directory file)))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2790 (vc-call-backend backend 'find-revision
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
2791 file rev outbuf)))))
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2792 (setq failed nil))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2793 (when backup-name
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2794 (if failed
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2795 (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
2796 (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
2797 (message "Checking out %s...done" file))))
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2798
85364
f8d1bb788744 (vc-diff-sentinel, vc-diff-internal): Revert some changes in the
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 85178
diff changeset
2799 (defalias 'vc-default-revision-completion-table 'ignore)
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2800
94059
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2801 (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
2802 (funcall update-function
c249cf124bd6 (vc-status-update): Revert an incorrect rewrite. Add some
Alexandre Julliard <julliard@winehq.org>
parents: 94003
diff changeset
2803 (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
2804
85042
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2805 (defun vc-check-headers ()
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2806 "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
2807 (interactive)
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2808 (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
2809
2fe89ebca6d3 Reorder functions, no code changes.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 84586
diff changeset
2810 ;;; Annotate functionality
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2811
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2812 ;; 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
2813 ;; 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
2814 ;; 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
2815 ;; 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
2816 ;; 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
2817 (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
2818
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2819 ;; internal buffer-local variables
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2820 (defvar vc-annotate-backend nil)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2821 (defvar vc-annotate-parent-file nil)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2822 (defvar vc-annotate-parent-rev nil)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2823 (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
2824
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2825 (defconst vc-annotate-font-lock-keywords
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2826 ;; 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
2827 '((vc-annotate-lines)))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2828
53663
34fd515d8bb8 (vc-annotate-mode): Inherit from fundamental-mode and activate
André Spiegel <spiegel@gnu.org>
parents: 53630
diff changeset
2829 (define-derived-mode vc-annotate-mode fundamental-mode "Annotate"
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2830 "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
2831
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2832 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
2833 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
2834 menu items."
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2835 ;; 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
2836 ;; 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
2837 (add-to-invisibility-spec 'foo)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2838 (remove-from-invisibility-spec 'foo)
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2839 (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
2840 (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
2841 '(vc-annotate-font-lock-keywords t))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2842 (view-mode 1))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2843
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2844 (defun vc-annotate-toggle-annotation-visibility ()
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2845 "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
2846 (interactive)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2847 (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
2848 'remove-from-invisibility-spec
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2849 'add-to-invisibility-spec)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2850 'vc-annotate-annotation)
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2851 (force-window-update (current-buffer)))
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2852
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2853 (defun vc-annotate-display-default (ratio)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2854 "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
2855 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
2856 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
2857 (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
2858 (message "Redisplaying annotation...")
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2859 (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
2860 (message "Redisplaying annotation...done"))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2861
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2862 (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
2863 "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
2864 ;; 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
2865 (caar (last color-map)))
67767
f4a3c7808545 (vc-annotate-car-last-cons): Defn moved up.
Richard M. Stallman <rms@gnu.org>
parents: 67755
diff changeset
2866
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2867 (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
2868 (let ((bol (point))
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2869 (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
2870 (inhibit-read-only t))
87590
3df0bed5b17a (vc-process-sentinel): Fix apparent typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 87512
diff changeset
2871 (assert (>= (point) bol))
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2872 (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
2873 date))
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2874
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2875 (defun vc-annotate-display-autoscale (&optional full)
57114
deddb5e7acc3 (annotate-time): Document point handling.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56952
diff changeset
2876 "Highlight the output of \\[vc-annotate] using an autoscaled color map.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2877 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
2878 oldest annotation in the buffer, or, with prefix argument FULL, to
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2879 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
2880 (interactive "P")
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2881 (let ((newest 0.0)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2882 (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
2883 (current (vc-annotate-convert-time (current-time)))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2884 date)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2885 (message "Redisplaying annotation...")
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2886 ;; 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
2887 (save-excursion
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2888 (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
2889 (while (not (eobp))
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
2890 (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
2891 (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
2892 (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
2893 (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
2894 (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
2895 (forward-line 1)))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2896 (vc-annotate-display
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2897 (/ (- (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
2898 (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
2899 (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
2900 (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
2901 (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
2902 (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
2903 (- current oldest)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2904 (- current newest))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2905 (format "Spanned to %.1f days old" (- current oldest))))))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2906
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2907 ;; Menu -- Using easymenu.el
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2908 (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
2909 "VC Annotate Display Menu"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2910 `("VC-Annotate"
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
2911 ["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
2912 (setq vc-annotate-display-mode nil)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2913 (vc-annotate-display-select))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2914 :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
2915 ,@(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
2916 (mapcar (lambda (element)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2917 (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
2918 `[,(format "Span %.1f days" days)
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2919 (vc-annotate-display-select nil ,days)
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2920 :style toggle :selected
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2921 (eql vc-annotate-display-mode ,days) ]))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2922 vc-annotate-menu-elements))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2923 ["Span ..."
67882
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2924 (vc-annotate-display-select
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
2925 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
2926 "--"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2927 ["Span to Oldest"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2928 (unless (eq vc-annotate-display-mode 'scale)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2929 (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
2930 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2931 "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
2932 :style toggle :selected
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2933 (eq vc-annotate-display-mode 'scale)]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2934 ["Span Oldest->Newest"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2935 (unless (eq vc-annotate-display-mode 'fullscale)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2936 (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
2937 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2938 "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
2939 :style toggle :selected
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2940 (eq vc-annotate-display-mode 'fullscale)]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2941 "--"
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2942 ["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
2943 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2944 "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
2945 ["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
2946 :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
2947 ["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
2948 :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
2949 ["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
2950 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2951 "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
2952 ["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
2953 :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
2954 ["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
2955 :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
2956 ["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
2957 :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
2958 ["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
2959 :help
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
2960 "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
2961 ["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
2962 :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
2963
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2964 (defun vc-annotate-display-select (&optional buffer mode)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2965 "Highlight the output of \\[vc-annotate].
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2966 By default, the current buffer is highlighted, unless overridden by
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2967 BUFFER. `vc-annotate-display-mode' specifies the highlighting mode to
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2968 use; you may override this using the second optional arg MODE."
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2969 (interactive)
94207
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
2970 (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
2971 (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
2972 (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
2973 ;; 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
2974 (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
2975 (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
2976 ;; 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
2977 ((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
2978 (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
2979 ((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
2980 (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
2981 ((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
2982 (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
2983 (/ vc-annotate-display-mode
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2984 (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
2985 (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
2986 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
2987
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2988 ;;;###autoload
91876
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
2989 (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
2990 "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
2991
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
2992 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
2993 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
2994 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
2995 youngest, and intermediate colors indicate intermediate ages. By
39233
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
2996 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
2997 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
2998
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
2999 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
3000 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
3001 displays and annotates that revision instead of the working revision
39388
bc299a98338c Doc fix
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39309
diff changeset
3002 \(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
3003 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
3004 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
3005 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
3006 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
3007
91876
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3008 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
3009
39233
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3010 Customization variables:
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3011
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3012 `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
3013 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
3014 `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
3015 `vc-annotate-background' specifies the background color."
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3016 (interactive
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3017 (save-current-buffer
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3018 (vc-ensure-vc-buffer)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3019 (list buffer-file-name
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3020 (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
3021 (if (null current-prefix-arg) def
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3022 (read-string
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3023 (format "Annotate from revision (default %s): " def)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3024 nil nil def)))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3025 (if (null current-prefix-arg)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3026 vc-annotate-display-mode
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3027 (float (string-to-number
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3028 (read-string "Annotate span days (default 20): "
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3029 nil nil "20")))))))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
3030 (vc-ensure-vc-buffer)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3031 (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
3032 (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
3033 (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
3034 ;; 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
3035 ;; 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
3036 ;; 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
3037 (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
3038 (message "Annotating...")
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3039 ;; 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
3040 ;; 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
3041 ;; 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
3042 (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
3043 (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
3044 ;; 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
3045 (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
3046 (with-output-to-temp-buffer temp-buffer-name
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3047 (let ((backend (vc-backend file)))
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3048 (vc-call-backend backend 'annotate-command file
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3049 (get-buffer temp-buffer-name) rev)
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3050 ;; we must setup the mode first, and then set our local
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3051 ;; variables before the show-function is called at the exit of
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3052 ;; with-output-to-temp-buffer
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3053 (with-current-buffer temp-buffer-name
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3054 (unless (equal major-mode 'vc-annotate-mode)
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3055 (vc-annotate-mode))
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3056 (set (make-local-variable 'vc-annotate-backend) backend)
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3057 (set (make-local-variable 'vc-annotate-parent-file) file)
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3058 (set (make-local-variable 'vc-annotate-parent-rev) rev)
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3059 (set (make-local-variable 'vc-annotate-parent-display-mode)
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3060 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
3061
82306
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3062 (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
3063 (vc-exec-after
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3064 `(progn
42ad26e14a99 (vc-annotate): Select temp-buffer before running vc-exec-after.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 82282
diff changeset
3065 ;; 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
3066 ;; 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
3067 ;; 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
3068 (when ,current-line ;(and (bobp))
84586
3048d1b37570 (vc-process-sentinel): New function.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 84336
diff changeset
3069 (goto-line ,current-line)
85794
b627bc69db6a (vc-annotate): Fix omission bug:
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 85606
diff changeset
3070 (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
3071 (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
3072 (message "Annotating... done")))))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3073
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3074 (defun vc-annotate-prev-revision (prefix)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3075 "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
3076
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3077 With a numeric prefix argument, annotate the revision that many
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3078 revisions previous."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3079 (interactive "p")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3080 (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
3081
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3082 (defun vc-annotate-next-revision (prefix)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3083 "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
3084
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3085 With a numeric prefix argument, annotate the revision that many
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3086 revisions after."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3087 (interactive "p")
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3088 (vc-annotate-warp-revision prefix))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3089
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3090 (defun vc-annotate-working-revision ()
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3091 "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
3092 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3093 (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
3094 (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
3095 (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
3096 (if (equal warp-rev vc-annotate-parent-rev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3097 (message "Already at revision %s" warp-rev)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3098 (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
3099
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3100 (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
3101 "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
3102 ;; 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
3103 (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
3104
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3105 (defun vc-annotate-revision-at-line ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3106 "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
3107 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3108 (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
3109 (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
3110 (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
3111 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3112 (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
3113 (if (equal rev-at-line vc-annotate-parent-rev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3114 (message "Already at revision %s" rev-at-line)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3115 (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
3116
91830
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3117 (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
3118 "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
3119 (interactive)
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3120 (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
3121 (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
3122 (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
3123 (if (not rev-at-line)
98b6c9d8faca (vc-annotate-find-revision-at-line): New function.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91698
diff changeset
3124 (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
3125 (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
3126
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3127 (defun vc-annotate-revision-previous-to-line ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3128 "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
3129 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3130 (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
3131 (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
3132 (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
3133 (prev-rev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3134 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3135 (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
3136 (setq prev-rev
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3137 (vc-call-backend vc-annotate-backend 'previous-revision
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3138 vc-annotate-parent-file rev-at-line))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3139 (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
3140
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3141 (defun vc-annotate-show-log-revision-at-line ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3142 "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
3143 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3144 (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
3145 (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
3146 (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
3147 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3148 (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
3149 (vc-print-log rev-at-line)))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3150
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3151 (defun vc-annotate-show-diff-revision-at-line ()
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3152 "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
3153 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3154 (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
3155 (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
3156 (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
3157 (prev-rev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3158 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3159 (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
3160 (setq prev-rev
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3161 (vc-call-backend vc-annotate-backend 'previous-revision
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3162 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
3163 (if (not prev-rev)
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3164 (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
3165 (save-window-excursion
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
3166 (vc-diff-internal
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
3167 nil
95060
e1e4085b4297 (vc-annotate-show-diff-revision-at-line): Change
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95054
diff changeset
3168 ;; The value passed here should follow what
e1e4085b4297 (vc-annotate-show-diff-revision-at-line): Change
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95054
diff changeset
3169 ;; `vc-deduce-fileset' returns.
e1e4085b4297 (vc-annotate-show-diff-revision-at-line): Change
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95054
diff changeset
3170 (cons vc-annotate-backend
e1e4085b4297 (vc-annotate-show-diff-revision-at-line): Change
Dan Nicolaescu <dann@ics.uci.edu>
parents: 95054
diff changeset
3171 (cons (list vc-annotate-parent-file) nil))
94240
9f1f284d17b3 (vc-next-action): Do not consider directories when
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94214
diff changeset
3172 prev-rev rev-at-line))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3173 (switch-to-buffer "*vc-diff*"))))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3174
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3175 (defun vc-annotate-warp-revision (revspec)
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3176 "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
3177
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3178 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
3179 forward, if possible, otherwise echo a warning message. If
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3180 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
3181 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
3182 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
3183 revision."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3184 (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
3185 (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
3186 (let* ((buf (current-buffer))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3187 (oldline (line-number-at-pos))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3188 (revspeccopy revspec)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3189 (newrev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3190 (cond
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3191 ((and (integerp revspec) (> revspec 0))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3192 (setq newrev vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3193 (while (and (> revspec 0) newrev)
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3194 (setq newrev (vc-call-backend vc-annotate-backend 'next-revision
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3195 vc-annotate-parent-file newrev))
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3196 (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
3197 (unless newrev
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3198 (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
3199 revspeccopy vc-annotate-parent-rev)))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3200 ((and (integerp revspec) (< revspec 0))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3201 (setq newrev vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3202 (while (and (< revspec 0) newrev)
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3203 (setq newrev (vc-call-backend vc-annotate-backend 'previous-revision
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3204 vc-annotate-parent-file newrev))
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3205 (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
3206 (unless newrev
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3207 (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
3208 (- 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
3209 ((stringp revspec) (setq newrev revspec))
85139
8ba0e30716a5 Terminology cleanup.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 85132
diff changeset
3210 (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
3211 (when newrev
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3212 (vc-annotate vc-annotate-parent-file newrev
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3213 vc-annotate-parent-display-mode
91876
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3214 buf
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3215 ;; 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
3216 ;; place the point in the line.
c38d9e3eee47 (vc-annotate): Add new argument.
Dan Nicolaescu <dann@ics.uci.edu>
parents: 91830
diff changeset
3217 (min oldline (progn (goto-char (point-max))
94805
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3218 (forward-line -1)
89d37b54b964 * vc.el (vc-mark-resolved): Add `backend' argument.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 94803
diff changeset
3219 (line-number-at-pos))))))))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3220
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3221 (defun vc-annotate-compcar (threshold a-list)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3222 "Test successive cons cells of A-LIST against THRESHOLD.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3223 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
3224 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
3225 (let ((i 1)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3226 (tmp-cons (car a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3227 (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
3228 (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
3229 (setq i (+ i 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3230 tmp-cons)) ; Return the appropriate value
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3231
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3232 (defun vc-annotate-convert-time (time)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3233 "Convert a time value to a floating-point number of days.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3234 The argument TIME is a list as returned by `current-time' or
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3235 `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
3236 (/ (+ (* (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
3237
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3238 (defun vc-annotate-difference (&optional offset)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3239 "Return the time span in days to the next annotation.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3240 This calls the backend function annotate-time, and returns the
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3241 difference in days between the time returned and the current time,
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3242 or OFFSET if present."
86411
8216715ac455 (vc-annotate-mode): Frob buffer invisibility spec.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 86410
diff changeset
3243 (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
3244 (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
3245 (- (or offset
2aa6d908ffad * vc-hooks.el (vc-insert-file, vc-state, vc-working-revision)
Dan Nicolaescu <dann@ics.uci.edu>
parents: 94173
diff changeset
3246 (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
3247 next-time))))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3248
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3249 (defun vc-default-annotate-current-time (backend)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3250 "Return the current time, encoded as fractional days."
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3251 (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
3252
51764
3c3b6501b4f1 (vc-annotate-offset): Move defvar up.
John Paul Wallington <jpw@pobox.com>
parents: 51762
diff changeset
3253 (defvar vc-annotate-offset nil)
3c3b6501b4f1 (vc-annotate-offset): Move defvar up.
John Paul Wallington <jpw@pobox.com>
parents: 51762
diff changeset
3254
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3255 (defun vc-annotate-display (ratio &optional offset)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3256 "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
3257 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
3258 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
3259 (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
3260 (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
3261 (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
3262 vc-annotate-color-map)))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3263 (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
3264 (font-lock-mode 1))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3265
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3266 (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
3267 (while (< (point) limit)
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3268 (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
3269 (start (point))
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3270 (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
3271 (when difference
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3272 (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
3273 (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
3274 ;; 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
3275 (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
3276 (if (string-equal
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3277 (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
3278 (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
3279 (cdr color))))
3651af36c6b6 (vc-exec-after): Don't move point from the sentinel.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 81728
diff changeset
3280 ;; 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
3281 (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
3282 (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
3283 (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
3284 (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
3285 (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
3286 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
3287 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
3288 (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
3289 ;; 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
3290 nil)
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3291
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3292
94573
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3293 ;; 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
3294
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3295 (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
3296 "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
3297 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
3298 (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
3299 (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
3300
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3301 (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
3302 (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
3303 (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
3304 (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
3305 (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
3306 (mapcar
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3307 (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
3308 (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
3309 (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
3310 (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
3311 (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
3312 (or
ce09c5078ae7 Partially undo the dispatcher split, it needs to happen more gradually
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 94572
diff changeset
3313 (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
3314 (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
3315 (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
3316
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3317 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3318
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
3319 ;; arch-tag: ca82c1de-3091-4e26-af92-460abc6213a6
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3320 ;;; vc.el ends here