annotate lisp/vc.el @ 71597:2bcad0daa88f

(Remote Mailboxes): Add missing @code keyword.
author Nick Roberts <nickrob@snap.net.nz>
date Mon, 03 Jul 2006 23:14:06 +0000
parents b0324f716b87
children 4257c62a5b2a a387c138b28e
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,
68651
3bd95f4f2941 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 68384
diff changeset
4 ;; 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
5
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
6 ;; 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
7 ;; Maintainer: Andre Spiegel <spiegel@gnu.org>
39117
abd085bfec0c Add Keywords header.
Gerd Moellmann <gerd@gnu.org>
parents: 39000
diff changeset
8 ;; Keywords: tools
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
9
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
10 ;; $Id$
32093
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
11
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; GNU Emacs is free software; you can redistribute it and/or modify
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16 ;; the Free Software Foundation; either version 2, or (at your option)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; any later version.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; 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
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22 ;; GNU General Public License for more details.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
23
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64091
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63262
diff changeset
26 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
6fb026ad601f Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 63262
diff changeset
27 ;; Boston, MA 02110-1301, USA.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
29 ;;; Credits:
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
30
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
31 ;; VC was initially designed and implemented by Eric S. Raymond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
32 ;; <esr@snark.thyrsus.com>. Over the years, many people have
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
33 ;; contributed substantial amounts of work to VC. These include:
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
34 ;; 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
35 ;; 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
36 ;; 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
37 ;; Martin Lorentzson <martinl@gnu.org>
32910
3a5e5c74d3bb fix my email
Dave Love <fx@gnu.org>
parents: 32888
diff changeset
38 ;; 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
39 ;; Stefan Monnier <monnier@cs.yale.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>
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
43 ;; Thien-Thi Nguyen <ttn@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
44
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
45 ;;; Commentary:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
46
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
47 ;; 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
48 ;;
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
49 ;; Supported version-control systems presently include CVS, RCS, GNU Arch,
4f2f430bf7c3 (vc-trunk-p): Add autoload cookie. The function is used in vc-rcs.el
André Spiegel <spiegel@gnu.org>
parents: 61705
diff changeset
50 ;; Subversion, Meta-CVS, and SCCS (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
51 ;;
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
52 ;; 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
53 ;; 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
54 ;; 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
55 ;; 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
56 ;; 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
57 ;; 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
58 ;; NExTSTEP 3.0.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
59 ;;
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
60 ;; 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
61 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
62 ;; Proper function of the SCCS diff commands requires the shellscript vcdiff
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
63 ;; to be installed somewhere on Emacs's path for executables.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
64 ;;
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
65 ;; If your site uses the ChangeLog convention supported by Emacs, the
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
66 ;; function log-edit-comment-to-change-log could prove a useful checkin hook,
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
67 ;; although you might prefer to use C-c C-a (i.e. log-edit-insert-changelog)
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
68 ;; 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
69 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70 ;; 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
71 ;; 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
72 ;; 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
73 ;; 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
74 ;; vc may get seriously confused. Don't do these things!
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
75 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
76 ;; 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
77 ;; the file.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
78 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
79 ;; ADDING SUPPORT FOR OTHER BACKENDS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
80 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
81 ;; 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
82 ;; 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
83 ;; 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
84 ;; 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
85 ;; 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
86 ;; `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
87 ;; 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
88 ;; will be available for that file.
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 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
91 ;; 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
92 ;; do not generally need to be aware of these properties. For example,
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
93 ;; `vc-sys-workfile-version' should compute the workfile version and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
94 ;; 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
95 ;; 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
96 ;; 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
97 ;; 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
98 ;; the macro `with-vc-properties' in vc.el).
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
99 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
100 ;; 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
101 ;; 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
102 ;; `*'), others are optional (`-').
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
103 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
104 ;; STATE-QUERYING FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
105 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
106 ;; * registered (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
107 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
108 ;; Return non-nil if FILE is registered in this backend.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
109 ;;
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
110 ;; * state (file)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
111 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
112 ;; 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
113 ;; 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
114 ;; reliable state computation; it is usually called immediately after
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
115 ;; C-x v v. If you want to use a faster heuristic when visiting a
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
116 ;; file, put that into `state-heuristic' below.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
117 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
118 ;; - state-heuristic (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
119 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
120 ;; 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
121 ;; 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
122 ;; 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
123 ;; see the doc string of `vc-state'.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
124 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
125 ;; - dir-state (dir)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
126 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
127 ;; If provided, this function is used to find the version control state
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
128 ;; of all files in DIR in a fast way. The function should not return
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
129 ;; anything, but rather store the files' states into the corresponding
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
130 ;; `vc-state' properties.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
131 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
132 ;; * workfile-version (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
133 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
134 ;; Return the current workfile version of FILE.
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 ;; - latest-on-branch-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
137 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
138 ;; Return non-nil if the current workfile version of FILE is the latest
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
139 ;; on its branch. The default implementation always returns t, which
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
140 ;; means that working with non-current versions is not supported by
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
141 ;; default.
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 ;; * checkout-model (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 ;; Indicate whether FILE needs to be "checked out" before it can be
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
146 ;; 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
147 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
148 ;; - workfile-unchanged-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
149 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
150 ;; Return non-nil if FILE is unchanged from its current workfile
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
151 ;; version. This function should do a brief comparison of FILE's
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
152 ;; contents with those of the master version. If the backend does not
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
153 ;; have such a brief-comparison feature, the default implementation of
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
154 ;; this function can be used, which delegates to a full
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
155 ;; vc-BACKEND-diff. (Note that vc-BACKEND-diff must not run
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
156 ;; asynchronously in this case, see variable `vc-disable-async-diff'.)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
157 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
158 ;; - mode-line-string (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
159 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
160 ;; If provided, this function should return the VC-specific mode line
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
161 ;; string for FILE. The default implementation deals well with all
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
162 ;; states that `vc-state' can return.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
163 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
164 ;; - dired-state-info (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
165 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
166 ;; Translate the `vc-state' property of FILE into a string that can be
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
167 ;; used in a vc-dired buffer. The default implementation deals well
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
168 ;; with all states that `vc-state' can return.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
169 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
170 ;; STATE-CHANGING FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
171 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
172 ;; * register (file &optional rev comment)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
173 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
174 ;; Register FILE in this backend. Optionally, an initial revision REV
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
175 ;; and an initial description of the file, COMMENT, may be specified.
40440
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
176 ;; The implementation should pass the value of vc-register-switches
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
177 ;; to the backend command.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
178 ;;
43450
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
179 ;; - init-version (file)
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
180 ;;
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
181 ;; The initial version to use when registering FILE if one is not
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
182 ;; specified by the user. If not provided, the variable
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
183 ;; vc-default-init-version is used instead.
2b50b9c69fde Patch by Jonathan Kamens <jik@kamens.brookline.ma.us>.
André Spiegel <spiegel@gnu.org>
parents: 42548
diff changeset
184 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
185 ;; - responsible-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
186 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
187 ;; 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
188 ;; 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
189 ;; 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
190 ;; like change log generation. The default implementation always
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
191 ;; returns nil.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
192 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
193 ;; - could-register (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
194 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
195 ;; 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
196 ;; default implementation always returns t.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
197 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
198 ;; - receive-file (file rev)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
199 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
200 ;; 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
201 ;; another backend. The default implementation simply calls `register'
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
202 ;; 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
203 ;; 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
204 ;; FILE that resemble those of the other backend.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
205 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
206 ;; - unregister (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
207 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
208 ;; 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
209 ;; 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
210 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
211 ;; * checkin (file rev comment)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
212 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
213 ;; Commit changes in FILE to this backend. If REV is non-nil, that
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
214 ;; should become the new revision number. COMMENT is used as a
40440
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
215 ;; check-in comment. The implementation should pass the value of
6edf1e051b27 Mention vc-*-switches in backend API documentation.
André Spiegel <spiegel@gnu.org>
parents: 40181
diff changeset
216 ;; vc-checkin-switches to the backend command.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
217 ;;
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
218 ;; * find-version (file rev buffer)
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
219 ;;
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
220 ;; 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
221 ;; 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
222 ;; 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
223 ;; 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
224 ;;
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
225 ;; * checkout (file &optional editable rev)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
226 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
227 ;; 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
228 ;; 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
229 ;; used for FILE, a lock should also be set. If REV is non-nil, that
48964
7bba5b5ff0d2 (vc-next-action-on-file): Use t argument to vc-checkout in
André Spiegel <spiegel@gnu.org>
parents: 48142
diff changeset
230 ;; is the revision to check out (default is current workfile version).
7bba5b5ff0d2 (vc-next-action-on-file): Use t argument to vc-checkout in
André Spiegel <spiegel@gnu.org>
parents: 48142
diff changeset
231 ;; 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
232 ;; 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
233 ;; 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
234 ;; to the backend command.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
235 ;;
39000
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
236 ;; * revert (file &optional contents-done)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
237 ;;
39000
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
238 ;; Revert FILE back to the current workfile version. If optional
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
239 ;; 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
240 ;; 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
241 ;; 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
242 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
243 ;; - cancel-version (file editable)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
244 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
245 ;; Cancel the current workfile version of FILE, i.e. remove it from the
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
246 ;; master. EDITABLE non-nil means that FILE should be writable
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
247 ;; afterwards, and if locking is used for FILE, then a lock should also
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
248 ;; be set. If this function is not provided, trying to cancel a
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
249 ;; version is caught as an error.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
250 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
251 ;; - merge (file rev1 rev2)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
252 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
253 ;; 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
254 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
255 ;; - merge-news (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
256 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
257 ;; Merge recent changes from the current branch into FILE.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
258 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
259 ;; - steal-lock (file &optional version)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
260 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
261 ;; Steal any lock on the current workfile version of FILE, or on
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
262 ;; VERSION if that is provided. This function is only needed if
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
263 ;; locking is used for files under this backend, and if files can
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
264 ;; indeed be locked by other users.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
265 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
266 ;; HISTORY FUNCTIONS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
267 ;;
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
268 ;; * print-log (file &optional buffer)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
269 ;;
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
270 ;; Insert the revision log of FILE into BUFFER, or the *vc* buffer
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
271 ;; if BUFFER is nil.
35199
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 ;; - show-log-entry (version)
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 ;; If provided, search the log entry for VERSION in the current buffer,
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
276 ;; 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
277 ;; implementation of this function works for RCS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
278 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
279 ;; - wash-log (file)
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 ;; Remove all non-comment information from the output of print-log. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
282 ;; default implementation of this function works for RCS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
283 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
284 ;; - logentry-check ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
285 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
286 ;; If defined, this function is run to find out whether the user
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
287 ;; entered a valid log entry for check-in. The log entry is in the
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
288 ;; current buffer, and if it is not a valid one, the function should
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
289 ;; throw an error.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
290 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
291 ;; - comment-history (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
292 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
293 ;; 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
294 ;; This is used for transferring a file from one backend to another,
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
295 ;; retaining comment information. The default implementation of this
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
296 ;; function does this by calling print-log and then wash-log, and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
297 ;; returning the resulting buffer contents as a string.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
298 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
299 ;; - update-changelog (files)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
300 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
301 ;; 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
302 ;; 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
303 ;; default implementation runs rcs2log, which handles RCS- and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
304 ;; CVS-style logs.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
305 ;;
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
306 ;; * diff (file &optional rev1 rev2 buffer)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
307 ;;
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
308 ;; 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
309 ;; BUFFER is nil. If REV1 and REV2 are non-nil, report differences
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
310 ;; from REV1 to REV2. If REV1 is nil, use the current workfile
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
311 ;; version (as found in the repository) as the older version; if
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
312 ;; REV2 is nil, use the current workfile contents as the newer
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
313 ;; version. This function should pass the value of (vc-switches
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
314 ;; BACKEND 'diff) to the backend command. It should return a status
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
315 ;; of either 0 (no differences found), or 1 (either non-empty diff
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
316 ;; or the diff is run asynchronously).
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
317 ;;
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
318 ;; - diff-tree (dir &optional rev1 rev2)
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
319 ;;
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
320 ;; Insert the diff for all files at and below DIR into the *vc-diff*
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
321 ;; buffer. The meaning of REV1 and REV2 is the same as for
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
322 ;; vc-BACKEND-diff. The default implementation does an explicit tree
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
323 ;; walk, calling vc-BACKEND-diff for each individual file.
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
324 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
325 ;; - annotate-command (file buf &optional rev)
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
326 ;;
58321
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
327 ;; If this function is provided, it should produce an annotated display
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
328 ;; of FILE in BUF, relative to version REV. Annotation means each line
f398ebfc07e2 Update annotation-related comments.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57906
diff changeset
329 ;; 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
330 ;; 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
331 ;; file is fontified according to age.
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
332 ;;
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
333 ;; - annotate-time ()
35199
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 ;; 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
336 ;; 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
337 ;; 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
338 ;; 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
339 ;; 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
340 ;; 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
341 ;; 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
342 ;; 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
343 ;; 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
344 ;; 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
345 ;; 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
346 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
347 ;; - annotate-current-time ()
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
348 ;;
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
349 ;; 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
350 ;; AND you'd like the current time considered to be anything besides
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
351 ;; (vs-annotate-convert-time (current-time)) -- i.e. the current
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
352 ;; 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
353 ;; 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
354 ;;
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
355 ;; - annotate-extract-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
356 ;;
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
357 ;; 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
358 ;; 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
359 ;; 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
360 ;; corresponding to the current line.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
361 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
362 ;; SNAPSHOT SYSTEM
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
363 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
364 ;; - create-snapshot (dir name branchp)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
365 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
366 ;; Take a snapshot of the current state of files under DIR and name it
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
367 ;; NAME. This should make sure that files are up-to-date before
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
368 ;; proceeding with the action. DIR can also be a file and if BRANCHP
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
369 ;; is specified, NAME should be created as a branch and DIR should be
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
370 ;; checked out under this new branch. The default implementation does
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
371 ;; not support branches but does a sanity check, a tree traversal and
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
372 ;; for each file calls `assign-name'.
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 ;; - assign-name (file name)
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 ;; Give name NAME to the current version of FILE, assuming it is
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
377 ;; up-to-date. Only used by the default version of `create-snapshot'.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
378 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
379 ;; - retrieve-snapshot (dir name update)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
380 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
381 ;; Retrieve a named snapshot of all registered files at or below DIR.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
382 ;; If UPDATE is non-nil, then update buffers of any files in the
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
383 ;; snapshot that are currently visited. The default implementation
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
384 ;; 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
385 ;; or below DIR, and then performs a tree walk, using the `checkout'
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
386 ;; function to retrieve the corresponding versions.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
387 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
388 ;; MISCELLANEOUS
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
389 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
390 ;; - make-version-backups-p (file)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
391 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
392 ;; Return non-nil if unmodified repository versions of FILE should be
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
393 ;; 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
394 ;; `revert' operations itself, without calling the backend system. The
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
395 ;; default implementation always returns nil.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
396 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
397 ;; - repository-hostname (dirname)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
398 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
399 ;; 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
400 ;; 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
401 ;; 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
402 ;; 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
403 ;; for their convenience.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
404 ;;
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
405 ;; - previous-version (file rev)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
406 ;;
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
407 ;; Return the version number that precedes REV for FILE, or nil if no such
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
408 ;; version exists.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
409 ;;
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
410 ;; - next-version (file rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
411 ;;
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
412 ;; Return the version number that follows REV for FILE, or nil if no such
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
413 ;; version exists.
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
414 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
415 ;; - check-headers ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
416 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
417 ;; 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
418 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
419 ;; - clear-headers ()
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
420 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
421 ;; 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
422 ;; 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
423 ;; 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
424 ;; 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
425 ;; 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
426 ;; wrong information.
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
427 ;;
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
428 ;; - delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
429 ;;
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
430 ;; 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
431 ;; 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
432 ;; signal an error.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
433 ;;
35199
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
434 ;; - rename-file (old new)
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
435 ;;
aa38d1de35cb Added documentation for backend interface.
André Spiegel <spiegel@gnu.org>
parents: 35131
diff changeset
436 ;; 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
437 ;; 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
438 ;; 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
439 ;;
54398
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
440 ;; - find-file-hook ()
2decd50569f3 Document new find-file-hook operation.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 53874
diff changeset
441 ;;
54530
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
442 ;; 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
443 ;; be used by the backend to setup some local variables it might need.
54530
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
444 ;
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
445 ;; - 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
446 ;;
b217df9a35e0 Document new backend operation `find-file-not-found-hook'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54463
diff changeset
447 ;; 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
448 ;; By default, this asks the user if she wants to check out the file.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
449
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
450 ;;; Code:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
451
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
452 (require 'vc-hooks)
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
453 (require 'ring)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
454 (eval-when-compile
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
455 (require 'cl)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
456 (require 'compile)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
457 (require 'dired) ; for dired-map-over-marks macro
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
458 (require 'dired-aux)) ; for dired-kill-{line,tree}
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
459
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
460 (if (not (assoc 'vc-parent-buffer minor-mode-alist))
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
461 (setq minor-mode-alist
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
462 (cons '(vc-parent-buffer vc-parent-buffer-name)
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
463 minor-mode-alist)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
464
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
465 ;; General customization
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
466
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
467 (defgroup vc nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
468 "Version-control system in Emacs."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
469 :group 'tools)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
470
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
471 (defcustom vc-suppress-confirm nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
472 "If non-nil, treat user as expert; suppress yes-no prompts on some things."
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
473 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
474 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
475
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
476 (defcustom vc-delete-logbuf-window t
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
477 "If non-nil, delete the *VC-log* buffer and window after each logical action.
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
478 If nil, bury that buffer instead.
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
479 This is most useful if you have multiple windows on a frame and would like to
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
480 preserve the setting."
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
481 :type 'boolean
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
482 :group 'vc)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
483
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
484 (defcustom vc-initial-comment nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
485 "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
486 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
487 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
488
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
489 (defcustom vc-default-init-version "1.1"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
490 "A string used as the default version 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
491 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
492 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
493 :type 'string
21669
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
494 :group 'vc
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
495 :version "20.3")
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
496
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
497 (defcustom vc-command-messages nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
498 "If non-nil, display run messages from back-end commands."
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
499 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
500 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
501
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
502 (defcustom vc-checkin-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
503 "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
504 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
505 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
506 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
507 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
508 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
509 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
510 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
511
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
512 (defcustom vc-checkout-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
513 "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
514 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
515 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
516 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
517 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
518 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
519 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
520 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
521
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
522 (defcustom vc-register-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
523 "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
524 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
525 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
526 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
527 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
528 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
529 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
530 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
531
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
532 (defcustom vc-dired-listing-switches "-al"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
533 "Switches passed to `ls' for vc-dired. MUST contain the `l' option."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
534 :type 'string
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
535 :group 'vc
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
536 :version "21.1")
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
537
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
538 (defcustom vc-dired-recurse t
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
539 "If non-nil, show directory trees recursively in VC Dired."
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
540 :type 'boolean
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
541 :group 'vc
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
542 :version "20.3")
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
543
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
544 (defcustom vc-dired-terse-display t
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
545 "If non-nil, show only locked files in VC Dired."
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
546 :type 'boolean
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
547 :group 'vc
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
548 :version "20.3")
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
549
66569
66784ee73f14 (vc-directory-exclusion-list): Add "{arch}".
Masatake YAMATO <jet@gyve.org>
parents: 66549
diff changeset
550 (defcustom vc-directory-exclusion-list '("SCCS" "RCS" "CVS" "MCVS" ".svn" "{arch}")
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
551 "List of directory names to be ignored when walking directory trees."
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
552 :type '(repeat string)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
553 :group 'vc)
1335
d649d430148d (vc-checkin-switches): New defvar.
Roland McGrath <roland@gnu.org>
parents: 1243
diff changeset
554
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
555 (defcustom vc-diff-switches nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
556 "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
557 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
558 `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
559 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
560 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
561 specific to any particular backend."
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
562 :type '(choice (const :tag "None" nil)
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
563 (string :tag "Argument String")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
564 (repeat :tag "Argument List"
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
565 :value ("")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
566 string))
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
567 :group 'vc
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
568 :version "21.1")
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
569
71446
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
570 (defcustom vc-diff-knows-L nil
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
571 "*Indicates whether diff understands the -L option.
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
572 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
573 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
574 :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
575 :group 'vc)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
576
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
577 (defcustom vc-allow-async-revert nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
578 "Specifies whether the diff during \\[vc-revert-buffer] may be asynchronous.
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
579 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
580 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
581 :type '(choice (const :tag "No" nil)
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
582 (const :tag "Yes" t))
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
583 :group 'vc
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59442
diff changeset
584 :version "22.1")
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
585
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
586 ;;;###autoload
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
587 (defcustom vc-checkout-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
588 "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
589 See `run-hooks'."
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
590 :type 'hook
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
591 :group 'vc
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
592 :version "21.1")
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
593
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
594 (defcustom vc-annotate-display-mode 'fullscale
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
595 "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
596 :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
597 (const :tag "Scale to Oldest" scale)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
598 (const :tag "Scale Oldest->Newest" fullscale)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
599 (number :tag "Specify Fractional Number of Days"
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
600 :value "20.5"))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
601 :group 'vc)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
602
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
603 ;;;###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
604 (defcustom vc-checkin-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
605 "Normal hook (list of functions) run after a checkin is done.
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
606 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
607 :type 'hook
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
608 :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
609 :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
610
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
611 ;;;###autoload
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
612 (defcustom vc-before-checkin-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
613 "Normal hook (list of functions) run before a file is checked in.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
614 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
615 :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
616 :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
617
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
618 (defcustom vc-logentry-check-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
619 "Normal hook run by `vc-backend-logentry-check'.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
620 Use this to impose your own rules on the entry in addition to any the
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
621 version control backend imposes itself."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
622 :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
623 :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
624
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
625 ;; Annotate customization
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
626 (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
627 (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
628 ;; A custom sorted TTY colormap
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
629 (let* ((colors
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
630 (sort
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
631 (delq nil
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
632 (mapcar (lambda (x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
633 (if (not (or
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
634 (string-equal (car x) "white")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
635 (string-equal (car x) "black") ))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
636 (car x)))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
637 (tty-color-alist)))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
638 (lambda (a b)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
639 (cond
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
640 ((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
641 ((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
642 ((string-equal a "yellow") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
643 ((string-equal b "yellow") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
644 ((string-equal a "cyan") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
645 ((string-equal b "cyan") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
646 ((string-equal a "green") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
647 ((string-equal b "green") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
648 ((string-equal a "magenta") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
649 ((string-equal b "magenta") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
650 (t (string< a b))))))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
651 (date 20.)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
652 (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
653 (mapcar (lambda (x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
654 (prog1
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
655 (cons date x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
656 (setq date (+ date delta)))) colors))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
657 ;; 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
658 '(( 20. . "#FF3F3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
659 ( 40. . "#FF6C3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
660 ( 60. . "#FF993F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
661 ( 80. . "#FFC63F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
662 (100. . "#FFF33F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
663 (120. . "#DDFF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
664 (140. . "#B0FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
665 (160. . "#83FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
666 (180. . "#56FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
667 (200. . "#3FFF56")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
668 (220. . "#3FFF83")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
669 (240. . "#3FFFB0")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
670 (260. . "#3FFFDD")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
671 (280. . "#3FF3FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
672 (300. . "#3FC6FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
673 (320. . "#3F99FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
674 (340. . "#3F6CFF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
675 (360. . "#3F3FFF")))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
676 "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
677 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
678 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
679 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
680 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
681 :type 'alist
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
682 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
683
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
684 (defcustom vc-annotate-very-old-color "#3F3FFF"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
685 "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
686 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
687 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
688
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
689 (defcustom vc-annotate-background "black"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
690 "Background color for \\[vc-annotate].
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
691 Default color is used if nil."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
692 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
693 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
694
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
695 (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
696 "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
697 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
698 :type '(repeat number)
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
699 :group 'vc)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
700
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
701 (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
702 (let ((m (make-sparse-keymap)))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
703 (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
704 (define-key m "D" 'vc-annotate-show-diff-revision-at-line)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
705 (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
706 (define-key m "L" 'vc-annotate-show-log-revision-at-line)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
707 (define-key m "N" 'vc-annotate-next-version)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
708 (define-key m "P" 'vc-annotate-prev-version)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
709 (define-key m "W" 'vc-annotate-workfile-version)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
710 m)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
711 "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
712
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
713 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
714
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
715 (defcustom vc-static-header-alist
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
716 '(("\\.c\\'" .
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
717 "\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
718 "*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
719 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
720 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
721 :type '(repeat (cons :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
722 (regexp :tag "File Type")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
723 (string :tag "Header String")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
724 :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
725
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
726 (defcustom vc-comment-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
727 '((nroff-mode ".\\\"" ""))
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
728 "*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
729 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
730 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
731 is sensitive to blank lines."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
732 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
733 (symbol :tag "Mode")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
734 (string :tag "Comment Start")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
735 (string :tag "Comment End")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
736 :group 'vc)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
737
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
738 (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
739 "*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
740 Verify that the file really is not locked
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
741 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
742 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
743 :group 'vc)
49619
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
744 (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
745 "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
746 "21.1")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
747
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
748
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
749 ;; Variables the user doesn't need to know about.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
750 (defvar vc-log-operation nil)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
751 (defvar vc-log-after-operation-hook nil)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
752
8350
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
753 ;; In a log entry buffer, this is a local variable
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
754 ;; that points to the buffer for which it was made
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
755 ;; (either a file, or a VC dired buffer).
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
756 (defvar vc-parent-buffer 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
757 (put 'vc-parent-buffer 'permanent-local t)
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
758 (defvar vc-parent-buffer-name 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
759 (put 'vc-parent-buffer-name 'permanent-local t)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
760
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
761 (defvar vc-disable-async-diff nil
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
762 "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
763 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
764 in their implementation of vc-BACKEND-diff.")
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
765
1494
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
766 (defvar vc-log-file)
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
767 (defvar vc-log-version)
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
768
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
769 (defvar vc-dired-mode nil)
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
770 (make-variable-buffer-local 'vc-dired-mode)
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
771
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
772 ;; functions that operate on RCS revision numbers. This code should
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
773 ;; also be moved into the backends. It stays for now, however, since
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
774 ;; it is used in code below.
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
775 ;;;###autoload
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
776 (defun vc-trunk-p (rev)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
777 "Return t if REV is a revision on the trunk."
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
778 (not (eq nil (string-match "\\`[0-9]+\\.[0-9]+\\'" rev))))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
779
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
780 (defun vc-branch-p (rev)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
781 "Return t if REV is a branch revision."
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
782 (not (eq nil (string-match "\\`[0-9]+\\(\\.[0-9]+\\.[0-9]+\\)*\\'" rev))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
783
43744
5c8c45f534eb (vc-branch-part): Add autoload cookie. This function can
Gerd Moellmann <gerd@gnu.org>
parents: 43725
diff changeset
784 ;;;###autoload
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
785 (defun vc-branch-part (rev)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
786 "Return the branch part of a revision number REV."
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
787 (let ((index (string-match "\\.[0-9]+\\'" rev)))
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
788 (if index
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
789 (substring rev 0 index))))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
790
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
791 (defun vc-minor-part (rev)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
792 "Return the minor version number of a revision number REV."
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
793 (string-match "[0-9]+\\'" rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
794 (substring rev (match-beginning 0) (match-end 0)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
795
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
796 (defun vc-default-previous-version (backend file rev)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
797 "Return the version number immediately preceding REV for FILE,
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
798 or nil if there is no previous version. This default
67578
f8a3e13c32d7 (vc-default-previous-version, vc-default-next-version)
Richard M. Stallman <rms@gnu.org>
parents: 67574
diff changeset
799 implementation works for MAJOR.MINOR-style version numbers as
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
800 used by RCS and CVS."
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
801 (let ((branch (vc-branch-part rev))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
802 (minor-num (string-to-number (vc-minor-part rev))))
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
803 (when branch
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
804 (if (> minor-num 1)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
805 ;; version does probably not start a branch or release
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
806 (concat branch "." (number-to-string (1- minor-num)))
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
807 (if (vc-trunk-p rev)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
808 ;; we are at the beginning of the trunk --
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
809 ;; don't know anything to return here
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
810 nil
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
811 ;; we are at the beginning of a branch --
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
812 ;; return version of starting point
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
813 (vc-branch-part branch))))))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
814
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
815 (defun vc-default-next-version (backend file rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
816 "Return the version number immediately following REV for FILE,
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
817 or nil if there is no next version. This default implementation
67578
f8a3e13c32d7 (vc-default-previous-version, vc-default-next-version)
Richard M. Stallman <rms@gnu.org>
parents: 67574
diff changeset
818 works for MAJOR.MINOR-style version numbers as used by RCS
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
819 and CVS."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
820 (when (not (string= rev (vc-workfile-version file)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
821 (let ((branch (vc-branch-part rev))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
822 (minor-num (string-to-number (vc-minor-part rev))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
823 (concat branch "." (number-to-string (1+ minor-num))))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
824
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
825 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
826
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
827 (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
828 "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
829 (interactive)
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
830 (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
831
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
832 (defmacro with-vc-properties (file form settings)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
833 "Execute FORM, then maybe set per-file properties for FILE.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
834 SETTINGS is an association list of property/value pairs. After
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
835 executing FORM, set those properties from SETTINGS that have not yet
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
836 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
837 (declare (debug t))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
838 `(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
839 ,form
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
840 (mapcar (lambda (setting)
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
841 (let ((property (car setting)))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
842 (unless (memq property vc-touched-properties)
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
843 (put (intern ,file vc-file-prop-obarray)
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
844 property (cdr setting)))))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
845 ,settings)))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
846
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
847 ;; Random helper functions
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
848
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
849 (defsubst vc-editable-p (file)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
850 "Return non-nil if FILE can be edited."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
851 (or (eq (vc-checkout-model file) 'implicit)
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
852 (memq (vc-state file) '(edited needs-merge))))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
853
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
854 ;; Two macros for elisp programming
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
855 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
856 (defmacro with-vc-file (file comment &rest body)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
857 "Check out a writable copy of FILE if necessary, then execute BODY.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
858 Check in FILE with COMMENT (a string) after BODY has been executed.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
859 FILE is passed through `expand-file-name'; BODY executed within
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
860 `save-excursion'. If FILE is not under version control, or locked by
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
861 somebody else, signal error."
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
862 (declare (debug t) (indent 2))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
863 (let ((filevar (make-symbol "file")))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
864 `(let ((,filevar (expand-file-name ,file)))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
865 (or (vc-backend ,filevar)
53874
978c77351d66 (with-vc-file): Fix unsafe uses of error.
Andreas Schwab <schwab@suse.de>
parents: 53839
diff changeset
866 (error "File not under version control: `%s'" file))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
867 (unless (vc-editable-p ,filevar)
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
868 (let ((state (vc-state ,filevar)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
869 (if (stringp state)
53874
978c77351d66 (with-vc-file): Fix unsafe uses of error.
Andreas Schwab <schwab@suse.de>
parents: 53839
diff changeset
870 (error "`%s' is locking `%s'" state ,filevar)
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
871 (vc-checkout ,filevar t))))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
872 (save-excursion
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
873 ,@body)
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
874 (vc-checkin ,filevar nil ,comment))))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
875
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
876 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
877 (defmacro edit-vc-file (file comment &rest body)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
878 "Edit FILE under version control, executing body.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
879 Checkin with COMMENT after executing BODY.
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
880 This macro uses `with-vc-file', passing args to it.
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
881 However, before executing BODY, find FILE, and after BODY, save buffer."
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
882 (declare (debug t) (indent 2))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
883 (let ((filevar (make-symbol "file")))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
884 `(let ((,filevar (expand-file-name ,file)))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
885 (with-vc-file
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
886 ,filevar ,comment
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
887 (set-buffer (find-file-noselect ,filevar))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
888 ,@body
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
889 (save-buffer)))))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
890
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
891 (defun vc-ensure-vc-buffer ()
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
892 "Make sure that the current buffer visits a version-controlled file."
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
893 (if vc-dired-mode
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
894 (set-buffer (find-file-noselect (dired-get-filename)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
895 (while vc-parent-buffer
69943
7d69833e0c1a (vc-ensure-vc-buffer): Only change current-buffer, not the window config.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 69939
diff changeset
896 (set-buffer vc-parent-buffer))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
897 (if (not buffer-file-name)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
898 (error "Buffer %s is not associated with a file" (buffer-name))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
899 (if (not (vc-backend buffer-file-name))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
900 (error "File %s is not under version control" buffer-file-name)))))
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
901
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
902 (defun vc-process-filter (p s)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
903 "An alternative output filter for async process P.
71228
4d648a3d282d (vc-process-filter): Inhibit undo
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70007
diff changeset
904 One difference with the default filter is that this inserts S after markers.
4d648a3d282d (vc-process-filter): Inhibit undo
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70007
diff changeset
905 Another is that undo information is not kept."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
906 (with-current-buffer (process-buffer p)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
907 (save-excursion
71228
4d648a3d282d (vc-process-filter): Inhibit undo
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70007
diff changeset
908 (let ((buffer-undo-list t)
4d648a3d282d (vc-process-filter): Inhibit undo
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70007
diff changeset
909 (inhibit-read-only 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
910 (goto-char (process-mark p))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
911 (insert s)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
912 (set-marker (process-mark p) (point))))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
913
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
914 (defun vc-setup-buffer (&optional buf)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
915 "Prepare BUF for executing a VC command and make it current.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
916 BUF defaults to \"*vc*\", can be a string and will be created if necessary."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
917 (unless buf (setq buf "*vc*"))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
918 (let ((camefrom (current-buffer))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
919 (olddir 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
920 (set-buffer (get-buffer-create buf))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
921 (kill-all-local-variables)
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
922 (set (make-local-variable 'vc-parent-buffer) camefrom)
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 (set (make-local-variable 'vc-parent-buffer-name)
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
924 (concat " from " (buffer-name camefrom)))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
925 (setq default-directory olddir)
71228
4d648a3d282d (vc-process-filter): Inhibit undo
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70007
diff changeset
926 (let ((buffer-undo-list t)
4d648a3d282d (vc-process-filter): Inhibit undo
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70007
diff changeset
927 (inhibit-read-only 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
928 (erase-buffer))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
929
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
930 (defun vc-exec-after (code)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
931 "Eval CODE when the current buffer's process is done.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
932 If the current buffer has no process, just evaluate CODE.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
933 Else, add CODE to the process' sentinel."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
934 (let ((proc (get-buffer-process (current-buffer))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
935 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
936 ;; If there's no background process, just execute the code.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
937 ((null proc) (eval code))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
938 ;; If the background process has exited, reap it and try again
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
939 ((eq (process-status proc) 'exit)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
940 (delete-process proc)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
941 (vc-exec-after code))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
942 ;; If a process is running, add CODE to the sentinel
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
943 ((eq (process-status proc) 'run)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
944 (let ((sentinel (process-sentinel proc)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
945 (set-process-sentinel proc
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
946 `(lambda (p s)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
947 (with-current-buffer ',(current-buffer)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
948 (goto-char (process-mark p))
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
949 ,@(append (cdr (cdr (cdr ;strip off `with-current-buffer buf
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
950 ; (goto-char...)'
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
951 (car (cdr (cdr ;strip off `lambda (p s)'
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
952 sentinel))))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
953 (list `(vc-exec-after ',code))))))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
954 (t (error "Unexpected process state"))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
955 nil)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
956
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
957 (defvar vc-post-command-functions nil
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
958 "Hook run at the end of `vc-do-command'.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
959 Each function is called inside the buffer in which the command was run
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
960 and is passed 3 arguments: the COMMAND, the FILE and the FLAGS.")
1674
75e8a7f920c7 * vc.el (vc-do-command): Set the default directory of the *vc*
Jim Blandy <jimb@redhat.com>
parents: 1636
diff changeset
961
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
962 (defvar w32-quote-process-args)
38442
086300440396 (vc-do-command): Autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38374
diff changeset
963 ;;;###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
964 (defun vc-do-command (buffer okstatus command file &rest flags)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
965 "Execute a VC command, notifying user and checking for errors.
36710
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
966 Output from COMMAND goes to BUFFER, or *vc* if BUFFER is nil or the
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
967 current buffer if BUFFER is t. If the destination buffer is not
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
968 already current, set it up properly and erase it. The command is
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
969 considered successful if its exit status does not exceed OKSTATUS (if
67578
f8a3e13c32d7 (vc-default-previous-version, vc-default-next-version)
Richard M. Stallman <rms@gnu.org>
parents: 67574
diff changeset
970 OKSTATUS is nil, that means to ignore error status, if it is `async', that
67552
91dadacfc1d5 (vc-do-command): Add a new value t for okstatus.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66569
diff changeset
971 means not to wait for termination of the subprocess; if it is t it means to
91dadacfc1d5 (vc-do-command): Add a new value t for okstatus.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66569
diff changeset
972 ignore all execution errors). FILE is the
36710
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
973 name of the working file (may also be nil, to execute commands that
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
974 don't expect a file name). If an optional list of FLAGS is present,
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
975 that is inserted into the command line before the filename."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
976 (and file (setq file (expand-file-name file)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
977 (if vc-command-messages
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
978 (message "Running %s on %s..." command file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
979 (save-current-buffer
36710
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
980 (unless (or (eq buffer t)
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
981 (and (stringp buffer)
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
982 (string= (buffer-name) buffer))
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
983 (eq buffer (current-buffer)))
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
984 (vc-setup-buffer buffer))
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
985 (let ((squeezed (remq nil flags))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
986 (inhibit-read-only t)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
987 (status 0))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
988 (when file
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
989 ;; FIXME: file-relative-name can return a bogus result because
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
990 ;; it doesn't look at the actual file-system to see if symlinks
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
991 ;; come into play.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
992 (setq squeezed (append squeezed (list (file-relative-name file)))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
993 (let ((exec-path (append vc-path exec-path))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
994 ;; Add vc-path to PATH for the execution of this command.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
995 (process-environment
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
996 (cons (concat "PATH=" (getenv "PATH")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
997 path-separator
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
998 (mapconcat 'identity vc-path path-separator))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
999 process-environment))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1000 (w32-quote-process-args t))
60289
68f16372ee5a (vc-do-command): Don't run command asynchronously when
Andreas Schwab <schwab@suse.de>
parents: 59996
diff changeset
1001 (if (and (eq okstatus 'async) (file-remote-p default-directory))
68f16372ee5a (vc-do-command): Don't run command asynchronously when
Andreas Schwab <schwab@suse.de>
parents: 59996
diff changeset
1002 ;; start-process does not support remote execution
68f16372ee5a (vc-do-command): Don't run command asynchronously when
Andreas Schwab <schwab@suse.de>
parents: 59996
diff changeset
1003 (setq okstatus 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
1004 (if (eq okstatus 'async)
61093
27c2765e06c8 (vc-do-command): Use a pipe for async processes, so password
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60289
diff changeset
1005 (let ((proc
27c2765e06c8 (vc-do-command): Use a pipe for async processes, so password
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60289
diff changeset
1006 (let ((process-connection-type nil))
27c2765e06c8 (vc-do-command): Use a pipe for async processes, so password
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60289
diff changeset
1007 (apply 'start-process command (current-buffer) command
27c2765e06c8 (vc-do-command): Use a pipe for async processes, so password
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60289
diff changeset
1008 squeezed))))
33553
840460ecad6f (vc-do-command): In the asynchronous case, output messages only if the
André Spiegel <spiegel@gnu.org>
parents: 33548
diff changeset
1009 (unless (active-minibuffer-window)
840460ecad6f (vc-do-command): In the asynchronous case, output messages only if the
André Spiegel <spiegel@gnu.org>
parents: 33548
diff changeset
1010 (message "Running %s in the background..." command))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1011 ;;(set-process-sentinel proc (lambda (p msg) (delete-process p)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1012 (set-process-filter proc 'vc-process-filter)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1013 (vc-exec-after
33553
840460ecad6f (vc-do-command): In the asynchronous case, output messages only if the
André Spiegel <spiegel@gnu.org>
parents: 33548
diff changeset
1014 `(unless (active-minibuffer-window)
840460ecad6f (vc-do-command): In the asynchronous case, output messages only if the
André Spiegel <spiegel@gnu.org>
parents: 33548
diff changeset
1015 (message "Running %s in the background... done" ',command))))
71228
4d648a3d282d (vc-process-filter): Inhibit undo
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70007
diff changeset
1016 (let ((buffer-undo-list t))
4d648a3d282d (vc-process-filter): Inhibit undo
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70007
diff changeset
1017 (setq status (apply 'process-file command nil t nil squeezed)))
67552
91dadacfc1d5 (vc-do-command): Add a new value t for okstatus.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66569
diff changeset
1018 (when (and (not (eq t okstatus))
91dadacfc1d5 (vc-do-command): Add a new value t for okstatus.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66569
diff changeset
1019 (or (not (integerp status))
91dadacfc1d5 (vc-do-command): Add a new value t for okstatus.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 66569
diff changeset
1020 (and okstatus (< okstatus 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
1021 (pop-to-buffer (current-buffer))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1022 (goto-char (point-min))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1023 (shrink-window-if-larger-than-buffer)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1024 (error "Running %s...FAILED (%s)" command
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1025 (if (integerp status) (format "status %d" status) status))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1026 (if vc-command-messages
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1027 (message "Running %s...OK" command)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1028 (vc-exec-after
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1029 `(run-hook-with-args 'vc-post-command-functions ',command ',file ',flags))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1030 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1031
1635
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1032 (defun vc-position-context (posn)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1033 "Save a bit of the text around POSN in the current buffer.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1034 Used to help us find the corresponding position again later
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1035 if markers are destroyed or corrupted."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1036 ;; A lot of this was shamelessly lifted from Sebastian Kremer's
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1037 ;; rcs.el mode.
1635
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1038 (list posn
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1039 (buffer-size)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1040 (buffer-substring posn
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1041 (min (point-max) (+ posn 100)))))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1042
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1043 (defun vc-find-position-by-context (context)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1044 "Return the position of CONTEXT in the current buffer.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1045 If CONTEXT cannot be found, return nil."
1635
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1046 (let ((context-string (nth 2 context)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1047 (if (equal "" context-string)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1048 (point-max)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1049 (save-excursion
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1050 (let ((diff (- (nth 1 context) (buffer-size))))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1051 (if (< diff 0) (setq diff (- diff)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1052 (goto-char (nth 0 context))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1053 (if (or (search-forward context-string nil t)
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1054 ;; Can't use search-backward since the match may continue
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1055 ;; after point.
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1056 (progn (goto-char (- (point) diff (length context-string)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1057 ;; goto-char doesn't signal an error at
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1058 ;; beginning of buffer like backward-char would
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1059 (search-forward context-string nil t)))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1060 ;; to beginning of OSTRING
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1061 (- (point) (length context-string))))))))
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1062
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1063 (defun vc-context-matches-p (posn context)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1064 "Return t if POSN matches CONTEXT, nil otherwise."
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1065 (let* ((context-string (nth 2 context))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1066 (len (length context-string))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1067 (end (+ posn len)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1068 (if (> end (1+ (buffer-size)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1069 nil
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1070 (string= context-string (buffer-substring posn end)))))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1071
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1072 (defun vc-buffer-context ()
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1073 "Return a list (POINT-CONTEXT MARK-CONTEXT REPARSE).
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1074 Used by `vc-restore-buffer-context' to later restore the context."
1635
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1075 (let ((point-context (vc-position-context (point)))
2041
ccb75415543a (vc-revert-buffer1): Use mark-marker; don't alter mark-active.
Richard M. Stallman <rms@gnu.org>
parents: 1905
diff changeset
1076 ;; Use mark-marker to avoid confusion in transient-mark-mode.
ccb75415543a (vc-revert-buffer1): Use mark-marker; don't alter mark-active.
Richard M. Stallman <rms@gnu.org>
parents: 1905
diff changeset
1077 (mark-context (if (eq (marker-buffer (mark-marker)) (current-buffer))
ccb75415543a (vc-revert-buffer1): Use mark-marker; don't alter mark-active.
Richard M. Stallman <rms@gnu.org>
parents: 1905
diff changeset
1078 (vc-position-context (mark-marker))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
1079 ;; Make the right thing happen in transient-mark-mode.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
1080 (mark-active nil)
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1081 ;; The new compilation code does not use compilation-error-list any
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1082 ;; more, so the code below is now ineffective and might as well
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1083 ;; be disabled. -- Stef
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1084 ;; ;; We may want to reparse the compilation buffer after revert
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1085 ;; (reparse (and (boundp 'compilation-error-list) ;compile loaded
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1086 ;; ;; Construct a list; each elt is nil or a buffer
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1087 ;; ;; iff that buffer is a compilation output buffer
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1088 ;; ;; that contains markers into the current buffer.
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1089 ;; (save-current-buffer
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1090 ;; (mapcar (lambda (buffer)
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1091 ;; (set-buffer buffer)
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1092 ;; (let ((errors (or
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1093 ;; compilation-old-error-list
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1094 ;; compilation-error-list))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1095 ;; (buffer-error-marked-p nil))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1096 ;; (while (and (consp errors)
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1097 ;; (not buffer-error-marked-p))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1098 ;; (and (markerp (cdr (car errors)))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1099 ;; (eq buffer
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1100 ;; (marker-buffer
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1101 ;; (cdr (car errors))))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1102 ;; (setq buffer-error-marked-p t))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1103 ;; (setq errors (cdr errors)))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1104 ;; (if buffer-error-marked-p buffer)))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1105 ;; (buffer-list)))))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1106 (reparse nil))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1107 (list point-context mark-context reparse)))
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
1108
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1109 (defun vc-restore-buffer-context (context)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1110 "Restore point/mark, and reparse any affected compilation buffers.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1111 CONTEXT is that which `vc-buffer-context' returns."
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1112 (let ((point-context (nth 0 context))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1113 (mark-context (nth 1 context))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1114 (reparse (nth 2 context)))
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1115 ;; The new compilation code does not use compilation-error-list any
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1116 ;; more, so the code below is now ineffective and might as well
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1117 ;; be disabled. -- Stef
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1118 ;; ;; Reparse affected compilation buffers.
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1119 ;; (while reparse
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1120 ;; (if (car reparse)
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1121 ;; (with-current-buffer (car reparse)
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1122 ;; (let ((compilation-last-buffer (current-buffer)) ;select buffer
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1123 ;; ;; Record the position in the compilation buffer of
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1124 ;; ;; the last error next-error went to.
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1125 ;; (error-pos (marker-position
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1126 ;; (car (car-safe compilation-error-list)))))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1127 ;; ;; Reparse the error messages as far as they were parsed before.
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1128 ;; (compile-reinitialize-errors '(4) compilation-parsing-end)
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1129 ;; ;; Move the pointer up to find the error we were at before
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1130 ;; ;; reparsing. Now next-error should properly go to the next one.
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1131 ;; (while (and compilation-error-list
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1132 ;; (/= error-pos (car (car compilation-error-list))))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1133 ;; (setq compilation-error-list (cdr compilation-error-list))))))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1134 ;; (setq reparse (cdr reparse)))
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
1135
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1136 ;; if necessary, restore point and mark
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1137 (if (not (vc-context-matches-p (point) point-context))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1138 (let ((new-point (vc-find-position-by-context point-context)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1139 (if new-point (goto-char new-point))))
21212
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
1140 (and mark-active
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
1141 mark-context
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
1142 (not (vc-context-matches-p (mark) mark-context))
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
1143 (let ((new-mark (vc-find-position-by-context mark-context)))
73a8874d25ce (vc-restore-buffer-context): Only try to restore mark if it is active.
André Spiegel <spiegel@gnu.org>
parents: 21113
diff changeset
1144 (if new-mark (set-mark new-mark))))))
1635
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
1145
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1146 (defun vc-revert-buffer1 (&optional arg no-confirm)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1147 "Revert buffer, keeping point and mark where user expects them.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1148 Try to be clever in the face of changes due to expanded version control
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1149 key words. This is important for typeahead to work as expected.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1150 ARG and NO-CONFIRM are passed on to `revert-buffer'."
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1151 (interactive "P")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1152 (widen)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1153 (let ((context (vc-buffer-context)))
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1154 ;; Use save-excursion here, because it may be able to restore point
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1155 ;; and mark properly even in cases where vc-restore-buffer-context
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1156 ;; would fail. However, save-excursion might also get it wrong --
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1157 ;; in this case, vc-restore-buffer-context gives it a second try.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1158 (save-excursion
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1159 ;; t means don't call normal-mode;
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1160 ;; that's to preserve various minor modes.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1161 (revert-buffer arg no-confirm t))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1162 (vc-restore-buffer-context context)))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1163
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1164
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1165 (defun vc-buffer-sync (&optional not-urgent)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1166 "Make sure the current buffer and its working file are in sync.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1167 NOT-URGENT means it is ok to continue if the user says not to save."
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
1168 (if (buffer-modified-p)
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1169 (if (or vc-suppress-confirm
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1170 (y-or-n-p (format "Buffer %s modified; save it? " (buffer-name))))
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1171 (save-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
1172 (unless not-urgent
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1173 (error "Aborted")))))
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1174
36395
20a768ca0cf8 (vc-default-workfile-unchanged-p, vc-default-latest-on-branch-p): Add
André Spiegel <spiegel@gnu.org>
parents: 35830
diff changeset
1175 (defun vc-default-latest-on-branch-p (backend file)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1176 "Return non-nil if FILE is the latest on its branch.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1177 This default implementation always returns non-nil, which means that
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1178 editing non-current versions is not supported by default."
35131
9dcb897992b9 (vc-default-latest-on-branch-p): New function, replaces constant
André Spiegel <spiegel@gnu.org>
parents: 33634
diff changeset
1179 t)
9dcb897992b9 (vc-default-latest-on-branch-p): New function, replaces constant
André Spiegel <spiegel@gnu.org>
parents: 33634
diff changeset
1180
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
1181 (defun vc-next-action-on-file (file verbose &optional comment)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1182 "Do The Right Thing for a given FILE under version control.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1183 If COMMENT is specified, it will be used as an admin or checkin comment.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1184 If VERBOSE is non-nil, query the user rather than using default parameters."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1185 (let ((visited (get-file-buffer file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1186 state version)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1187 (when visited
46623
9ed0e3821f7a (vc-next-action-on-file): Preserve find-file-literally.
André Spiegel <spiegel@gnu.org>
parents: 46541
diff changeset
1188 (if vc-dired-mode
9ed0e3821f7a (vc-next-action-on-file): Preserve find-file-literally.
André Spiegel <spiegel@gnu.org>
parents: 46541
diff changeset
1189 (switch-to-buffer-other-window visited)
9ed0e3821f7a (vc-next-action-on-file): Preserve find-file-literally.
André Spiegel <spiegel@gnu.org>
parents: 46541
diff changeset
1190 (set-buffer 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
1191 ;; Check relation of buffer and file, and make sure
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1192 ;; user knows what he's doing. First, finding the file
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1193 ;; will check whether the file on disk is newer.
46623
9ed0e3821f7a (vc-next-action-on-file): Preserve find-file-literally.
André Spiegel <spiegel@gnu.org>
parents: 46541
diff changeset
1194 ;; Ignore buffer-read-only during this test, and
9ed0e3821f7a (vc-next-action-on-file): Preserve find-file-literally.
André Spiegel <spiegel@gnu.org>
parents: 46541
diff changeset
1195 ;; preserve find-file-literally.
46454
386acc7f6c4d (vc-next-action-on-file): Ignore buffer-read-only while comparing to
André Spiegel <spiegel@gnu.org>
parents: 43744
diff changeset
1196 (let ((buffer-read-only (not (file-writable-p file))))
46623
9ed0e3821f7a (vc-next-action-on-file): Preserve find-file-literally.
André Spiegel <spiegel@gnu.org>
parents: 46541
diff changeset
1197 (find-file-noselect file nil find-file-literally))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1198 (if (not (verify-visited-file-modtime (current-buffer)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1199 (if (yes-or-no-p "Replace file on disk with buffer contents? ")
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1200 (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
1201 (error "Aborted"))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1202 ;; Now, check if we have unsaved changes.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1203 (vc-buffer-sync t)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1204 (if (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
1205 (or (y-or-n-p "Operate on disk file, keeping modified buffer? ")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1206 (error "Aborted")))))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1207
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1208 ;; Do the right thing
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1209 (if (not (vc-registered 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
1210 (vc-register verbose comment)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1211 (vc-recompute-state 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
1212 (if visited (vc-mode-line 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
1213 (setq state (vc-state file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1214 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1215 ;; up-to-date
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1216 ((or (eq state 'up-to-date)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1217 (and verbose (eq state 'needs-patch)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1218 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1219 (verbose
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1220 ;; go to a different version
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1221 (setq version
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1222 (read-string "Branch, version, or backend to move to: "))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1223 (let ((vsym (intern-soft (upcase version))))
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1224 (if (member vsym vc-handled-backends)
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1225 (vc-transfer-file file vsym)
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1226 (vc-checkout file (eq (vc-checkout-model file) 'implicit)
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1227 version))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1228 ((not (eq (vc-checkout-model file) 'implicit))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1229 ;; check the file out
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1230 (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
1231 (t
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1232 ;; do nothing
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1233 (message "%s is up-to-date" file))))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1234
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1235 ;; Abnormal: edited but read-only
37544
94c0503d3f2d (vc-next-action-on-file): Only force buffer+file to writable
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36710
diff changeset
1236 ((and visited (eq state 'edited)
94c0503d3f2d (vc-next-action-on-file): Only force buffer+file to writable
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36710
diff changeset
1237 buffer-read-only (not (file-writable-p 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
1238 ;; Make the file+buffer read-write. If the user really wanted to
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1239 ;; commit, he'll get a chance to do that next time around, anyway.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1240 (message "File is edited but read-only; making it writable")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1241 (set-file-modes 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
1242 (logior (file-modes buffer-file-name) 128))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1243 (toggle-read-only -1))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1244
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1245 ;; edited
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1246 ((eq state 'edited)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1247 (cond
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1248 ;; For files with locking, if the file does not contain
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1249 ;; any changes, just let go of the lock, i.e. revert.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1250 ((and (not (eq (vc-checkout-model file) 'implicit))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1251 (vc-workfile-unchanged-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
1252 ;; If buffer is modified, that means the user just
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1253 ;; said no to saving it; in that case, don't revert,
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1254 ;; because the user might intend to save after
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1255 ;; finishing the log entry.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1256 (not (and visited (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
1257 ;; DO NOT revert the file without asking the user!
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1258 (if (not visited) (find-file-other-window file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1259 (if (yes-or-no-p "Revert to master version? ")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1260 (vc-revert-buffer)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1261 (t ;; normal action
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1262 (if (not verbose)
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1263 (vc-checkin file nil comment)
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1264 (setq version (read-string "New version or backend: "))
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1265 (let ((vsym (intern (upcase version))))
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1266 (if (member vsym vc-handled-backends)
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1267 (vc-transfer-file file vsym)
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1268 (vc-checkin file version comment)))))))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1269
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 ;; locked by somebody else
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1271 ((stringp state)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1272 (if comment
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1273 (error "Sorry, you can't steal the lock on %s this way"
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1274 (file-name-nondirectory 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 (vc-steal-lock file
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1276 (if verbose (read-string "Version to steal: ")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1277 (vc-workfile-version file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1278 state))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1279
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1280 ;; needs-patch
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1281 ((eq state 'needs-patch)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1282 (if (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
1283 "%s is not up-to-date. Get latest version? "
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1284 (file-name-nondirectory file)))
48964
7bba5b5ff0d2 (vc-next-action-on-file): Use t argument to vc-checkout in
André Spiegel <spiegel@gnu.org>
parents: 48142
diff changeset
1285 (vc-checkout file (eq (vc-checkout-model file) 'implicit) 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
1286 (if (and (not (eq (vc-checkout-model file) 'implicit))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1287 (yes-or-no-p "Lock this version? "))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1288 (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
1289 (error "Aborted"))))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1290
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1291 ;; needs-merge
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1292 ((eq state 'needs-merge)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1293 (if (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
1294 "%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
1295 (file-name-nondirectory file)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1296 (vc-maybe-resolve-conflicts file (vc-call merge-news file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1297 (error "Aborted")))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1298
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1299 ;; 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
1300 ((eq state '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
1301 (if (not visited) (find-file-other-window file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1302 (if (save-window-excursion
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1303 (vc-version-diff file (vc-workfile-version file) nil)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1304 (goto-char (point-min))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1305 (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
1306 (insert
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1307 (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
1308 (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
1309 (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
1310 "Claim lock retaining changes? ")))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1311 (progn (vc-call steal-lock file)
46454
386acc7f6c4d (vc-next-action-on-file): Ignore buffer-read-only while comparing to
André Spiegel <spiegel@gnu.org>
parents: 43744
diff changeset
1312 (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
1313 ;; 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
1314 ;; 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
1315 (vc-clear-headers file)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1316 (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
1317 (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
1318 (if (not (yes-or-no-p
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1319 "Revert to checked-in version, instead? "))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1320 (error "Checkout aborted")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1321 (vc-revert-buffer1 t t)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1322 (vc-checkout file t))))))))
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
1323
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1324 (defvar vc-dired-window-configuration)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1325
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
1326 (defun vc-next-action-dired (file rev comment)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1327 "Call `vc-next-action-on-file' on all the marked files.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1328 Ignores FILE and REV, but passes on COMMENT."
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1329 (let ((dired-buffer (current-buffer)))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
1330 (dired-map-over-marks
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1331 (let ((file (dired-get-filename)))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1332 (message "Processing %s..." 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
1333 (vc-next-action-on-file file nil comment)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1334 (set-buffer dired-buffer)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1335 (set-window-configuration vc-dired-window-configuration)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1336 (message "Processing %s...done" file))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1337 nil t))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1338 (dired-move-to-filename))
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
1339
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1340 ;; Here's the major entry point.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1341
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1342 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1343 (defun vc-next-action (verbose)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1344 "Do the next logical version control operation on the current 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
1345
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1346 If you call this from within a VC dired buffer with no files marked,
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1347 it will operate on the file in the current line.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1348
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1349 If you call this from within a VC dired buffer, and one or more
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1350 files are marked, it will accept a log message and then operate on
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1351 each one. The log message will be used as a comment for any register
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1352 or checkin operations, but ignored when doing checkouts. Attempted
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1353 lock steals will raise an error.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1354
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1355 A prefix argument lets you specify the version number to use.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1356
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1357 For RCS and SCCS files:
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1358 If the file is not already registered, this registers it for version
21517
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
1359 control.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1360 If the file is registered and not locked by anyone, this checks out
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1361 a writable and locked file ready for editing.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1362 If the file is checked out and locked by the calling user, this
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1363 first checks to see if the file has changed since checkout. If not,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1364 it performs a revert.
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
1365 If the file has been changed, this pops up a buffer for entry
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
1366 of a log message; when the message has been entered, it checks in the
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1367 resulting changes along with the log message as change commentary. If
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1368 the variable `vc-keep-workfiles' is non-nil (which is its default), a
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1369 read-only copy of the changed file is left in place afterwards.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1370 If the file is registered and locked by someone else, you are given
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
1371 the option to steal the lock.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1372
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1373 For CVS files:
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1374 If the file is not already registered, this registers it for version
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1375 control. This does a \"cvs add\", but no \"cvs commit\".
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1376 If the file is added but not committed, it is committed.
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1377 If your working file is changed, but the repository file is
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1378 unchanged, this pops up a buffer for entry of a log message; when the
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1379 message has been entered, it checks in the resulting changes along
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1380 with the logmessage as change commentary. A writable file is retained.
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1381 If the repository file is changed, you are asked if you want to
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1382 merge in the changes into your working copy."
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1383
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1384 (interactive "P")
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
1385 (catch 'nogo
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
1386 (if vc-dired-mode
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
1387 (let ((files (dired-get-marked-files)))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1388 (set (make-local-variable 'vc-dired-window-configuration)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1389 (current-window-configuration))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1390 (if (string= ""
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1391 (mapconcat
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1392 (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
1393 (if (not (vc-up-to-date-p f)) "@" ""))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1394 files ""))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1395 (vc-next-action-dired nil nil "dummy")
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1396 (vc-start-entry nil nil nil nil
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1397 "Enter a change comment for the marked files."
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1398 'vc-next-action-dired))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1399 (throw 'nogo nil)))
21448
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1400 (while vc-parent-buffer
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1401 (pop-to-buffer vc-parent-buffer))
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1402 (if buffer-file-name
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1403 (vc-next-action-on-file buffer-file-name verbose)
1b5746e92464 (vc-next-action): Fixed bug that prevented registering files using C-x v v.
André Spiegel <spiegel@gnu.org>
parents: 21370
diff changeset
1404 (error "Buffer %s is not associated with a file" (buffer-name)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1405
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
1406 ;; These functions help the vc-next-action entry point
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1407
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1408 (defun vc-default-init-version (backend) vc-default-init-version)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1409
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1410 ;;;###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
1411 (defun vc-register (&optional set-version comment)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1412 "Register the current file into a version control system.
31520
f9d2d484e1e2 * vc-sccs.el (vc-sccs-register):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31435
diff changeset
1413 With prefix argument SET-VERSION, allow user to specify initial version
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1414 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
1415
31520
f9d2d484e1e2 * vc-sccs.el (vc-sccs-register):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31435
diff changeset
1416 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
1417 `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
1418 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
1419 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
1420 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
1421 first backend that could register the file is used."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1422 (interactive "P")
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1423 (unless buffer-file-name (error "No visited 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
1424 (when (vc-backend 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
1425 (if (vc-registered 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
1426 (error "This file is already registered")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1427 (unless (y-or-n-p "Previous master file has vanished. Make a new one? ")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1428 (error "Aborted"))))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1429 ;; Watch out for new buffers of size 0: the corresponding file
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1430 ;; does not exist yet, even though buffer-modified-p is nil.
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1431 (if (and (not (buffer-modified-p))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1432 (zerop (buffer-size))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1433 (not (file-exists-p buffer-file-name)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1434 (set-buffer-modified-p t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1435 (vc-buffer-sync)
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1436
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1437 (vc-start-entry 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
1438 (if set-version
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1439 (read-string (format "Initial version level for %s: "
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
1440 (buffer-name)))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1441 (vc-call-backend (vc-responsible-backend buffer-file-name)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1442 'init-version))
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 (or comment (not vc-initial-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
1444 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
1445 "Enter 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
1446 (lambda (file rev comment)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1447 (message "Registering %s... " file)
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1448 (let ((backend (vc-responsible-backend file t)))
31520
f9d2d484e1e2 * vc-sccs.el (vc-sccs-register):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31435
diff changeset
1449 (vc-file-clearprops 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
1450 (vc-call-backend backend 'register file rev comment)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1451 (vc-file-setprop file 'vc-backend backend)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1452 (unless vc-make-backup-files
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1453 (make-local-variable 'backup-inhibited)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1454 (setq backup-inhibited t)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1455 (message "Registering %s... done" file))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1456
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1457
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1458 (defun vc-responsible-backend (file &optional register)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1459 "Return the name of a backend system that is responsible for FILE.
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1460 The optional argument REGISTER means that a backend suitable for
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1461 registration should be found.
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1462
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1463 If REGISTER is nil, then if FILE is already registered, return the
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1464 backend of FILE. If FILE is not registered, or a directory, then the
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1465 first backend in `vc-handled-backends' that declares itself
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1466 responsible for FILE is returned. If no backend declares itself
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1467 responsible, return the first backend.
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
1468
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1469 If REGISTER is non-nil, return the first responsible backend under
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1470 which FILE is not yet registered. If there is no such backend, return
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1471 the first backend under which FILE is not yet registered, but could
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1472 be registered."
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1473 (if (not vc-handled-backends)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1474 (error "No handled backends"))
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1475 (or (and (not (file-directory-p file)) (not register) (vc-backend file))
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1476 (catch 'found
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1477 ;; First try: find a responsible backend. If this is for registration,
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1478 ;; it must be a backend under which FILE is not yet registered.
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1479 (dolist (backend vc-handled-backends)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1480 (and (or (not register)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1481 (not (vc-call-backend backend 'registered file)))
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1482 (vc-call-backend backend 'responsible-p file)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1483 (throw 'found backend)))
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1484 ;; no responsible backend
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1485 (if (not register)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1486 ;; if this is not for registration, the first backend must do
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1487 (car vc-handled-backends)
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1488 ;; for registration, we need to find a new backend that
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1489 ;; could register FILE
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1490 (dolist (backend vc-handled-backends)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1491 (and (not (vc-call-backend backend 'registered file))
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1492 (vc-call-backend backend 'could-register file)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1493 (throw 'found backend)))
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1494 (error "No backend that could register")))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1495
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1496 (defun vc-default-responsible-p (backend file)
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1497 "Indicate whether BACKEND is reponsible for FILE.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1498 The default is to return nil always."
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1499 nil)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1500
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1501 (defun vc-default-could-register (backend file)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1502 "Return non-nil if BACKEND could be used to register 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
1503 The default implementation returns t for all files."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1504 t)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1505
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1506 (defun vc-resynch-window (file &optional keep noquery)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1507 "If FILE is in the current buffer, either revert or unvisit it.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1508 The choice between revert (to see expanded keywords) and unvisit depends on
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1509 `vc-keep-workfiles'. NOQUERY if non-nil inhibits confirmation for
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1510 reverting. NOQUERY should be t *only* if it is known the only
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1511 difference between the buffer and the file is due to version control
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1512 rather than user editing!"
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1513 (and (string= buffer-file-name file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1514 (if keep
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1515 (progn
1905
494dd05d460c * files.el (revert-buffer): Reverse the sense of the first
Jim Blandy <jimb@redhat.com>
parents: 1674
diff changeset
1516 (vc-revert-buffer1 t noquery)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1517 ;; TODO: Adjusting view mode might no longer be necessary
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1518 ;; after RMS change to files.el of 1999-08-08. Investigate
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1519 ;; this when we install the new VC.
20602
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1520 (and view-read-only
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1521 (if (file-writable-p file)
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1522 (and view-mode
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1523 (let ((view-old-buffer-read-only nil))
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1524 (view-mode-exit)))
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1525 (and (not view-mode)
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1526 (not (eq (get major-mode 'mode-class) 'special))
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1527 (view-mode-enter))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1528 (vc-mode-line buffer-file-name))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
1529 (kill-buffer (current-buffer)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1530
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1531 (defun vc-resynch-buffer (file &optional keep noquery)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1532 "If FILE is currently visited, resynch its buffer."
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1533 (if (string= buffer-file-name file)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1534 (vc-resynch-window file keep noquery)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1535 (let ((buffer (get-file-buffer file)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1536 (if 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
1537 (with-current-buffer buffer
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1538 (vc-resynch-window file keep noquery)))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1539 (vc-dired-resynch-file file))
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1540
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1541 (defun vc-start-entry (file rev comment initial-contents msg action &optional after-hook)
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1542 "Accept a comment for an operation on FILE revision REV.
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1543 If COMMENT is nil, pop up a VC-log buffer, emit MSG, and set the
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1544 action on close to ACTION. If COMMENT is a string and
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1545 INITIAL-CONTENTS is non-nil, then COMMENT is used as the initial
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1546 contents of the log entry buffer. If COMMENT is a string and
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1547 INITIAL-CONTENTS is nil, do action immediately as if the user had
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1548 entered COMMENT. If COMMENT is t, also do action immediately with an
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1549 empty comment. Remember the file's buffer in `vc-parent-buffer'
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1550 \(current one if no file). AFTER-HOOK specifies the local value
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1551 for vc-log-operation-hook."
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1552 (let ((parent (or (and file (get-file-buffer file)) (current-buffer))))
17274
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1553 (if vc-before-checkin-hook
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1554 (if 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
1555 (with-current-buffer parent
17274
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1556 (run-hooks 'vc-before-checkin-hook))
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1557 (run-hooks 'vc-before-checkin-hook)))
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1558 (if (and comment (not initial-contents))
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
1559 (set-buffer (get-buffer-create "*VC-log*"))
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
1560 (pop-to-buffer (get-buffer-create "*VC-log*")))
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
1561 (set (make-local-variable 'vc-parent-buffer) parent)
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
1562 (set (make-local-variable 'vc-parent-buffer-name)
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
1563 (concat " from " (buffer-name vc-parent-buffer)))
12393
7d4615a12286 (vc-start-entry): Prevent lossage when doing a mass checkin from
Richard M. Stallman <rms@gnu.org>
parents: 12365
diff changeset
1564 (if file (vc-mode-line file))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1565 (vc-log-edit file)
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1566 (make-local-variable 'vc-log-after-operation-hook)
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1567 (if after-hook
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1568 (setq vc-log-after-operation-hook after-hook))
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
1569 (setq vc-log-operation action)
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
1570 (setq vc-log-version rev)
32930
470147903e33 (vc-start-entry): Only erase the buffer if comment is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32910
diff changeset
1571 (when comment
470147903e33 (vc-start-entry): Only erase the buffer if comment is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32910
diff changeset
1572 (erase-buffer)
470147903e33 (vc-start-entry): Only erase the buffer if comment is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32910
diff changeset
1573 (when (stringp comment) (insert comment)))
470147903e33 (vc-start-entry): Only erase the buffer if comment is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32910
diff changeset
1574 (if (or (not comment) initial-contents)
470147903e33 (vc-start-entry): Only erase the buffer if comment is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32910
diff changeset
1575 (message "%s Type C-c C-c when done" msg)
470147903e33 (vc-start-entry): Only erase the buffer if comment is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32910
diff changeset
1576 (vc-finish-logentry (eq comment t)))))
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
1577
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1578 (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
1579 "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
1580 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
1581 REV defaults to the latest revision.
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1582
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1583 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
1584 (and writable
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1585 (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
1586 (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
1587 (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
1588 (vc-make-version-backup file))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1589 (with-vc-properties
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1590 file
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1591 (condition-case err
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1592 (vc-call checkout file writable rev)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1593 (file-error
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1594 ;; Maybe the backend is not installed ;-(
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1595 (when writable
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1596 (let ((buf (get-file-buffer file)))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1597 (when buf (with-current-buffer buf (toggle-read-only -1)))))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1598 (signal (car err) (cdr err))))
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1599 `((vc-state . ,(if (or (eq (vc-checkout-model file) 'implicit)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1600 (not writable))
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1601 (if (vc-call latest-on-branch-p file)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1602 'up-to-date
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1603 'needs-patch)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1604 'edited))
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1605 (vc-checkout-time . ,(nth 5 (file-attributes file)))))
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1606 (vc-resynch-buffer file t t)
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1607 (run-hooks 'vc-checkout-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1608
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1609 (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
1610 "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
1611 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1612 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1613 (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
1614 (setq file-description file))
18265
ffe9754664a2 (vc-steal-lock): Use yes-or-no-p for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 18246
diff changeset
1615 (if (not (yes-or-no-p (format "Steal the lock on %s from %s? "
ffe9754664a2 (vc-steal-lock): Use yes-or-no-p for confirmation.
Richard M. Stallman <rms@gnu.org>
parents: 18246
diff changeset
1616 file-description owner)))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1617 (error "Steal canceled"))
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1618 (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
1619 (with-vc-properties
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1620 file
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1621 (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
1622 `((vc-state . edited)))
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1623 (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
1624 (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
1625 ;; 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
1626 ;; 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
1627 (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
1628 (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
1629 (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
1630 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1631 (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
1632 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1633 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1634 (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
1635
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1636 (defun vc-checkin (file &optional rev comment initial-contents)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1637 "Check in 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
1638 The optional argument REV may be a string specifying the new version
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1639 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
1640 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
1641 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
1642 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
1643
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1644 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
1645 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
1646
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1647 Runs the normal hook `vc-checkin-hook'."
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1648 (vc-start-entry
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1649 file rev comment initial-contents
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1650 "Enter a change comment."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1651 (lambda (file rev comment)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1652 (message "Checking in %s..." file)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1653 ;; "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
1654 ;; 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
1655 (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
1656 (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
1657 (with-vc-properties
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1658 file
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1659 ;; Change buffers to get local value of vc-checkin-switches.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1660 (with-current-buffer (or (get-file-buffer file) (current-buffer))
39427
900ad37906a7 (vc-checkin): Use vc-delete-automatic-version-backups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39388
diff changeset
1661 (progn
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1662 (vc-call checkin file rev comment)
39427
900ad37906a7 (vc-checkin): Use vc-delete-automatic-version-backups.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39388
diff changeset
1663 (vc-delete-automatic-version-backups file)))
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1664 `((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
1665 (vc-checkout-time . ,(nth 5 (file-attributes file)))
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1666 (vc-workfile-version . 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
1667 (message "Checking in %s...done" file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1668 'vc-checkin-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1669
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
1670 (defun vc-finish-logentry (&optional nocomment)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1671 "Complete the operation implied by the current log entry.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1672 Use the contents of the current buffer as a check-in or registration
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1673 comment. If the optional arg NOCOMMENT is non-nil, then don't check
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
1674 the buffer contents as a comment."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1675 (interactive)
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
1676 ;; Check and record the comment, if any.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1677 (unless nocomment
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1678 ;; Comment too long?
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1679 (vc-call-backend (or (and vc-log-file (vc-backend vc-log-file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1680 (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
1681 'logentry-check)
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
1682 (run-hooks 'vc-logentry-check-hook))
5428
e66b058ec9f6 (vc-finish-logentry): Sync the buffer in case the user modified it while
Paul Eggert <eggert@twinsun.com>
parents: 5338
diff changeset
1683 ;; Sync parent buffer in case the user modified it while editing the comment.
8349
a61f6295ee0e (vc-next-action): Even in 1-file case, get its name from FILES.
Richard M. Stallman <rms@gnu.org>
parents: 8290
diff changeset
1684 ;; But not if it is a vc-dired 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
1685 (with-current-buffer vc-parent-buffer
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1686 (or vc-dired-mode (vc-buffer-sync)))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1687 (if (not vc-log-operation) (error "No log operation is pending"))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1688 ;; save the parameters held in buffer-local variables
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1689 (let ((log-operation vc-log-operation)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1690 (log-file vc-log-file)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1691 (log-version vc-log-version)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1692 (log-entry (buffer-string))
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1693 (after-hook vc-log-after-operation-hook)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1694 (tmp-vc-parent-buffer vc-parent-buffer))
8237
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1695 (pop-to-buffer vc-parent-buffer)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1696 ;; OK, do it to it
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1697 (save-excursion
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1698 (funcall log-operation
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1699 log-file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1700 log-version
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1701 log-entry))
20661
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1702 ;; Remove checkin window (after the checkin so that if that fails
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1703 ;; we don't zap the *VC-log* buffer and the typing therein).
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1704 (let ((logbuf (get-buffer "*VC-log*")))
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1705 (cond ((and logbuf vc-delete-logbuf-window)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1706 (delete-windows-on logbuf (selected-frame))
22721
d023df160219 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 22715
diff changeset
1707 ;; Kill buffer and delete any other dedicated windows/frames.
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1708 (kill-buffer logbuf))
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1709 (logbuf (pop-to-buffer "*VC-log*")
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1710 (bury-buffer)
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1711 (pop-to-buffer tmp-vc-parent-buffer))))
8237
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1712 ;; Now make sure we see the expanded headers
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1713 (if log-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
1714 (vc-resynch-buffer log-file vc-keep-workfiles 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
1715 (if vc-dired-mode
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1716 (dired-move-to-filename))
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
1717 (run-hooks after-hook 'vc-finish-logentry-hook)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1718
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1719 ;; Code for access to the comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1720
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1721 ;; Additional entry points for examining version histories
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1722
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1723 ;;;###autoload
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1724 (defun vc-diff (historic &optional not-urgent)
2667
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1725 "Display diffs between file versions.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1726 Normally this compares the current file and buffer with the most
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1727 recent checked in version of that file. This uses no arguments. With
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1728 a prefix argument HISTORIC, it reads the file name to use and two
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1729 version designators specifying which versions to compare. The
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1730 optional argument NOT-URGENT non-nil means it is ok to say no to
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1731 saving the buffer."
14376
eb8910a353fc (vc-diff): Make NOT-URGENT default to t.
Richard M. Stallman <rms@gnu.org>
parents: 14297
diff changeset
1732 (interactive (list current-prefix-arg t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1733 (if historic
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1734 (call-interactively 'vc-version-diff)
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1735 (vc-ensure-vc-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
1736 (let ((file buffer-file-name))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1737 (vc-buffer-sync not-urgent)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1738 (if (vc-workfile-unchanged-p 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
1739 (message "No changes to %s since latest version" file)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1740 (vc-version-diff file nil nil)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1741
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1742 (defun vc-version-diff (file rev1 rev2)
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1743 "List the differences between FILE's versions REV1 and REV2.
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1744 If REV1 is empty or nil it means to use the current workfile version;
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1745 REV2 empty or nil means the current file contents. FILE may also be
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1746 a directory, in that case, generate diffs between the correponding
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1747 versions of all registered files in or below it."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1748 (interactive
27436
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1749 (let ((file (expand-file-name
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1750 (read-file-name (if buffer-file-name
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1751 "File or dir to diff (default visited file): "
27436
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1752 "File or dir to diff: ")
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1753 default-directory buffer-file-name t)))
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1754 (rev1-default nil) (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
1755 ;; compute default versions based on the file state
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1756 (cond
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 ;; if it's a directory, don't supply any version default
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1758 ((file-directory-p file)
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1759 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
1760 ;; if the file is not up-to-date, use current version as older version
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1761 ((not (vc-up-to-date-p file))
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1762 (setq rev1-default (vc-workfile-version file)))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1763 ;; if the file is not locked, use last and previous version as default
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1764 (t
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1765 (setq rev1-default (vc-call previous-version file
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1766 (vc-workfile-version file)))
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1767 (if (string= rev1-default "") (setq rev1-default nil))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1768 (setq rev2-default (vc-workfile-version file))))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1769 ;; construct argument 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
1770 (list file
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1771 (read-string (if rev1-default
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1772 (concat "Older version (default "
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1773 rev1-default "): ")
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1774 "Older version: ")
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1775 nil nil rev1-default)
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1776 (read-string (if rev2-default
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1777 (concat "Newer version (default "
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1778 rev2-default "): ")
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1779 "Newer version (default current source): ")
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1780 nil nil rev2-default))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1781 (if (file-directory-p file)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1782 ;; recursive directory diff
36710
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
1783 (progn
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
1784 (vc-setup-buffer "*vc-diff*")
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1785 (if (string-equal rev1 "") (setq rev1 nil))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1786 (if (string-equal rev2 "") (setq rev2 nil))
36710
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
1787 (let ((inhibit-read-only t))
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
1788 (insert "Diffs between "
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1789 (or rev1 "last version checked in")
36710
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
1790 " and "
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1791 (or rev2 "current workfile(s)")
36710
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
1792 ":\n\n"))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1793 (let ((dir (file-name-as-directory file)))
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1794 (vc-call-backend (vc-responsible-backend dir)
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1795 'diff-tree dir rev1 rev2))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1796 (vc-exec-after `(let ((inhibit-read-only t))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1797 (insert "\nEnd of diffs.\n"))))
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
1798 ;; Single file diff. It is important that the vc-controlled buffer
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
1799 ;; is still current at this time, because any local settings in that
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
1800 ;; buffer should affect the diff command.
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1801 (vc-diff-internal file rev1 rev2))
36710
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
1802 (set-buffer "*vc-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
1803 (if (and (zerop (buffer-size))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1804 (not (get-buffer-process (current-buffer))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1805 (progn
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1806 (if rev1
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1807 (if rev2
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1808 (message "No changes to %s between %s and %s" file rev1 rev2)
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1809 (message "No changes to %s since %s" file rev1))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1810 (message "No changes to %s since latest version" file))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1811 nil)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1812 (pop-to-buffer (current-buffer))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1813 ;; Gnus-5.8.5 sets up an autoload for diff-mode, even if it's
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1814 ;; not available. Work around that.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1815 (if (require 'diff-mode nil t) (diff-mode))
33564
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
1816 (vc-exec-after '(let ((inhibit-read-only t))
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
1817 (if (eq (buffer-size) 0)
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
1818 (insert "No differences found.\n"))
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
1819 (goto-char (point-min))
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
1820 (shrink-window-if-larger-than-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
1821 t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1822
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1823 (defun vc-diff-label (file file-rev rev)
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1824 (concat (file-relative-name file)
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1825 (format-time-string "\t%d %b %Y %T %z\t"
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1826 (nth 5 (file-attributes file-rev)))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1827 rev))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1828
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1829 (defun vc-diff-internal (file rev1 rev2)
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1830 "Run diff to compare FILE's revisions REV1 and REV2.
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
1831 Diff output goes to the *vc-diff* buffer. The exit status of the diff
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
1832 command is returned.
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1833
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1834 This function takes care to set up a proper coding system for diff output.
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1835 If both revisions are available as local files, then it also does not
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1836 actually call the backend, but performs a local diff."
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1837 (if (or (not rev1) (string-equal rev1 ""))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1838 (setq rev1 (vc-workfile-version file)))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1839 (if (string-equal rev2 "")
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1840 (setq rev2 nil))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1841 (let ((file-rev1 (vc-version-backup-file file rev1))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1842 (file-rev2 (if (not rev2)
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1843 file
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1844 (vc-version-backup-file file rev2)))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1845 (coding-system-for-read (vc-coding-system-for-diff file)))
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1846 (if (and file-rev1 file-rev2)
71446
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1847 (let ((status
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1848 (if (eq vc-diff-knows-L 'no)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1849 (apply 'vc-do-command "*vc-diff*" 1 "diff"
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1850 (append (vc-switches nil 'diff)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1851 (list (file-relative-name file-rev1)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1852 (file-relative-name file-rev2))))
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1853 (apply 'vc-do-command "*vc-diff*" 2 "diff" nil
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1854 (append (vc-switches nil 'diff)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1855 ;; Provide explicit labels like RCS or
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1856 ;; CVS would do so diff-mode refers to
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1857 ;; `file' rather than to `file-rev1'
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1858 ;; when trying to find/apply/undo
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1859 ;; hunks.
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1860 (list "-L" (vc-diff-label file file-rev1 rev1)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1861 "-L" (vc-diff-label file file-rev2 rev2)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1862 (file-relative-name file-rev1)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1863 (file-relative-name file-rev2)))))))
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1864 (if (eq status 2)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1865 (if (not vc-diff-knows-L)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1866 (setq vc-diff-knows-L 'no
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1867 status (apply 'vc-do-command "*vc-diff*" 1 "diff"
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1868 (append
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1869 (vc-switches nil 'diff)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1870 (list (file-relative-name file-rev1)
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1871 (file-relative-name file-rev2)))))
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1872 (error "diff failed"))
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1873 (if (not vc-diff-knows-L) (setq vc-diff-knows-L 'yes)))
b0324f716b87 (vc-diff-knows-L): New variable.
André Spiegel <spiegel@gnu.org>
parents: 71228
diff changeset
1874 status)
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1875 (vc-call diff file rev1 rev2))))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1876
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1877 (defun vc-switches (backend op)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1878 (let ((switches
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1879 (or (if backend
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1880 (let ((sym (vc-make-backend-sym
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1881 backend (intern (concat (symbol-name op)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1882 "-switches")))))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1883 (if (boundp sym) (symbol-value sym))))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1884 (let ((sym (intern (format "vc-%s-switches" (symbol-name op)))))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1885 (if (boundp sym) (symbol-value sym)))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1886 (cond
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1887 ((eq op 'diff) diff-switches)))))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1888 (if (stringp switches) (list switches)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1889 ;; If not a list, return nil.
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1890 ;; This is so we can set vc-diff-switches to t to override
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1891 ;; any switches in diff-switches.
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1892 (if (listp switches) switches))))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1893
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1894 ;; Old def for compatibility with Emacs-21.[123].
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1895 (defmacro vc-diff-switches-list (backend) `(vc-switches ',backend 'diff))
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59442
diff changeset
1896 (make-obsolete 'vc-diff-switches-list 'vc-switches "22.1")
35820
3cfa6e077b83 (vc-diff-switches): New user option.
André Spiegel <spiegel@gnu.org>
parents: 35199
diff changeset
1897
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1898 (defun vc-default-diff-tree (backend dir rev1 rev2)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1899 "List differences for all registered files at and below DIR.
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1900 The meaning of REV1 and REV2 is the same as for `vc-version-diff'."
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
1901 ;; This implementation does an explicit tree walk, and calls
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1902 ;; vc-BACKEND-diff directly for each file. An optimization
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1903 ;; would be to use `vc-diff-internal', so that diffs can be local,
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1904 ;; and to call it only for files that are actually changed.
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1905 ;; However, this is expensive for some backends, and so it is left
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1906 ;; to backend-specific implementations.
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1907 (setq default-directory dir)
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1908 (vc-file-tree-walk
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1909 default-directory
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1910 (lambda (f)
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1911 (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
1912 `(let ((coding-system-for-read (vc-coding-system-for-diff ',f)))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1913 (message "Looking at %s" ',f)
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
1914 (vc-call-backend ',(vc-backend f)
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1915 'diff ',f ',rev1 ',rev2))))))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1916
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1917 (defun vc-coding-system-for-diff (file)
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1918 "Return the coding system for reading diff output for FILE."
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1919 (or coding-system-for-read
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
1920 ;; if we already have this file open,
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1921 ;; use the buffer's coding system
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1922 (let ((buf (find-buffer-visiting file)))
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1923 (if buf (with-current-buffer buf
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1924 buffer-file-coding-system)))
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1925 ;; otherwise, try to find one based on the file name
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
1926 (car (find-operation-coding-system 'insert-file-contents file))
40124
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1927 ;; and a final fallback
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1928 'undecided))
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1929
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1930 ;;;###autoload
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1931 (defun vc-version-other-window (rev)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1932 "Visit version REV of the current file in another window.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1933 If the current file is named `F', the version is named `F.~REV~'.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1934 If `F.~REV~' already exists, use it instead of checking it out again."
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1935 (interactive "sVersion to visit (default is workfile version): ")
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1936 (vc-ensure-vc-buffer)
32888
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1937 (let* ((file buffer-file-name)
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1938 (version (if (string-equal rev "")
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1939 (vc-workfile-version file)
41556
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1940 rev)))
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1941 (switch-to-buffer-other-window (vc-find-version file version))))
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1942
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1943 (defun vc-find-version (file version)
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1944 "Read VERSION of FILE into a buffer and return the buffer."
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1945 (let ((automatic-backup (vc-version-backup-file-name file version))
47796
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1946 (filebuf (or (get-file-buffer file) (current-buffer)))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1947 (filename (vc-version-backup-file-name file version 'manual)))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1948 (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
1949 (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
1950 (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
1951 (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
1952 (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
1953 (let ((failed t))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1954 (unwind-protect
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1955 (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
1956 (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
1957 (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
1958 (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
1959 ;; 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
1960 ;; vc-checkout-switches.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1961 (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
1962 (vc-call find-version file version outbuf))))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1963 (setq failed nil))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1964 (if (and failed (file-exists-p filename))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1965 (delete-file filename))))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1966 (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
1967 (message "Checking out %s...done" filename)))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1968 (find-file-noselect filename)))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1969
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1970 (defun vc-default-find-version (backend file rev buffer)
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1971 "Provide the new `find-version' op based on the old `checkout' op.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1972 This is only for compatibility with old backends. They should be updated
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1973 to provide the `find-version' operation instead."
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1974 (let ((tmpfile (make-temp-file (expand-file-name file))))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1975 (unwind-protect
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1976 (progn
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1977 (vc-call-backend backend 'checkout file nil rev tmpfile)
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1978 (with-current-buffer buffer
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1979 (insert-file-contents-literally tmpfile)))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1980 (delete-file tmpfile))))
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1981
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1982 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1983
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1984 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1985 (defun vc-insert-headers ()
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1986 "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
1987 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
1988 the variable `vc-BACKEND-header'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1989 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1990 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1991 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1992 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1993 (widen)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1994 (if (or (not (vc-check-headers))
3227
b2e2fcc4fb24 (vc-steal-lock, vc-insert-headers): Fix question whitespace.
Richard M. Stallman <rms@gnu.org>
parents: 2968
diff changeset
1995 (y-or-n-p "Version headers already exist. Insert another set? "))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1996 (let* ((delims (cdr (assq major-mode vc-comment-alist)))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1997 (comment-start-vc (or (car delims) comment-start "#"))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1998 (comment-end-vc (or (car (cdr delims)) comment-end ""))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1999 (hdsym (vc-make-backend-sym (vc-backend buffer-file-name)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2000 'header))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2001 (hdstrings (and (boundp hdsym) (symbol-value hdsym))))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2002 (dolist (s hdstrings)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2003 (insert comment-start-vc "\t" s "\t"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2004 comment-end-vc "\n"))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2005 (if vc-static-header-alist
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2006 (dolist (f vc-static-header-alist)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2007 (if (string-match (car f) buffer-file-name)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2008 (insert (format (cdr f) (car hdstrings)))))))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2009
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2010 (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
2011 "Clear all version headers in the current buffer (or FILE).
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2012 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
2013 (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
2014 (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
2015 (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
2016 (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
2017 (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
2018 (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
2019 ;; 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
2020 ;; 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
2021 ;; 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
2022 (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
2023 (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
2024 (vc-restore-buffer-context context))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2025 (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
2026 (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
2027 (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
2028
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2029 ;;;###autoload
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2030 (defun vc-merge ()
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2031 "Merge changes between two versions into the current buffer's file.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2032 This asks for two versions to merge from in the minibuffer. If the
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2033 first version is a branch number, then merge all changes from that
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2034 branch. If the first version is empty, merge news, i.e. recent changes
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2035 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
2036
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2037 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
2038 (interactive)
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2039 (vc-ensure-vc-buffer)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2040 (vc-buffer-sync)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2041 (let* ((file buffer-file-name)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2042 (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
2043 (state (vc-state file))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2044 first-version second-version 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
2045 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2046 ((stringp state)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2047 (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
2048 ((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
2049 (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
2050 "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
2051 (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
2052 (error "Merge aborted"))))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
2053 (setq first-version
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2054 (read-string (concat "Branch or version to merge from "
65680
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
2055 "(default news on current branch): ")))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2056 (if (string= first-version "")
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2057 (if (not (vc-find-backend-function backend 'merge-news))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2058 (error "Sorry, merging news is not implemented for %s" backend)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2059 (setq status (vc-call merge-news file)))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2060 (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
2061 (error "Sorry, merging is not implemented for %s" backend)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2062 (if (not (vc-branch-p first-version))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
2063 (setq second-version
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
2064 (read-string "Second version: "
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2065 (concat (vc-branch-part first-version) ".")))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2066 ;; We want to merge an entire branch. Set versions
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2067 ;; accordingly, so that vc-BACKEND-merge understands us.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2068 (setq second-version first-version)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2069 ;; first-version must be the starting point of the branch
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2070 (setq first-version (vc-branch-part first-version)))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2071 (setq status (vc-call merge file first-version second-version))))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2072 (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
2073
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2074 (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
2075 (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
2076 (if (zerop status) (message "Merge successful")
47765
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
2077 (smerge-mode 1)
54586
c3043c1faed3 (vc-maybe-resolve-conflicts): Don't prompt the user.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54562
diff changeset
2078 (message "File contains conflicts.")))
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2079
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2080 ;;;###autoload
47781
79bdd88fb006 (vc-resolve-conflicts); Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47780
diff changeset
2081 (defalias 'vc-resolve-conflicts 'smerge-ediff)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2082
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2083 ;; The VC directory major mode. Coopt Dired for this.
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
2084 ;; All VC commands get mapped into logical equivalents.
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
2085
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
2086 (defvar vc-dired-switches)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
2087 (defvar vc-dired-terse-mode)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
2088
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2089 (defvar vc-dired-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
2090 (let ((map (make-sparse-keymap))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2091 (vmap (make-sparse-keymap)))
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
2092 (define-key map "\C-xv" vmap)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2093 (define-key map "v" vmap)
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
2094 (set-keymap-parent vmap vc-prefix-map)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2095 (define-key vmap "t" 'vc-dired-toggle-terse-mode)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2096 map))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2097
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2098 (define-derived-mode vc-dired-mode dired-mode "Dired under VC"
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2099 "The major mode used in VC directory buffers.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2100
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2101 It works like Dired, but lists only files under version control, with
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2102 the current VC state of each file being indicated in the place of the
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2103 file's link count, owner, group and size. Subdirectories are also
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2104 listed, and you may insert them into the buffer as desired, like in
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2105 Dired.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2106
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2107 All Dired commands operate normally, with the exception of `v', which
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2108 is redefined as the version control prefix, so that you can type
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2109 `vl', `v=' etc. to invoke `vc-print-log', `vc-diff', and the like on
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2110 the file named in the current Dired buffer line. `vv' invokes
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2111 `vc-next-action' on this file, or on all files currently marked.
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2112 There is a special command, `*l', to mark all files currently locked."
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2113 ;; define-derived-mode does it for us in Emacs-21, but not in Emacs-20.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2114 ;; We do it here because dired might not be loaded yet
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2115 ;; when vc-dired-mode-map is initialized.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2116 (set-keymap-parent vc-dired-mode-map dired-mode-map)
21370
e8224143df73 (vc-dired-mode): Make dired-after-readin-hook a local hook, not a local variable.
André Spiegel <spiegel@gnu.org>
parents: 21368
diff changeset
2117 (add-hook 'dired-after-readin-hook 'vc-dired-hook nil t)
66325
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
2118 ;; The following is slightly modified from files.el,
48139
ae2a3a67e382 (vc-dired-move): Adapt dired-move-to-filename-regexp to its current
André Spiegel <spiegel@gnu.org>
parents: 47881
diff changeset
2119 ;; because file lines look a bit different in vc-dired-mode
ae2a3a67e382 (vc-dired-move): Adapt dired-move-to-filename-regexp to its current
André Spiegel <spiegel@gnu.org>
parents: 47881
diff changeset
2120 ;; (the column before the date does not end in a digit).
66425
3dcbac116732 * vc.el (vc-dired-mode): Extend comment for binding of
Michael Albinus <michael.albinus@gmx.de>
parents: 66325
diff changeset
2121 ;; albinus: It should be done in the original declaration. Problem
3dcbac116732 * vc.el (vc-dired-mode): Extend comment for binding of
Michael Albinus <michael.albinus@gmx.de>
parents: 66325
diff changeset
2122 ;; is the optional empty state-info; otherwise ")" would be good
3dcbac116732 * vc.el (vc-dired-mode): Extend comment for binding of
Michael Albinus <michael.albinus@gmx.de>
parents: 66325
diff changeset
2123 ;; enough as delimeter.
66325
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
2124 (set (make-local-variable 'directory-listing-before-filename-regexp)
48139
ae2a3a67e382 (vc-dired-move): Adapt dired-move-to-filename-regexp to its current
André Spiegel <spiegel@gnu.org>
parents: 47881
diff changeset
2125 (let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)")
48142
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2126 ;; In some locales, month abbreviations are as short as 2 letters,
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2127 ;; and they can be followed by ".".
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2128 (month (concat l l "+\\.?"))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2129 (s " ")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2130 (yyyy "[0-9][0-9][0-9][0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2131 (dd "[ 0-3][0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2132 (HH:MM "[ 0-2][0-9]:[0-5][0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2133 (seconds "[0-6][0-9]\\([.,][0-9]+\\)?")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2134 (zone "[-+][0-2][0-9][0-5][0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2135 (iso-mm-dd "[01][0-9]-[0-3][0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2136 (iso-time (concat HH:MM "\\(:" seconds "\\( ?" zone "\\)?\\)?"))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2137 (iso (concat "\\(\\(" yyyy "-\\)?" iso-mm-dd "[ T]" iso-time
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2138 "\\|" yyyy "-" iso-mm-dd "\\)"))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2139 (western (concat "\\(" month s "+" dd "\\|" dd "\\.?" s month "\\)"
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2140 s "+"
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2141 "\\(" HH:MM "\\|" yyyy "\\)"))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2142 (western-comma (concat month s "+" dd "," s "+" yyyy))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2143 ;; Japanese MS-Windows ls-lisp has one-digit months, and
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2144 ;; omits the Kanji characters after month and day-of-month.
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2145 (mm "[ 0-1]?[0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2146 (japanese
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2147 (concat mm l "?" s dd l "?" s "+"
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2148 "\\(" HH:MM "\\|" yyyy l "?" "\\)")))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2149 ;; the .* below ensures that we find the last match on a line
48139
ae2a3a67e382 (vc-dired-move): Adapt dired-move-to-filename-regexp to its current
André Spiegel <spiegel@gnu.org>
parents: 47881
diff changeset
2150 (concat ".*" s
48142
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2151 "\\(" western "\\|" western-comma "\\|" japanese "\\|" iso "\\)"
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2152 s "+")))
22356
a1f8c5a5c3e1 (vc-directory): Bind vc-dired-switches in order to pass switches to vc-dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 22345
diff changeset
2153 (and (boundp 'vc-dired-switches)
a1f8c5a5c3e1 (vc-directory): Bind vc-dired-switches in order to pass switches to vc-dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 22345
diff changeset
2154 vc-dired-switches
a1f8c5a5c3e1 (vc-directory): Bind vc-dired-switches in order to pass switches to vc-dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 22345
diff changeset
2155 (set (make-local-variable 'dired-actual-switches)
a1f8c5a5c3e1 (vc-directory): Bind vc-dired-switches in order to pass switches to vc-dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 22345
diff changeset
2156 vc-dired-switches))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2157 (set (make-local-variable 'vc-dired-terse-mode) vc-dired-terse-display)
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2158 (setq vc-dired-mode t))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2159
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2160 (defun vc-dired-toggle-terse-mode ()
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2161 "Toggle terse display in VC Dired."
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2162 (interactive)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2163 (if (not vc-dired-mode)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2164 nil
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2165 (setq vc-dired-terse-mode (not vc-dired-terse-mode))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2166 (if vc-dired-terse-mode
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2167 (vc-dired-hook)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2168 (revert-buffer))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2169
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2170 (defun vc-dired-mark-locked ()
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2171 "Mark all files currently locked."
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2172 (interactive)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2173 (dired-mark-if (let ((f (dired-get-filename nil t)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2174 (and f
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2175 (not (file-directory-p 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
2176 (not (vc-up-to-date-p f))))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2177 "locked file"))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2178
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2179 (define-key vc-dired-mode-map "*l" 'vc-dired-mark-locked)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2180
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2181 (defun vc-default-dired-state-info (backend file)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2182 (let ((state (vc-state file)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2183 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2184 ((stringp state) (concat "(" state ")"))
68384
1d4de26bcb1f (vc-default-dired-state-info): Pass FILE to vc-user-login-name.
André Spiegel <spiegel@gnu.org>
parents: 67885
diff changeset
2185 ((eq state 'edited) (concat "(" (vc-user-login-name 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
2186 ((eq state 'needs-merge) "(merge)")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2187 ((eq state 'needs-patch) "(patch)")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2188 ((eq state 'unlocked-changes) "(stale)"))))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2189
47842
f7c7cc74fde2 (vc-dired-reformat-line): As a temporary fix, remove all text
André Spiegel <spiegel@gnu.org>
parents: 47796
diff changeset
2190 (defun vc-dired-reformat-line (vc-info)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2191 "Reformat a directory-listing line.
47842
f7c7cc74fde2 (vc-dired-reformat-line): As a temporary fix, remove all text
André Spiegel <spiegel@gnu.org>
parents: 47796
diff changeset
2192 Replace various columns with version control information, VC-INFO.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2193 This code, like dired, assumes UNIX -l format."
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2194 (beginning-of-line)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2195 (when (re-search-forward
47881
2a95bf2d8eaf (vc-dired-reformat-line): Simplified. Handles text properties
André Spiegel <spiegel@gnu.org>
parents: 47842
diff changeset
2196 ;; Match link count, owner, group, size. Group may be missing,
2a95bf2d8eaf (vc-dired-reformat-line): Simplified. Handles text properties
André Spiegel <spiegel@gnu.org>
parents: 47842
diff changeset
2197 ;; and only the size is present in OS/2 -l format.
2a95bf2d8eaf (vc-dired-reformat-line): Simplified. Handles text properties
André Spiegel <spiegel@gnu.org>
parents: 47842
diff changeset
2198 "^..[drwxlts-]+ \\( *[0-9]+\\( [^ ]+ +\\([^ ]+ +\\)?[0-9]+\\)?\\) "
2a95bf2d8eaf (vc-dired-reformat-line): Simplified. Handles text properties
André Spiegel <spiegel@gnu.org>
parents: 47842
diff changeset
2199 (line-end-position) t)
2a95bf2d8eaf (vc-dired-reformat-line): Simplified. Handles text properties
André Spiegel <spiegel@gnu.org>
parents: 47842
diff changeset
2200 (replace-match (substring (concat vc-info " ") 0 10)
2a95bf2d8eaf (vc-dired-reformat-line): Simplified. Handles text properties
André Spiegel <spiegel@gnu.org>
parents: 47842
diff changeset
2201 t t nil 1)))
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
2202
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2203 (defun vc-dired-hook ()
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2204 "Reformat the listing according to version control.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2205 Called by dired after any portion of a vc-dired buffer has been read in."
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2206 (message "Getting version information... ")
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2207 (let (subdir filename (buffer-read-only nil))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2208 (goto-char (point-min))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2209 (while (not (eobp))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2210 (cond
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2211 ;; subdir header line
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2212 ((setq subdir (dired-get-subdir))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2213 ;; if the backend supports it, get the state
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2214 ;; of all files in this directory at once
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2215 (let ((backend (vc-responsible-backend subdir)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2216 (if (vc-find-backend-function backend 'dir-state)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2217 (vc-call-backend backend 'dir-state subdir)))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2218 (forward-line 1)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2219 ;; erase (but don't remove) the "total" line
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2220 (delete-region (point) (line-end-position))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2221 (beginning-of-line)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2222 (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
2223 ;; file line
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2224 ((setq filename (dired-get-filename nil t))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2225 (cond
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2226 ;; subdir
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2227 ((file-directory-p filename)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2228 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2229 ((member (file-name-nondirectory filename)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2230 vc-directory-exclusion-list)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2231 (let ((pos (point)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2232 (dired-kill-tree filename)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2233 (goto-char pos)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2234 (dired-kill-line)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2235 (vc-dired-terse-mode
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
2236 ;; Don't show directories in terse mode. Don't use
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
2237 ;; dired-kill-line to remove it, because in recursive listings,
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
2238 ;; that would remove the directory contents as well.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2239 (delete-region (line-beginning-position)
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
2240 (progn (forward-line 1) (point))))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2241 ((string-match "\\`\\.\\.?\\'" (file-name-nondirectory filename))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2242 (dired-kill-line))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2243 (t
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2244 (vc-dired-reformat-line nil)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2245 (forward-line 1))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2246 ;; ordinary 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
2247 ((and (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
2248 (not (and vc-dired-terse-mode
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2249 (vc-up-to-date-p filename))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2250 (vc-dired-reformat-line (vc-call dired-state-info filename))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2251 (forward-line 1))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2252 (t
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2253 (dired-kill-line))))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2254 ;; any other line
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2255 (t (forward-line 1))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2256 (vc-dired-purge))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2257 (message "Getting version information... done")
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2258 (save-restriction
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2259 (widen)
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
2260 (cond ((eq (count-lines (point-min) (point-max)) 1)
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
2261 (goto-char (point-min))
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
2262 (message "No files locked under %s" default-directory)))))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2263
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2264 (defun vc-dired-purge ()
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2265 "Remove empty subdirs."
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2266 (goto-char (point-min))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2267 (while (dired-get-subdir)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2268 (forward-line 2)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2269 (if (dired-get-filename nil t)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2270 (if (not (dired-next-subdir 1 t))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2271 (goto-char (point-max)))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2272 (forward-line -2)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2273 (if (not (string= (dired-current-directory) default-directory))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2274 (dired-do-kill-lines t "")
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2275 ;; We cannot remove the top level directory.
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2276 ;; Just make it look a little nicer.
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2277 (forward-line 1)
53283
019243f7a304 (vc-dired-purge): Avoid error from `kill-line'.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 52401
diff changeset
2278 (or (eobp) (kill-line))
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2279 (if (not (dired-next-subdir 1 t))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2280 (goto-char (point-max))))))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2281 (goto-char (point-min)))
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2282
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2283 (defun vc-dired-buffers-for-dir (dir)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2284 "Return a list of all vc-dired buffers that currently display DIR."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2285 (let (result)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2286 ;; Check whether dired is loaded.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2287 (when (fboundp 'dired-buffers-for-dir)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2288 (mapcar (lambda (buffer)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2289 (with-current-buffer buffer
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2290 (if vc-dired-mode
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2291 (setq result (append result (list buffer))))))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2292 (dired-buffers-for-dir 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
2293 result))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2294
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2295 (defun vc-dired-resynch-file (file)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2296 "Update the entries for FILE in any VC Dired buffers that list it."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2297 (let ((buffers (vc-dired-buffers-for-dir (file-name-directory file))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2298 (when buffers
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2299 (mapcar (lambda (buffer)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2300 (with-current-buffer buffer
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2301 (if (dired-goto-file file)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2302 ;; bind vc-dired-terse-mode to nil so that
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2303 ;; files won't vanish when they are checked in
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2304 (let ((vc-dired-terse-mode nil))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2305 (dired-do-redisplay 1)))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2306 buffers))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2307
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2308 ;;;###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
2309 (defun vc-directory (dir read-switches)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2310 "Create a buffer in VC Dired Mode for directory DIR.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2311
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2312 See Info node `VC Dired Mode'.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2313
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2314 With prefix arg READ-SWITCHES, specify a value to override
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2315 `dired-listing-switches' when generating the listing."
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2316 (interactive "DDired under VC (directory): \nP")
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2317 (let ((vc-dired-switches (concat vc-dired-listing-switches
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2318 (if vc-dired-recurse "R" ""))))
65405
ae5763b55d33 (vc-directory, vc-update-change-log): Throw an error on the attempt to
André Spiegel <spiegel@gnu.org>
parents: 64762
diff changeset
2319 (if (eq (string-match tramp-file-name-regexp dir) 0)
ae5763b55d33 (vc-directory, vc-update-change-log): Throw an error on the attempt to
André Spiegel <spiegel@gnu.org>
parents: 64762
diff changeset
2320 (error "Sorry, vc-directory does not work over Tramp"))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2321 (if read-switches
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2322 (setq vc-dired-switches
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2323 (read-string "Dired listing switches: "
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2324 vc-dired-switches)))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2325 (require 'dired)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2326 (require 'dired-aux)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2327 (switch-to-buffer
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2328 (dired-internal-noselect (expand-file-name (file-name-as-directory dir))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2329 vc-dired-switches
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2330 'vc-dired-mode))))
10475
2d9590603a06 Revert Jan 15 and Jan 5 changes.
Richard M. Stallman <rms@gnu.org>
parents: 10431
diff changeset
2331
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2332
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2333 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2334
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2335 (defun vc-snapshot-precondition (dir)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2336 "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
2337 If any file is not up-to-date, return the name of the first such file.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2338 \(This means, neither snapshot creation nor retrieval is allowed.\)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2339 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
2340 Otherwise, return nil."
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2341 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2342 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2343 (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
2344 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2345 (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
2346 (if (not (vc-up-to-date-p f)) (throw 'vc-locked-example f)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2347 (if (get-file-buffer f) (setq status 'visited)))))
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2348 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2349
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2350 ;;;###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
2351 (defun vc-create-snapshot (dir name branchp)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2352 "Descending recursively from DIR, make a snapshot called 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
2353 For each registered file, the version level of its latest version
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2354 becomes part of the named configuration. If the prefix argument
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2355 BRANCHP is given, the snapshot is made as a new branch and the files
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2356 are checked out in that new branch."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2357 (interactive
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2358 (list (read-file-name "Directory: " default-directory default-directory t)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2359 (read-string "New snapshot name: ")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2360 current-prefix-arg))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2361 (message "Making %s... " (if branchp "branch" "snapshot"))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2362 (if (file-directory-p dir) (setq dir (file-name-as-directory dir)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2363 (vc-call-backend (vc-responsible-backend dir)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2364 'create-snapshot dir name branchp)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2365 (message "Making %s... done" (if branchp "branch" "snapshot")))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2366
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2367 (defun vc-default-create-snapshot (backend dir name branchp)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2368 (when branchp
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2369 (error "VC backend %s does not support module branches" backend))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2370 (let ((result (vc-snapshot-precondition dir)))
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2371 (if (stringp result)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2372 (error "File %s is not up-to-date" result)
4656
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
2373 (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
2374 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2375 (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
2376 (vc-call assign-name f name))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2377
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2378 ;;;###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
2379 (defun vc-retrieve-snapshot (dir name)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2380 "Descending recursively from DIR, retrieve the snapshot called NAME.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2381 If NAME is empty, it refers to the latest versions.
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2382 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
2383 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
2384 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
2385 (interactive
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2386 (list (read-file-name "Directory: " default-directory default-directory t)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2387 (read-string "Snapshot name to retrieve (default latest versions): ")))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2388 (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
2389 (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
2390 (format "Updating %s... " (abbreviate-file-name dir))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2391 (format "Retrieving snapshot into %s... "
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2392 (abbreviate-file-name dir)))))
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
2393 (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
2394 (vc-call-backend (vc-responsible-backend dir)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2395 'retrieve-snapshot dir name update)
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
2396 (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
2397
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2398 (defun vc-default-retrieve-snapshot (backend dir name update)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2399 (if (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
2400 (progn
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2401 (vc-file-tree-walk
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2402 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2403 (lambda (f) (and
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
2404 (vc-up-to-date-p f)
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
2405 (vc-error-occurred
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
2406 (vc-call checkout f nil "")
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
2407 (if update (vc-resynch-buffer f t 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
2408 (let ((result (vc-snapshot-precondition dir)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2409 (if (stringp result)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2410 (error "File %s is locked" result)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2411 (setq update (and (eq result 'visited) update))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2412 (vc-file-tree-walk
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2413 dir
37544
94c0503d3f2d (vc-next-action-on-file): Only force buffer+file to writable
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36710
diff changeset
2414 (lambda (f) (vc-error-occurred
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
2415 (vc-call checkout f nil name)
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
2416 (if update (vc-resynch-buffer f t t)))))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2417
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2418 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2419
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2420 ;;;###autoload
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2421 (defun vc-print-log (&optional focus-rev)
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
2422 "List the change log of the current buffer in a window.
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
2423 If FOCUS-REV is non-nil, leave the point at that revision."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2424 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2425 (vc-ensure-vc-buffer)
54562
f52b856dbc77 (vc-print-log): Undo prev change, use new function vc-arg-list from
André Spiegel <spiegel@gnu.org>
parents: 54553
diff changeset
2426 (let ((file buffer-file-name))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2427 (or focus-rev (setq focus-rev (vc-workfile-version file)))
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
2428 ;; 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
2429 ;; 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
2430 ;; buffer can be accessed by the command.
54784
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2431 (condition-case err
54463
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
2432 (progn
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
2433 (vc-call print-log file "*vc-change-log*")
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
2434 (set-buffer "*vc-change-log*"))
54784
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2435 (wrong-number-of-arguments
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2436 ;; If this error came from the above call to print-log, try again
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2437 ;; without the optional buffer argument (for backward compatibility).
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2438 ;; Otherwise, resignal.
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2439 (if (or (not (eq (cadr err)
55100
6c3a528ee0ca (vc-print-log): Fix code that handles wrong-number-of-arguments in backend
Juanma Barranquero <lekktu@gmail.com>
parents: 54911
diff changeset
2440 (indirect-function
6c3a528ee0ca (vc-print-log): Fix code that handles wrong-number-of-arguments in backend
Juanma Barranquero <lekktu@gmail.com>
parents: 54911
diff changeset
2441 (vc-find-backend-function (vc-backend file)
54784
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2442 'print-log))))
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2443 (not (eq (caddr err) 2)))
55100
6c3a528ee0ca (vc-print-log): Fix code that handles wrong-number-of-arguments in backend
Juanma Barranquero <lekktu@gmail.com>
parents: 54911
diff changeset
2444 (signal (car err) (cdr err))
54784
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2445 ;; for backward compatibility
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2446 (vc-call print-log file)
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2447 (set-buffer "*vc*"))))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2448 (pop-to-buffer (current-buffer))
47765
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
2449 (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
2450 (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
2451 `(let ((inhibit-read-only 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
2452 (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
2453 (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
2454 (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
2455 (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
2456 (goto-char (point-min))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2457 (if (looking-at "[\b\t\n\v\f\r ]+")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2458 (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
2459 (shrink-window-if-larger-than-buffer)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2460 ;; move point to the log entry for the current version
47748
12d99d7af574 (vc-print-log): Unconditionally use `show-log-entry'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47227
diff changeset
2461 (vc-call-backend ',(vc-backend file)
12d99d7af574 (vc-print-log): Unconditionally use `show-log-entry'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47227
diff changeset
2462 'show-log-entry
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2463 ',focus-rev)
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
2464 (set-buffer-modified-p nil)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2465
47760
15d0c5379959 (vc-default-show-log-entry): Fix typo.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47748
diff changeset
2466 (defun vc-default-show-log-entry (backend rev)
51696
ca4a1b3128f7 (vc-default-show-log-entry): Use with-no-warnings.
Richard M. Stallman <rms@gnu.org>
parents: 51627
diff changeset
2467 (with-no-warnings
ca4a1b3128f7 (vc-default-show-log-entry): Use with-no-warnings.
Richard M. Stallman <rms@gnu.org>
parents: 51627
diff changeset
2468 (log-view-goto-rev rev)))
47748
12d99d7af574 (vc-print-log): Unconditionally use `show-log-entry'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47227
diff changeset
2469
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2470 (defun vc-default-comment-history (backend file)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2471 "Return a string with all log entries stored in BACKEND for 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
2472 (if (vc-find-backend-function backend 'print-log)
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2473 (with-current-buffer "*vc*"
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2474 (vc-call print-log file)
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2475 (vc-call wash-log file)
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2476 (buffer-string))))
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2477
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2478 (defun vc-default-wash-log (backend file)
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2479 "Remove all non-comment information from log output.
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2480 This default implementation works for RCS logs; backends should override
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2481 it if their logs are not in RCS format."
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2482 (let ((separator (concat "^-+\nrevision [0-9.]+\ndate: .*\n"
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2483 "\\(branches: .*;\n\\)?"
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2484 "\\(\\*\\*\\* empty log message \\*\\*\\*\n\\)?")))
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2485 (goto-char (point-max)) (forward-line -1)
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2486 (while (looking-at "=*\n")
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2487 (delete-char (- (match-end 0) (match-beginning 0)))
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2488 (forward-line -1))
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2489 (goto-char (point-min))
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2490 (if (looking-at "[\b\t\n\v\f\r ]+")
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2491 (delete-char (- (match-end 0) (match-beginning 0))))
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2492 (goto-char (point-min))
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2493 (re-search-forward separator nil t)
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2494 (delete-region (point-min) (point))
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2495 (while (re-search-forward separator nil t)
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2496 (delete-region (match-beginning 0) (match-end 0)))))
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2497
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2498 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2499 (defun vc-revert-buffer ()
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2500 "Revert the current buffer's file to the version it was based on.
952
ba6a993500d4 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 927
diff changeset
2501 This asks for confirmation if the buffer contents are not identical
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2502 to that version. This function does not automatically pick up newer
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2503 changes found in the master file; use \\[universal-argument] \\[vc-next-action] to do so."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2504 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2505 (vc-ensure-vc-buffer)
43584
15030afab27a (vc-revert-buffer): If the buffer is not saved, prompt the user to do
André Spiegel <spiegel@gnu.org>
parents: 43532
diff changeset
2506 ;; Make sure buffer is saved. If the user says `no', abort since
15030afab27a (vc-revert-buffer): If the buffer is not saved, prompt the user to do
André Spiegel <spiegel@gnu.org>
parents: 43532
diff changeset
2507 ;; we cannot show the changes and ask for confirmation to discard them.
15030afab27a (vc-revert-buffer): If the buffer is not saved, prompt the user to do
André Spiegel <spiegel@gnu.org>
parents: 43532
diff changeset
2508 (vc-buffer-sync nil)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2509 (let ((file buffer-file-name)
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
2510 ;; This operation should always ask for confirmation.
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
2511 (vc-suppress-confirm nil)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2512 (obuf (current-buffer))
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2513 status)
33548
714a4c4917cd (vc-revert-buffer): Ask for confirmation if file seems up-to-date.
André Spiegel <spiegel@gnu.org>
parents: 33546
diff changeset
2514 (if (vc-up-to-date-p file)
714a4c4917cd (vc-revert-buffer): Ask for confirmation if file seems up-to-date.
André Spiegel <spiegel@gnu.org>
parents: 33546
diff changeset
2515 (unless (yes-or-no-p "File seems up-to-date. Revert anyway? ")
714a4c4917cd (vc-revert-buffer): Ask for confirmation if file seems up-to-date.
André Spiegel <spiegel@gnu.org>
parents: 33546
diff changeset
2516 (error "Revert canceled")))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2517 (unless (vc-workfile-unchanged-p file)
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
2518 (message "Finding changes...")
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2519 ;; vc-diff selects the new window, which is not what we want:
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2520 ;; if the new window is on another frame, that'd require the user
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2521 ;; moving her mouse to answer the yes-or-no-p question.
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
2522 (let* ((vc-disable-async-diff (not vc-allow-async-revert))
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
2523 (win (save-selected-window
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
2524 (setq status (vc-diff nil t)) (selected-window))))
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2525 (vc-exec-after `(message nil))
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2526 (when status
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2527 (unwind-protect
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2528 (unless (yes-or-no-p "Discard changes? ")
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2529 (error "Revert canceled"))
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2530 (select-window win)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2531 (if (one-window-p t)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2532 (if (window-dedicated-p (selected-window))
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2533 (make-frame-invisible))
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2534 (delete-window))))))
21329
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2535 (set-buffer obuf)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2536 ;; Do the reverting
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2537 (message "Reverting %s..." file)
32093
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2538 (vc-revert-file 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
2539 (message "Reverting %s...done" file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2540
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2541 ;;;###autoload
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2542 (defun vc-update ()
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2543 "Update the current buffer's file to the latest version on its branch.
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2544 If the file contains no changes, and is not locked, then this simply replaces
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2545 the working file with the latest version on its branch. If the file contains
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2546 changes, and the backend supports merging news, then any recent changes from
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2547 the current branch are merged into the working file."
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2548 (interactive)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2549 (vc-ensure-vc-buffer)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2550 (vc-buffer-sync nil)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2551 (let ((file buffer-file-name))
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2552 (if (vc-up-to-date-p file)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2553 (vc-checkout file nil "")
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2554 (if (eq (vc-checkout-model file) 'locking)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2555 (if (eq (vc-state file) 'edited)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2556 (error
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2557 (substitute-command-keys
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2558 "File is locked--type \\[vc-revert-buffer] to discard changes"))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2559 (error
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2560 (substitute-command-keys
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2561 "Unexpected file state (%s)--type \\[vc-next-action] to correct")
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2562 (vc-state file)))
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2563 (if (not (vc-find-backend-function (vc-backend file) 'merge-news))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2564 (error "Sorry, merging news is not implemented for %s"
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2565 (vc-backend file))
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2566 (vc-call merge-news file)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2567 (vc-resynch-window file t t))))))
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2568
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2569 (defun vc-version-backup-file (file &optional rev)
33564
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
2570 "Return name of backup file for revision REV of FILE.
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
2571 If version backups should be used for FILE, and there exists
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2572 such a backup for REV or the current workfile version of file,
33564
d8c822512b62 (vc-version-diff): Bind inhibit-read-only when inserting text.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 33562
diff changeset
2573 return its name; otherwise return nil."
32748
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
2574 (when (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
2575 (let ((backup-file (vc-version-backup-file-name file 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
2576 (if (file-exists-p backup-file)
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
2577 backup-file
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
2578 ;; there is no automatic backup, but maybe the user made one manually
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
2579 (setq backup-file (vc-version-backup-file-name file rev 'manual))
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
2580 (if (file-exists-p backup-file)
e2cb0aef151a (vc-checkout): Added `-p' suffix in call to vc-make-version-backups-p;
André Spiegel <spiegel@gnu.org>
parents: 32344
diff changeset
2581 backup-file)))))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2582
67574
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2583 (defun vc-default-revert (backend file contents-done)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2584 (unless contents-done
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2585 (let ((rev (vc-workfile-version file))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2586 (file-buffer (or (get-file-buffer file) (current-buffer))))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2587 (message "Checking out %s..." file)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2588 (let ((failed t)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2589 (backup-name (car (find-backup-file-name file))))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2590 (when backup-name
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2591 (copy-file file backup-name 'ok-if-already-exists 'keep-date)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2592 (unless (file-writable-p file)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2593 (set-file-modes file (logior (file-modes file) 128))))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2594 (unwind-protect
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2595 (let ((coding-system-for-read 'no-conversion)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2596 (coding-system-for-write 'no-conversion))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2597 (with-temp-file file
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2598 (let ((outbuf (current-buffer)))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2599 ;; Change buffer to get local value of vc-checkout-switches.
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2600 (with-current-buffer file-buffer
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2601 (let ((default-directory (file-name-directory file)))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2602 (vc-call find-version file rev outbuf)))))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2603 (setq failed nil))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2604 (when backup-name
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2605 (if failed
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2606 (rename-file backup-name file 'ok-if-already-exists)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2607 (and (not vc-make-backup-files) (delete-file backup-name))))))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2608 (message "Checking out %s...done" file))))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2609
32093
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2610 (defun vc-revert-file (file)
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2611 "Revert FILE back to the version it was based on."
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2612 (with-vc-properties
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2613 file
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2614 (let ((backup-file (vc-version-backup-file file)))
39000
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
2615 (when backup-file
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2616 (copy-file backup-file file 'ok-if-already-exists 'keep-date)
39000
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
2617 (vc-delete-automatic-version-backups file))
60cf6aee9fd1 (vc-revert-file): Call the backend even if the FILE's
André Spiegel <spiegel@gnu.org>
parents: 38726
diff changeset
2618 (vc-call revert file backup-file))
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2619 `((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
2620 (vc-checkout-time . ,(nth 5 (file-attributes file)))))
32093
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2621 (vc-resynch-buffer file t t))
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2622
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2623 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2624 (defun vc-cancel-version (norevert)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2625 "Get rid of most recently checked in version of this file.
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2626 A prefix argument NOREVERT means do not revert the buffer afterwards."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2627 (interactive "P")
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2628 (vc-ensure-vc-buffer)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2629 (let* ((file buffer-file-name)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2630 (backend (vc-backend file))
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2631 (target (vc-workfile-version 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
2632 (cond
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2633 ((not (vc-find-backend-function backend 'cancel-version))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2634 (error "Sorry, canceling versions is not supported under %s" backend))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2635 ((not (vc-call latest-on-branch-p 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
2636 (error "This is not the latest version; VC cannot cancel it"))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2637 ((not (vc-up-to-date-p file))
53874
978c77351d66 (with-vc-file): Fix unsafe uses of error.
Andreas Schwab <schwab@suse.de>
parents: 53839
diff changeset
2638 (error "%s" (substitute-command-keys "File is not up to date; use \\[vc-revert-buffer] to discard changes"))))
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2639 (if (null (yes-or-no-p (format "Remove version %s from master? " target)))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2640 (error "Aborted")
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2641 (setq norevert (or norevert (not
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2642 (yes-or-no-p "Revert buffer to most recent remaining version? "))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2643
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2644 (message "Removing last change from %s..." file)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2645 (with-vc-properties
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2646 file
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2647 (vc-call cancel-version file norevert)
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2648 `((vc-state . ,(if norevert 'edited 'up-to-date))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
2649 (vc-checkout-time . ,(if norevert
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
2650 0
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2651 (nth 5 (file-attributes file))))
32189
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2652 (vc-workfile-version . nil)))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2653 (message "Removing last change from %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
2654
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2655 (cond
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2656 (norevert ;; clear version headers and mark the buffer modified
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2657 (set-visited-file-name file)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2658 (when (not vc-make-backup-files)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2659 ;; inhibit backup for this buffer
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2660 (make-local-variable 'backup-inhibited)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2661 (setq backup-inhibited t))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2662 (setq buffer-read-only nil)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2663 (vc-clear-headers)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2664 (vc-mode-line file)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2665 (vc-dired-resynch-file file))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2666 (t ;; revert buffer to file on disk
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2667 (vc-resynch-buffer file t 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
2668 (message "Version %s has been removed from the master" target))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2669
38595
396f97177ef1 (vc-switch-backend): Fix autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38442
diff changeset
2670 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2671 (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
2672 "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
2673 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
2674 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
2675 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
2676 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
2677 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
2678 (interactive
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2679 (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
2680 (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
2681 (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
2682 (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
2683 (backends nil))
66549
13a55a7627fd (vc-switch-backend): Better error message if the buffer is not visiting a
André Spiegel <spiegel@gnu.org>
parents: 66425
diff changeset
2684 (unless backend
13a55a7627fd (vc-switch-backend): Better error message if the buffer is not visiting a
André Spiegel <spiegel@gnu.org>
parents: 66425
diff changeset
2685 (error "File %s is not under version control" buffer-file-name))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2686 ;; Find the registered backends.
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2687 (dolist (backend vc-handled-backends)
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2688 (when (vc-call-backend backend 'registered buffer-file-name)
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2689 (push backend backends)))
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2690 ;; Find the next backend.
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2691 (let ((def (car (delq backend (append (memq backend backends) backends))))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2692 (others (delete backend backends)))
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2693 (cond
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2694 ((null others) (error "No other backend to switch to"))
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2695 (current-prefix-arg
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2696 (intern
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2697 (upcase
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2698 (completing-read
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2699 (format "Switch to backend [%s]: " def)
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2700 (mapcar (lambda (b) (list (downcase (symbol-name b)))) backends)
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2701 nil t nil nil (downcase (symbol-name def))))))
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2702 (t def))))))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2703 (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
2704 (vc-file-clearprops file)
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2705 (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
2706 ;; 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
2707 (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
2708 (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
2709 (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
2710 (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
2711
38726
2dddcf515155 (vc-transfer-file): Fix malformed autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38608
diff changeset
2712 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2713 (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
2714 "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
2715 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
2716 \(i.e. it comes earlier in `vc-handled-backends'), then register FILE in
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2717 NEW-BACKEND, using the version number from the current backend as the
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2718 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
2719 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
2720 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
2721 \(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
2722 (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
2723 (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
2724 (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
2725 (move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2726 (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
2727 ;; 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
2728 (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
2729 (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
2730 (comment nil))
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2731 (if (eq old-backend new-backend)
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2732 (error "%s is the current backend of %s" new-backend file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2733 (if registered
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2734 (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
2735 ;; `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
2736 (vc-switch-backend file old-backend)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2737 (let* ((rev (vc-workfile-version file))
43725
60a9d71aad02 (vc-transfer-file): Use `make-temp-file' instead of `make-temp-name'.
André Spiegel <spiegel@gnu.org>
parents: 43586
diff changeset
2738 (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
2739 (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
2740 ;; 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
2741 (unwind-protect
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2742 (progn
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2743 (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
2744 (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
2745 ;; 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
2746 ;; 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
2747 ;; 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
2748 (if unmodified-file
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2749 (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
2750 'ok-if-already-exists 'keep-date)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2751 (if (y-or-n-p "Get base version from master? ")
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2752 (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
2753 (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
2754 (when modified-file
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2755 (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
2756 (unless (eq (vc-checkout-model file) 'implicit)
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2757 (vc-checkout file t nil))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2758 (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
2759 (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
2760 (when move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2761 (vc-switch-backend file old-backend)
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2762 (setq comment (vc-call comment-history file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2763 (vc-call unregister file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2764 (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
2765 (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
2766 (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
2767 (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
2768 (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
2769
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2770 (defun vc-default-unregister (backend file)
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2771 "Default implementation of `vc-unregister', signals an error."
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2772 (error "Unregistering files is not supported for %s" backend))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2773
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2774 (defun vc-default-receive-file (backend file rev)
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2775 "Let BACKEND receive FILE from another version control system."
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2776 (vc-call-backend backend 'register file rev ""))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2777
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2778 (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
2779 "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
2780 (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
2781 (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
2782 (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
2783 (masters
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2784 ;; 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
2785 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2786 (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
2787 templates)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2788 (if (or (file-symlink-p oldmaster)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2789 (file-symlink-p (file-name-directory oldmaster)))
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2790 (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
2791 (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
2792 oldmaster
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2793 (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
2794 ;; 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
2795 (dolist (f masters)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2796 (if (and f (string= (file-name-directory (expand-file-name f)) dir))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2797 (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
2798 ;; 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
2799 (dolist (f masters)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2800 (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
2801 (file-directory-p dir))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2802 (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
2803 (error "New file lacks a version control directory")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2804
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2805 (defun vc-delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2806 "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
2807 (interactive "fVC delete file: ")
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2808 (let ((buf (get-file-buffer file))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2809 (backend (vc-backend file)))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2810 (unless backend
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2811 (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
2812 (file-name-nondirectory file)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2813 (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
2814 (error "Deleting files under %s is not supported in VC" backend))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2815 (if (and buf (buffer-modified-p buf))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2816 (error "Please save files before deleting them"))
65689
96187e7edd1b 2005-09-25 Romain Francoise <romain@orebokech.com>
Romain Francoise <romain@orebokech.com>
parents: 65680
diff changeset
2817 (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
2818 (file-name-nondirectory file)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2819 (error "Abort!"))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2820 (unless (or (file-directory-p file) (null make-backup-files))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2821 (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
2822 (let ((backup-inhibited nil))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2823 (backup-buffer))))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2824 (vc-call delete-file file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2825 ;; If the backend hasn't deleted the file itself, let's do it for him.
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2826 (if (file-exists-p file) (delete-file file))))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2827
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2828 (defun vc-default-rename-file (backend old new)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2829 (condition-case nil
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2830 (add-name-to-file old new)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2831 (error (rename-file old new)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2832 (vc-delete-file old)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2833 (with-current-buffer (find-file-noselect new)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2834 (vc-register)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2835
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2836 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2837 (defun vc-rename-file (old new)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2838 "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
2839 (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
2840 (let ((oldbuf (get-file-buffer old)))
4991
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2841 (if (and oldbuf (buffer-modified-p oldbuf))
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
2842 (error "Please save files before moving them"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2843 (if (get-file-buffer new)
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
2844 (error "Already editing new file name"))
4991
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2845 (if (file-exists-p new)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2846 (error "New file already exists"))
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2847 (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
2848 (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
2849 (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
2850 (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
2851 (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
2852 (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
2853 ;; Move the actual file (unless the backend did it already)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2854 (if (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
2855 ;; ?? 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
2856 ;; We should really check out a new copy if the old copy was precisely equal
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2857 ;; to some checked in version. However, testing for this is tricky....
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2858 (if oldbuf
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2859 (with-current-buffer oldbuf
15227
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
2860 (let ((buffer-read-only buffer-read-only))
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
2861 (set-visited-file-name new))
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
2862 (vc-backend new)
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
2863 (vc-mode-line 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
2864 (set-buffer-modified-p nil)))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2865
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2866 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2867 (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
2868 "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
2869 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
2870 directory.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2871
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2872 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
2873
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2874 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
2875 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
2876 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
2877
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2878 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
2879 log entries should be gathered."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2880 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2881 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2882 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2883 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2884 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2885 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2886 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2887 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2888 (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
2889 (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
2890 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2891 (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
2892 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2893 (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
2894 ;; 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
2895 ;; 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
2896 ;; 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
2897 nil)))
65405
ae5763b55d33 (vc-directory, vc-update-change-log): Throw an error on the attempt to
André Spiegel <spiegel@gnu.org>
parents: 64762
diff changeset
2898 (dolist (file (or args (list default-directory)))
ae5763b55d33 (vc-directory, vc-update-change-log): Throw an error on the attempt to
André Spiegel <spiegel@gnu.org>
parents: 64762
diff changeset
2899 (if (eq (string-match tramp-file-name-regexp file) 0)
ae5763b55d33 (vc-directory, vc-update-change-log): Throw an error on the attempt to
André Spiegel <spiegel@gnu.org>
parents: 64762
diff changeset
2900 (error "Sorry, vc-update-change-log does not work over Tramp")))
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2901 (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
2902 '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
2903
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2904 (defun vc-default-update-changelog (backend files)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2905 "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
2906 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
2907 ;; 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
2908 (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
2909 (changelog (find-change-log))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2910 ;; 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
2911 (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
2912 (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
2913 (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
2914 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
2915 (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
2916 (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
2917 (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
2918 (user-full-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2919 (user-login-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2920 (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
2921 (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
2922 user-mail-address)))
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2923 (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
2924 (barf-if-buffer-read-only)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2925 (vc-buffer-sync)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2926 (undo-boundary)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2927 (goto-char (point-min))
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2928 (push-mark)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2929 (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
2930 (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
2931 (unwind-protect
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2932 (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
2933 (setq default-directory odefault)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2934 (if (eq 0 (apply 'call-process
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2935 (expand-file-name "rcs2log"
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2936 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
2937 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
2938 "-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
2939 "-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
2940 "\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
2941 "\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
2942 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2943 (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
2944 (file-relative-name
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2945 (if (file-name-absolute-p f)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2946 f
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2947 (concat odefault f))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2948 files)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2949 "done"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2950 (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
2951 (erase-buffer)
59011
816dc38b1981 (vc-default-update-changelog): Use insert-file-contents, rather than
André Spiegel <spiegel@gnu.org>
parents: 58642
diff changeset
2952 (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
2953 "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
2954 (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
2955 (delete-file tempfile)))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2956
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
2957 ;; Annotate functionality
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2958
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2959 ;; 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
2960 ;; 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
2961 ;; 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
2962 ;; 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
2963 ;; 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
2964 (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
2965
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2966 ;; internal buffer-local variables
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2967 (defvar vc-annotate-backend nil)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2968 (defvar vc-annotate-parent-file nil)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2969 (defvar vc-annotate-parent-rev nil)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2970 (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
2971
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2972 (defconst vc-annotate-font-lock-keywords
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2973 ;; 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
2974 '((vc-annotate-lines)))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2975
53663
34fd515d8bb8 (vc-annotate-mode): Inherit from fundamental-mode and activate
André Spiegel <spiegel@gnu.org>
parents: 53630
diff changeset
2976 (define-derived-mode vc-annotate-mode fundamental-mode "Annotate"
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2977 "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
2978
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2979 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
2980 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
2981 menu items."
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2982 (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
2983 (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
2984 '(vc-annotate-font-lock-keywords t))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2985 (view-mode 1))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2986
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2987 (defun vc-annotate-display-default (ratio)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2988 "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
2989 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
2990 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
2991 (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
2992 (message "Redisplaying annotation...")
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2993 (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
2994 (message "Redisplaying annotation...done"))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2995
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2996 (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
2997 "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
2998 ;; 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
2999 (caar (last color-map)))
67767
f4a3c7808545 (vc-annotate-car-last-cons): Defn moved up.
Richard M. Stallman <rms@gnu.org>
parents: 67755
diff changeset
3000
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3001 (defun vc-annotate-display-autoscale (&optional full)
57114
deddb5e7acc3 (annotate-time): Document point handling.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56952
diff changeset
3002 "Highlight the output of \\[vc-annotate] using an autoscaled color map.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3003 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
3004 oldest annotation in the buffer, or, with prefix argument FULL, to
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3005 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
3006 (interactive "P")
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3007 (let ((newest 0.0)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3008 (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
3009 (current (vc-annotate-convert-time (current-time)))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3010 date)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3011 (message "Redisplaying annotation...")
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3012 ;; 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
3013 (save-excursion
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3014 (goto-char (point-min))
57906
ce81228800f3 (vc-annotate-display-autoscale): Make sure
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57904
diff changeset
3015 (while (setq date (prog1 (vc-call-backend vc-annotate-backend
ce81228800f3 (vc-annotate-display-autoscale): Make sure
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57904
diff changeset
3016 'annotate-time)
ce81228800f3 (vc-annotate-display-autoscale): Make sure
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57904
diff changeset
3017 (forward-line 1)))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3018 (if (> date newest)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3019 (setq newest date))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3020 (if (< date oldest)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3021 (setq oldest date))))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3022 (vc-annotate-display
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3023 (/ (- (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
3024 (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
3025 (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
3026 (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
3027 (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
3028 (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
3029 (- current oldest)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3030 (- current newest))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3031 (format "Spanned to %.1f days old" (- current oldest))))))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3032
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3033 ;; Menu -- Using easymenu.el
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3034 (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
3035 "VC Annotate Display Menu"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3036 `("VC-Annotate"
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3037 ["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
3038 (setq vc-annotate-display-mode nil)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3039 (vc-annotate-display-select))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3040 :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
3041 ,@(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
3042 (mapcar (lambda (element)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3043 (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
3044 `[,(format "Span %.1f days" days)
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3045 (vc-annotate-display-select nil ,days)
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3046 :style toggle :selected
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3047 (eql vc-annotate-display-mode ,days) ]))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3048 vc-annotate-menu-elements))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3049 ["Span ..."
67882
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3050 (vc-annotate-display-select
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3051 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
3052 "--"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3053 ["Span to Oldest"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3054 (unless (eq vc-annotate-display-mode 'scale)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3055 (vc-annotate-display-select nil 'scale))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3056 :style toggle :selected
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3057 (eq vc-annotate-display-mode 'scale)]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3058 ["Span Oldest->Newest"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3059 (unless (eq vc-annotate-display-mode 'fullscale)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3060 (vc-annotate-display-select nil 'fullscale))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3061 :style toggle :selected
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3062 (eq vc-annotate-display-mode 'fullscale)]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3063 "--"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3064 ["Annotate previous revision" vc-annotate-prev-version]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3065 ["Annotate next revision" vc-annotate-next-version]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3066 ["Annotate revision at line" vc-annotate-revision-at-line]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3067 ["Annotate revision previous to line" vc-annotate-revision-previous-to-line]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3068 ["Annotate latest revision" vc-annotate-workfile-version]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3069 ["Show log of revision at line" vc-annotate-show-log-revision-at-line]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3070 ["Show diff of revision at line" vc-annotate-show-diff-revision-at-line]))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3071
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3072 (defun vc-annotate-display-select (&optional buffer mode)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3073 "Highlight the output of \\[vc-annotate].
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3074 By default, the current buffer is highlighted, unless overridden by
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3075 BUFFER. `vc-annotate-display-mode' specifies the highlighting mode to
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3076 use; you may override this using the second optional arg MODE."
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3077 (interactive)
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3078 (if 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
3079 (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
3080 (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
3081 ;; 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
3082 (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
3083 (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
3084 ;; 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
3085 ((eq vc-annotate-display-mode 'scale)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3086 (vc-annotate-display-autoscale))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3087 ((eq vc-annotate-display-mode 'fullscale)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3088 (vc-annotate-display-autoscale t))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3089 ((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
3090 (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
3091 (/ vc-annotate-display-mode
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3092 (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
3093 (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
3094 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
3095
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3096 ;;;###autoload
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3097 (defun vc-annotate (file rev &optional display-mode buf)
63262
10744649cbb8 (vc-annotate): Fix spellings in docstrings.
Juanma Barranquero <lekktu@gmail.com>
parents: 62610
diff changeset
3098 "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
3099
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3100 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
3101 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
3102 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
3103 youngest, and intermediate colors indicate intermediate ages. By
39233
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3104 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
3105 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
3106
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3107 With a prefix argument, this command asks two questions in the
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3108 minibuffer. First, you may enter a version number; then the buffer
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3109 displays and annotates that version instead of the current version
39388
bc299a98338c Doc fix
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39309
diff changeset
3110 \(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
3111 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
3112 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
3113 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
3114 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
3115
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3116 Customization variables:
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3117
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3118 `vc-annotate-menu-elements' customizes the menu elements of the
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3119 mode-specific menu. `vc-annotate-color-map' and
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3120 `vc-annotate-very-old-color' defines the mapping of time to
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3121 colors. `vc-annotate-background' specifies the background color."
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3122 (interactive
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3123 (save-current-buffer
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3124 (vc-ensure-vc-buffer)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3125 (list buffer-file-name
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3126 (let ((def (vc-workfile-version buffer-file-name)))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3127 (if (null current-prefix-arg) def
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3128 (read-string
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3129 (format "Annotate from version (default %s): " def)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3130 nil nil def)))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3131 (if (null current-prefix-arg)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3132 vc-annotate-display-mode
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3133 (float (string-to-number
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3134 (read-string "Annotate span days (default 20): "
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3135 nil nil "20")))))))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
3136 (vc-ensure-vc-buffer)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3137 (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
3138 (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
3139 (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
3140 ;; 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
3141 ;; 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
3142 ;; strange results occasionally in the case of REV != WORKFILE-REV.
19ab508f832f (vc-annotate): Arrange for point to end up at the same
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70006
diff changeset
3143 (current-line (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
3144 (message "Annotating...")
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3145 ;; 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
3146 ;; 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
3147 ;; revision, so we should update the buffer's name.
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3148 (if buf (with-current-buffer buf
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3149 (rename-buffer temp-buffer-name t)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3150 ;; In case it had to be uniquified.
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3151 (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
3152 (with-output-to-temp-buffer temp-buffer-name
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3153 (vc-call annotate-command file (get-buffer temp-buffer-name) rev)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3154 ;; we must setup the mode first, and then set our local
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3155 ;; variables before the show-function is called at the exit of
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3156 ;; with-output-to-temp-buffer
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3157 (with-current-buffer temp-buffer-name
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3158 (if (not (equal major-mode 'vc-annotate-mode))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3159 (vc-annotate-mode))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3160 (set (make-local-variable 'vc-annotate-backend) (vc-backend file))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3161 (set (make-local-variable 'vc-annotate-parent-file) file)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3162 (set (make-local-variable 'vc-annotate-parent-rev) rev)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3163 (set (make-local-variable 'vc-annotate-parent-display-mode)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3164 display-mode)))
70007
19ab508f832f (vc-annotate): Arrange for point to end up at the same
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70006
diff changeset
3165 (when current-line
19ab508f832f (vc-annotate): Arrange for point to end up at the same
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 70006
diff changeset
3166 (goto-line current-line temp-buffer-name))
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3167 (message "Annotating... done")))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3168
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3169 (defun vc-annotate-prev-version (prefix)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3170 "Visit the annotation of the version previous to this one.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3171
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3172 With a numeric prefix argument, annotate the version that many
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3173 versions previous."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3174 (interactive "p")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3175 (vc-annotate-warp-version (- 0 prefix)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3176
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3177 (defun vc-annotate-next-version (prefix)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3178 "Visit the annotation of the version after this one.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3179
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3180 With a numeric prefix argument, annotate the version that many
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3181 versions after."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3182 (interactive "p")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3183 (vc-annotate-warp-version prefix))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3184
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3185 (defun vc-annotate-workfile-version ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3186 "Visit the annotation of the workfile version of this file."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3187 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3188 (if (not (equal major-mode 'vc-annotate-mode))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3189 (message "Cannot be invoked outside of a vc annotate buffer")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3190 (let ((warp-rev (vc-workfile-version vc-annotate-parent-file)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3191 (if (equal warp-rev vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3192 (message "Already at version %s" warp-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3193 (vc-annotate-warp-version warp-rev)))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3194
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3195 (defun vc-annotate-extract-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3196 "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
3197 ;; 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
3198 (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
3199
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3200 (defun vc-annotate-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3201 "Visit the annotation of the version identified in the current line."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3202 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3203 (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
3204 (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
3205 (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
3206 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3207 (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
3208 (if (equal rev-at-line vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3209 (message "Already at version %s" rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3210 (vc-annotate-warp-version rev-at-line))))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3211
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3212 (defun vc-annotate-revision-previous-to-line ()
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
3213 "Visit the annotation of the version before the version at line."
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3214 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3215 (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
3216 (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
3217 (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
3218 (prev-rev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3219 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3220 (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
3221 (setq prev-rev
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3222 (vc-call previous-version vc-annotate-parent-file rev-at-line))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3223 (vc-annotate-warp-version prev-rev)))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3224
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3225 (defun vc-annotate-show-log-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3226 "Visit the log of the version at line."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3227 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3228 (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
3229 (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
3230 (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
3231 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3232 (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
3233 (vc-print-log rev-at-line)))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3234
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3235 (defun vc-annotate-show-diff-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3236 "Visit the diff of the version at line from its previous version."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3237 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3238 (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
3239 (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
3240 (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
3241 (prev-rev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3242 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3243 (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
3244 (setq prev-rev
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3245 (vc-call previous-version vc-annotate-parent-file rev-at-line))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3246 (if (not prev-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3247 (message "Cannot diff from any version prior to %s" rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3248 (save-window-excursion
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3249 (vc-version-diff vc-annotate-parent-file prev-rev rev-at-line))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3250 (switch-to-buffer "*vc-diff*"))))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3251
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3252 (defun vc-annotate-warp-version (revspec)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3253 "Annotate the version described by REVSPEC.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3254
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3255 If REVSPEC is a positive integer, warp that many versions
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3256 forward, if possible, otherwise echo a warning message. If
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3257 REVSPEC is a negative integer, warp that many versions backward,
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3258 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
3259 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
3260 revision."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3261 (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
3262 (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
3263 (let* ((buf (current-buffer))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3264 (oldline (line-number-at-pos))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3265 (revspeccopy revspec)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3266 (newrev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3267 (cond
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3268 ((and (integerp revspec) (> revspec 0))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3269 (setq newrev vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3270 (while (and (> revspec 0) newrev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3271 (setq newrev (vc-call next-version
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3272 vc-annotate-parent-file newrev))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3273 (setq revspec (1- revspec)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3274 (if (not newrev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3275 (message "Cannot increment %d versions from version %s"
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3276 revspeccopy vc-annotate-parent-rev)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3277 ((and (integerp revspec) (< revspec 0))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3278 (setq newrev vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3279 (while (and (< revspec 0) newrev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3280 (setq newrev (vc-call previous-version
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3281 vc-annotate-parent-file newrev))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3282 (setq revspec (1+ revspec)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3283 (if (not newrev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3284 (message "Cannot decrement %d versions from version %s"
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3285 (- 0 revspeccopy) vc-annotate-parent-rev)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3286 ((stringp revspec) (setq newrev revspec))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3287 (t (error "Invalid argument to vc-annotate-warp-version")))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3288 (when newrev
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3289 (vc-annotate vc-annotate-parent-file newrev
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3290 vc-annotate-parent-display-mode
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3291 buf)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3292 (goto-line (min oldline (progn (goto-char (point-max))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3293 (previous-line)
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3294 (line-number-at-pos))) buf)))))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3295
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3296 (defun vc-annotate-compcar (threshold a-list)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3297 "Test successive cons cells of A-LIST against THRESHOLD.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3298 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
3299 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
3300 (let ((i 1)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3301 (tmp-cons (car a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3302 (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
3303 (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
3304 (setq i (+ i 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3305 tmp-cons)) ; Return the appropriate value
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3306
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3307 (defun vc-annotate-convert-time (time)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3308 "Convert a time value to a floating-point number of days.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3309 The argument TIME is a list as returned by `current-time' or
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3310 `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
3311 (/ (+ (* (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
3312
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3313 (defun vc-annotate-difference (&optional offset)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3314 "Return the time span in days to the next annotation.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3315 This calls the backend function annotate-time, and returns the
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3316 difference in days between the time returned and the current time,
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3317 or OFFSET if present."
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3318 (let ((next-time (vc-call-backend vc-annotate-backend 'annotate-time)))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3319 (if next-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
3320 (- (or offset
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3321 (vc-call-backend vc-annotate-backend 'annotate-current-time))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3322 next-time))))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3323
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3324 (defun vc-default-annotate-current-time (backend)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3325 "Return the current time, encoded as fractional days."
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3326 (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
3327
51764
3c3b6501b4f1 (vc-annotate-offset): Move defvar up.
John Paul Wallington <jpw@pobox.com>
parents: 51762
diff changeset
3328 (defvar vc-annotate-offset nil)
3c3b6501b4f1 (vc-annotate-offset): Move defvar up.
John Paul Wallington <jpw@pobox.com>
parents: 51762
diff changeset
3329
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3330 (defun vc-annotate-display (ratio &optional offset)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3331 "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
3332 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
3333 The annotations are relative to the current time, unless overridden by OFFSET."
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3334 (if (/= ratio 1.0)
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3335 (set (make-local-variable 'vc-annotate-color-map)
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3336 (mapcar (lambda (elem) (cons (* (car elem) ratio) (cdr elem)))
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3337 vc-annotate-color-map)))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3338 (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
3339 (font-lock-mode 1))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3340
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3341 (defun vc-annotate-lines (limit)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3342 (let (difference)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3343 (while (and (< (point) limit)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3344 (setq difference (vc-annotate-difference vc-annotate-offset)))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3345 (let* ((color (or (vc-annotate-compcar difference vc-annotate-color-map)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3346 (cons nil vc-annotate-very-old-color)))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3347 ;; substring from index 1 to remove any leading `#' in the name
70006
ccc2eb385394 Remove eol whitespace; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 69943
diff changeset
3348 (face-name (concat "vc-annotate-face-"
ccc2eb385394 Remove eol whitespace; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 69943
diff changeset
3349 (if (string-equal
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3350 (substring (cdr color) 0 1) "#")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3351 (substring (cdr color) 1)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3352 (cdr color))))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3353 ;; Make the face if not done.
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3354 (face (or (intern-soft face-name)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3355 (let ((tmp-face (make-face (intern face-name))))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3356 (set-face-foreground tmp-face (cdr color))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3357 (if vc-annotate-background
40958
4b4504c5aa56 * vc.el (vc-print-log): Bind `inhibit-read-only' to t before and
Sam Steingold <sds@gnu.org>
parents: 40850
diff changeset
3358 (set-face-background tmp-face
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3359 vc-annotate-background))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3360 tmp-face))) ; Return the face
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
3361 (point (point)))
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3362 (forward-line 1)
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3363 (put-text-property point (point) 'face face)))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3364 ;; Pretend to font-lock there were no matches.
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3365 nil))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3366
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
3367 ;; Collect back-end-dependent stuff here
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3368
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3369 (defalias 'vc-default-logentry-check 'ignore)
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
3370
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3371 (defun vc-check-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3372 "Check if the current file has any headers in it."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3373 (interactive)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3374 (vc-call-backend (vc-backend buffer-file-name) 'check-headers))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3375
33562
7c20a27966ae Updated backend documentation.
André Spiegel <spiegel@gnu.org>
parents: 33553
diff changeset
3376 (defun vc-default-check-headers (backend)
7c20a27966ae Updated backend documentation.
André Spiegel <spiegel@gnu.org>
parents: 33553
diff changeset
3377 "Default implementation of check-headers; always returns nil."
7c20a27966ae Updated backend documentation.
André Spiegel <spiegel@gnu.org>
parents: 33553
diff changeset
3378 nil)
7c20a27966ae Updated backend documentation.
André Spiegel <spiegel@gnu.org>
parents: 33553
diff changeset
3379
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3380 ;; Back-end-dependent stuff ends here.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3381
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3382 ;; Set up key bindings for use while editing log messages
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3383
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3384 (defun vc-log-edit (file)
47765
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
3385 "Set up `log-edit' for use with VC on FILE."
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
3386 (setq default-directory
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
3387 (if file (file-name-directory file)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
3388 (with-current-buffer vc-parent-buffer default-directory)))
47765
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
3389 (log-edit 'vc-finish-logentry nil
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
3390 (if file `(lambda () ',(list (file-name-nondirectory file)))
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
3391 ;; If FILE is nil, we were called from vc-dired.
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
3392 (lambda ()
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
3393 (with-current-buffer vc-parent-buffer
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
3394 (dired-get-marked-files 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
3395 (set (make-local-variable 'vc-log-file) file)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3396 (make-local-variable 'vc-log-version)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
3397 (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
3398 (setq buffer-file-name nil))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3399
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3400 ;; These things should probably be generally available
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3401
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
3402 (defun vc-file-tree-walk (dirname func &rest args)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
3403 "Walk recursively through DIRNAME.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3404 Invoke FUNC f ARGS on each VC-managed file f underneath it."
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
3405 (vc-file-tree-walk-internal (expand-file-name dirname) func args)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
3406 (message "Traversing directory %s...done" dirname))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3407
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3408 (defun vc-file-tree-walk-internal (file func args)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3409 (if (not (file-directory-p 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
3410 (if (vc-backend file) (apply func file args))
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
3411 (message "Traversing directory %s..." (abbreviate-file-name file))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3412 (let ((dir (file-name-as-directory file)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3413 (mapcar
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3414 (lambda (f) (or
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3415 (string-equal f ".")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3416 (string-equal f "..")
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3417 (member f vc-directory-exclusion-list)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3418 (let ((dirf (expand-file-name f dir)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3419 (or
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3420 (file-symlink-p dirf);; Avoid possible loops
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3421 (vc-file-tree-walk-internal dirf func args)))))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3422 (directory-files dir)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3423
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3424 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3425
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3426 ;; DEVELOPER'S NOTES ON CONCURRENCY PROBLEMS IN THIS CODE
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3427 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3428 ;; These may be useful to anyone who has to debug or extend the package.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3429 ;; (Note that this information corresponds to versions 5.x. Some of it
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3430 ;; might have been invalidated by the additions to support branching
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3431 ;; and RCS keyword lookup. AS, 1995/03/24)
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3432 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3433 ;; A fundamental problem in VC is that there are time windows between
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3434 ;; vc-next-action's computations of the file's version-control state and
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3435 ;; the actions that change it. This is a window open to lossage in a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3436 ;; multi-user environment; someone else could nip in and change the state
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3437 ;; of the master during it.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3438 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3439 ;; The performance problem is that rlog/prs calls are very expensive; we want
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3440 ;; to avoid them as much as possible.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3441 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3442 ;; ANALYSIS:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3443 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3444 ;; The performance problem, it turns out, simplifies in practice to the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3445 ;; problem of making vc-state fast. The two other functions that call
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3446 ;; prs/rlog will not be so commonly used that the slowdown is a problem; one
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3447 ;; makes snapshots, the other deletes the calling user's last change in the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3448 ;; master.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3449 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3450 ;; The race condition implies that we have to either (a) lock the master
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3451 ;; during the entire execution of vc-next-action, or (b) detect and
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3452 ;; recover from errors resulting from dispatch on an out-of-date state.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3453 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3454 ;; Alternative (a) appears to be infeasible. The problem is that we can't
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3455 ;; guarantee that the lock will ever be removed. Suppose a user starts a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3456 ;; checkin, the change message buffer pops up, and the user, having wandered
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3457 ;; off to do something else, simply forgets about it?
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3458 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3459 ;; Alternative (b), on the other hand, works well with a cheap way to speed up
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3460 ;; vc-state. Usually, if a file is registered, we can read its locked/
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3461 ;; unlocked state and its current owner from its permissions.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3462 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3463 ;; This shortcut will fail if someone has manually changed the workfile's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3464 ;; permissions; also if developers are munging the workfile in several
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3465 ;; directories, with symlinks to a master (in this latter case, the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3466 ;; permissions shortcut will fail to detect a lock asserted from another
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3467 ;; directory).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3468 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3469 ;; Note that these cases correspond exactly to the errors which could happen
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3470 ;; because of a competing checkin/checkout race in between two instances of
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3471 ;; vc-next-action.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3472 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3473 ;; For VC's purposes, a workfile/master pair may have the following states:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3474 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3475 ;; A. Unregistered. There is a workfile, there is no master.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3476 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3477 ;; B. Registered and not locked by anyone.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3478 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3479 ;; C. Locked by calling user and unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3480 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3481 ;; D. Locked by the calling user and changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3482 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3483 ;; E. Locked by someone other than the calling user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3484 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3485 ;; This makes for 25 states and 20 error conditions. Here's the matrix:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3486 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3487 ;; VC's idea of state
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3488 ;; |
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3489 ;; V Actual state RCS action SCCS action Effect
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3490 ;; A B C D E
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3491 ;; A . 1 2 3 4 ci -u -t- admin -fb -i<file> initial admin
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3492 ;; B 5 . 6 7 8 co -l get -e checkout
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3493 ;; C 9 10 . 11 12 co -u unget; get revert
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3494 ;; D 13 14 15 . 16 ci -u -m<comment> delta -y<comment>; get checkin
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3495 ;; E 17 18 19 20 . rcs -u -M -l unget -n ; get -g steal lock
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3496 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3497 ;; All commands take the master file name as a last argument (not shown).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3498 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3499 ;; In the discussion below, a "self-race" is a pathological situation in
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3500 ;; which VC operations are being attempted simultaneously by two or more
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3501 ;; Emacsen running under the same username.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3502 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3503 ;; The vc-next-action code has the following windows:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3504 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3505 ;; Window P:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3506 ;; Between the check for existence of a master file and the call to
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3507 ;; admin/checkin in vc-buffer-admin (apparent state A). This window may
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3508 ;; never close if the initial-comment feature is on.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3509 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3510 ;; Window Q:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3511 ;; Between the call to vc-workfile-unchanged-p in and the immediately
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3512 ;; following revert (apparent state C).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3513 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3514 ;; Window R:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3515 ;; Between the call to vc-workfile-unchanged-p in and the following
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3516 ;; checkin (apparent state D). This window may never close.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3517 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3518 ;; Window S:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3519 ;; Between the unlock and the immediately following checkout during a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3520 ;; revert operation (apparent state C). Included in window Q.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3521 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3522 ;; Window T:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3523 ;; Between vc-state and the following checkout (apparent state B).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3524 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3525 ;; Window U:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3526 ;; Between vc-state and the following revert (apparent state C).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3527 ;; Includes windows Q and S.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3528 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3529 ;; Window V:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3530 ;; Between vc-state and the following checkin (apparent state
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3531 ;; D). This window may never be closed if the user fails to complete the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3532 ;; checkin message. Includes window R.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3533 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3534 ;; Window W:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3535 ;; Between vc-state and the following steal-lock (apparent
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3536 ;; state E). This window may never close if the user fails to complete
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3537 ;; the steal-lock message. Includes window X.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3538 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3539 ;; Window X:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3540 ;; Between the unlock and the immediately following re-lock during a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3541 ;; steal-lock operation (apparent state E). This window may never close
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3542 ;; if the user fails to complete the steal-lock message.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3543 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3544 ;; Errors:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3545 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3546 ;; Apparent state A ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3547 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3548 ;; 1. File looked unregistered but is actually registered and not locked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3549 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3550 ;; Potential cause: someone else's admin during window P, with
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3551 ;; caller's admin happening before their checkout.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3552 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3553 ;; RCS: Prior to version 5.6.4, ci fails with message
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3554 ;; "no lock set by <user>". From 5.6.4 onwards, VC uses the new
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3555 ;; ci -i option and the message is "<file>,v: already exists".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3556 ;; SCCS: admin will fail with error (ad19).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3557 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3558 ;; We can let these errors be passed up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3559 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3560 ;; 2. File looked unregistered but is actually locked by caller, unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3561 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3562 ;; Potential cause: self-race during window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3563 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3564 ;; RCS: Prior to version 5.6.4, reverts the file to the last saved
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3565 ;; version and unlocks it. From 5.6.4 onwards, VC uses the new
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3566 ;; ci -i option, failing with message "<file>,v: already exists".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3567 ;; SCCS: will fail with error (ad19).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3568 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3569 ;; Either of these consequences is acceptable.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3570 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3571 ;; 3. File looked unregistered but is actually locked by caller, changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3572 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3573 ;; Potential cause: self-race during window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3574 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3575 ;; RCS: Prior to version 5.6.4, VC registers the caller's workfile as
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3576 ;; a delta with a null change comment (the -t- switch will be
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3577 ;; ignored). From 5.6.4 onwards, VC uses the new ci -i option,
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3578 ;; failing with message "<file>,v: already exists".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3579 ;; SCCS: will fail with error (ad19).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3580 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3581 ;; 4. File looked unregistered but is locked by someone else.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3582 ;;;
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3583 ;; Potential cause: someone else's admin during window P, with
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3584 ;; caller's admin happening *after* their checkout.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3585 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3586 ;; RCS: Prior to version 5.6.4, ci fails with a
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3587 ;; "no lock set by <user>" message. From 5.6.4 onwards,
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3588 ;; VC uses the new ci -i option, failing with message
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3589 ;; "<file>,v: already exists".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3590 ;; SCCS: will fail with error (ad19).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3591 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3592 ;; We can let these errors be passed up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3593 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3594 ;; Apparent state B ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3595 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3596 ;; 5. File looked registered and not locked, but is actually unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3597 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3598 ;; Potential cause: master file got nuked during window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3599 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3600 ;; RCS: will fail with "RCS/<file>: No such file or directory"
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3601 ;; SCCS: will fail with error ut4.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3602 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3603 ;; We can let these errors be passed up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3604 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3605 ;; 6. File looked registered and not locked, but is actually locked by the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3606 ;; calling user and unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3607 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3608 ;; Potential cause: self-race during window T.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3609 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3610 ;; RCS: in the same directory as the previous workfile, co -l will fail
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3611 ;; with "co error: writable foo exists; checkout aborted". In any other
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3612 ;; directory, checkout will succeed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3613 ;; SCCS: will fail with ge17.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3614 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3615 ;; Either of these consequences is acceptable.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3616 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3617 ;; 7. File looked registered and not locked, but is actually locked by the
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3618 ;; calling user and changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3619 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3620 ;; As case 6.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3621 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3622 ;; 8. File looked registered and not locked, but is actually locked by another
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3623 ;; user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3624 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3625 ;; Potential cause: someone else checks it out during window T.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3626 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3627 ;; RCS: co error: revision 1.3 already locked by <user>
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3628 ;; SCCS: fails with ge4 (in directory) or ut7 (outside it).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3629 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3630 ;; We can let these errors be passed up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3631 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3632 ;; Apparent state C ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3633 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3634 ;; 9. File looks locked by calling user and unchanged, but is unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3635 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3636 ;; As case 5.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3637 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3638 ;; 10. File looks locked by calling user and unchanged, but is actually not
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3639 ;; locked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3640 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3641 ;; Potential cause: a self-race in window U, or by the revert's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3642 ;; landing during window X of some other user's steal-lock or window S
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3643 ;; of another user's revert.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3644 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3645 ;; RCS: succeeds, refreshing the file from the identical version in
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3646 ;; the master.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3647 ;; SCCS: fails with error ut4 (p file nonexistent).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3648 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3649 ;; Either of these consequences is acceptable.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3650 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3651 ;; 11. File is locked by calling user. It looks unchanged, but is actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3652 ;; changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3653 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3654 ;; Potential cause: the file would have to be touched by a self-race
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3655 ;; during window Q.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3656 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3657 ;; The revert will succeed, removing whatever changes came with
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3658 ;; the touch. It is theoretically possible that work could be lost.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3659 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3660 ;; 12. File looks like it's locked by the calling user and unchanged, but
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3661 ;; it's actually locked by someone else.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3662 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3663 ;; Potential cause: a steal-lock in window V.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3664 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3665 ;; RCS: co error: revision <rev> locked by <user>; use co -r or rcs -u
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3666 ;; SCCS: fails with error un2
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3667 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3668 ;; We can pass these errors up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3669 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3670 ;; Apparent state D ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3671 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3672 ;; 13. File looks like it's locked by the calling user and changed, but it's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3673 ;; actually unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3674 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3675 ;; Potential cause: master file got nuked during window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3676 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3677 ;; RCS: Prior to version 5.6.4, checks in the user's version as an
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3678 ;; initial delta. From 5.6.4 onwards, VC uses the new ci -j
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3679 ;; option, failing with message "no such file or directory".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3680 ;; SCCS: will fail with error ut4.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3681 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3682 ;; This case is kind of nasty. Under RCS prior to version 5.6.4,
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3683 ;; VC may fail to detect the loss of previous version information.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3684 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3685 ;; 14. File looks like it's locked by the calling user and changed, but it's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3686 ;; actually unlocked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3687 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3688 ;; Potential cause: self-race in window V, or the checkin happening
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3689 ;; during the window X of someone else's steal-lock or window S of
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3690 ;; someone else's revert.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3691 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3692 ;; RCS: ci will fail with "no lock set by <user>".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3693 ;; SCCS: delta will fail with error ut4.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3694 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3695 ;; 15. File looks like it's locked by the calling user and changed, but it's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3696 ;; actually locked by the calling user and unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3697 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3698 ;; Potential cause: another self-race --- a whole checkin/checkout
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3699 ;; sequence by the calling user would have to land in window R.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3700 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3701 ;; SCCS: checks in a redundant delta and leaves the file unlocked as usual.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3702 ;; RCS: reverts to the file state as of the second user's checkin, leaving
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3703 ;; the file unlocked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3704 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3705 ;; It is theoretically possible that work could be lost under RCS.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3706 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3707 ;; 16. File looks like it's locked by the calling user and changed, but it's
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3708 ;; actually locked by a different user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3709 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3710 ;; RCS: ci error: no lock set by <user>
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3711 ;; SCCS: unget will fail with error un2
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3712 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3713 ;; We can pass these errors up to the user.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3714 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3715 ;; Apparent state E ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3716 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3717 ;; 17. File looks like it's locked by some other user, but it's actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3718 ;; unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3719 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3720 ;; As case 13.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3721 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3722 ;; 18. File looks like it's locked by some other user, but it's actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3723 ;; unlocked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3724 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3725 ;; Potential cause: someone released a lock during window W.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3726 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3727 ;; RCS: The calling user will get the lock on the file.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3728 ;; SCCS: unget -n will fail with cm4.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3729 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3730 ;; Either of these consequences will be OK.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3731 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3732 ;; 19. File looks like it's locked by some other user, but it's actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3733 ;; locked by the calling user and unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3734 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3735 ;; Potential cause: the other user relinquishing a lock followed by
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3736 ;; a self-race, both in window W.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3737 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3738 ;; Under both RCS and SCCS, both unlock and lock will succeed, making
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3739 ;; the sequence a no-op.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3740 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3741 ;; 20. File looks like it's locked by some other user, but it's actually
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3742 ;; locked by the calling user and changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3743 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3744 ;; As case 19.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3745 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3746 ;; PROBLEM CASES:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3747 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3748 ;; In order of decreasing severity:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3749 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3750 ;; Cases 11 and 15 are the only ones that potentially lose work.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3751 ;; They would require a self-race for this to happen.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3752 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3753 ;; Case 13 in RCS loses information about previous deltas, retaining
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3754 ;; only the information in the current workfile. This can only happen
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3755 ;; if the master file gets nuked in window P.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3756 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3757 ;; Case 3 in RCS and case 15 under SCCS insert a redundant delta with
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3758 ;; no change comment in the master. This would require a self-race in
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3759 ;; window P or R respectively.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3760 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3761 ;; Cases 2, 10, 19 and 20 do extra work, but make no changes.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3762 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3763 ;; Unfortunately, it appears to me that no recovery is possible in these
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3764 ;; cases. They don't yield error messages, so there's no way to tell that
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3765 ;; a race condition has occurred.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3766 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3767 ;; All other cases don't change either the workfile or the master, and
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3768 ;; trigger command errors which the user will see.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3769 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3770 ;; Thus, there is no explicit recovery code.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3771
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
3772 ;; arch-tag: ca82c1de-3091-4e26-af92-460abc6213a6
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3773 ;;; vc.el ends here