annotate lisp/vc.el @ 70449:015c383be7d8

(Abbrevs): A @node line without explicit Prev, Next, and Up links.
author Eli Zaretskii <eliz@gnu.org>
date Sat, 06 May 2006 12:56:07 +0000
parents 19ab508f832f
children 4d648a3d282d 2d2f6f096f6e c156f6a9e7b5
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
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
570 (defcustom vc-allow-async-revert nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
571 "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
572 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
573 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
574 :type '(choice (const :tag "No" nil)
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
575 (const :tag "Yes" t))
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
576 :group 'vc
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59442
diff changeset
577 :version "22.1")
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
578
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
579 ;;;###autoload
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
580 (defcustom vc-checkout-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
581 "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
582 See `run-hooks'."
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
583 :type 'hook
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
584 :group 'vc
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
585 :version "21.1")
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
586
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
587 (defcustom vc-annotate-display-mode 'fullscale
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
588 "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
589 :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
590 (const :tag "Scale to Oldest" scale)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
591 (const :tag "Scale Oldest->Newest" fullscale)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
592 (number :tag "Specify Fractional Number of Days"
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
593 :value "20.5"))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
594 :group 'vc)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
595
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
596 ;;;###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
597 (defcustom vc-checkin-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
598 "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
599 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
600 :type 'hook
51369
91b1fb194872 (vc-directory-exclusion-list): Add MCVS and .svn.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 51245
diff changeset
601 :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
602 :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
603
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 ;;;###autoload
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
605 (defcustom vc-before-checkin-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
606 "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
607 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
608 :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
609 :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
610
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
611 (defcustom vc-logentry-check-hook nil
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
612 "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
613 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
614 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
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 ;; Annotate customization
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
619 (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
620 (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
621 ;; A custom sorted TTY colormap
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
622 (let* ((colors
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
623 (sort
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
624 (delq nil
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
625 (mapcar (lambda (x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
626 (if (not (or
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
627 (string-equal (car x) "white")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
628 (string-equal (car x) "black") ))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
629 (car x)))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
630 (tty-color-alist)))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
631 (lambda (a b)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
632 (cond
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
633 ((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
634 ((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
635 ((string-equal a "yellow") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
636 ((string-equal b "yellow") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
637 ((string-equal a "cyan") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
638 ((string-equal b "cyan") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
639 ((string-equal a "green") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
640 ((string-equal b "green") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
641 ((string-equal a "magenta") t)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
642 ((string-equal b "magenta") nil)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
643 (t (string< a b))))))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
644 (date 20.)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
645 (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
646 (mapcar (lambda (x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
647 (prog1
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
648 (cons date x)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
649 (setq date (+ date delta)))) colors))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
650 ;; 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
651 '(( 20. . "#FF3F3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
652 ( 40. . "#FF6C3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
653 ( 60. . "#FF993F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
654 ( 80. . "#FFC63F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
655 (100. . "#FFF33F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
656 (120. . "#DDFF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
657 (140. . "#B0FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
658 (160. . "#83FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
659 (180. . "#56FF3F")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
660 (200. . "#3FFF56")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
661 (220. . "#3FFF83")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
662 (240. . "#3FFFB0")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
663 (260. . "#3FFFDD")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
664 (280. . "#3FF3FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
665 (300. . "#3FC6FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
666 (320. . "#3F99FF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
667 (340. . "#3F6CFF")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
668 (360. . "#3F3FFF")))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
669 "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
670 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
671 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
672 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
673 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
674 :type 'alist
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
675 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
676
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
677 (defcustom vc-annotate-very-old-color "#3F3FFF"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
678 "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
679 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
680 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
681
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
682 (defcustom vc-annotate-background "black"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
683 "Background color for \\[vc-annotate].
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
684 Default color is used if nil."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
685 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
686 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
687
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
688 (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
689 "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
690 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
691 :type '(repeat number)
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
692 :group 'vc)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
693
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
694 (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
695 (let ((m (make-sparse-keymap)))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
696 (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
697 (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
698 (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
699 (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
700 (define-key m "N" 'vc-annotate-next-version)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
701 (define-key m "P" 'vc-annotate-prev-version)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
702 (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
703 m)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
704 "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
705
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
706 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
707
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
708 (defcustom vc-static-header-alist
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
709 '(("\\.c\\'" .
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
710 "\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
711 "*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
712 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
713 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
714 :type '(repeat (cons :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
715 (regexp :tag "File Type")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
716 (string :tag "Header String")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
717 :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
718
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
719 (defcustom vc-comment-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
720 '((nroff-mode ".\\\"" ""))
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
721 "*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
722 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
723 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
724 is sensitive to blank lines."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
725 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
726 (symbol :tag "Mode")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
727 (string :tag "Comment Start")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
728 (string :tag "Comment End")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
729 :group 'vc)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
730
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
731 (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
732 "*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
733 Verify that the file really is not locked
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
734 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
735 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
736 :group 'vc)
49619
b48f8839a782 (vc-annotate-display, vc-checkout-carefully): Add obsolescence declaration and
Juanma Barranquero <lekktu@gmail.com>
parents: 49597
diff changeset
737 (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
738 "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
739 "21.1")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
740
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
741
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
742 ;; Variables the user doesn't need to know about.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
743 (defvar vc-log-operation nil)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
744 (defvar vc-log-after-operation-hook nil)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
745
8350
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
746 ;; In a log entry buffer, this is a local variable
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
747 ;; that points to the buffer for which it was made
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
748 ;; (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
749 (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
750 (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
751 (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
752 (put 'vc-parent-buffer-name 'permanent-local t)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
753
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
754 (defvar vc-disable-async-diff nil
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
755 "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
756 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
757 in their implementation of vc-BACKEND-diff.")
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
758
1494
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
759 (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
760 (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
761
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
762 (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
763 (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
764
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
765 ;; 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
766 ;; 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
767 ;; 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
768 ;;;###autoload
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
769 (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
770 "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
771 (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
772
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
773 (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
774 "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
775 (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
776
43744
5c8c45f534eb (vc-branch-part): Add autoload cookie. This function can
Gerd Moellmann <gerd@gnu.org>
parents: 43725
diff changeset
777 ;;;###autoload
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
778 (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
779 "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
780 (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
781 (if index
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
782 (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
783
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
784 (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
785 "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
786 (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
787 (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
788
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
789 (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
790 "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
791 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
792 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
793 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
794 (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
795 (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
796 (when branch
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
797 (if (> minor-num 1)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
798 ;; 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
799 (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
800 (if (vc-trunk-p rev)
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
801 ;; 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
802 ;; 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
803 nil
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
804 ;; 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
805 ;; return version of starting point
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
806 (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
807
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
808 (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
809 "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
810 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
811 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
812 and CVS."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
813 (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
814 (let ((branch (vc-branch-part rev))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
815 (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
816 (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
817
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
818 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
819
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
820 (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
821 "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
822 (interactive)
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
823 (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
824
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
825 (defmacro with-vc-properties (file form settings)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
826 "Execute FORM, then maybe set per-file properties for FILE.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
827 SETTINGS is an association list of property/value pairs. After
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
828 executing FORM, set those properties from SETTINGS that have not yet
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
829 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
830 (declare (debug t))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
831 `(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
832 ,form
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
833 (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
834 (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
835 (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
836 (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
837 property (cdr setting)))))
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
838 ,settings)))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
839
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
840 ;; Random helper functions
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
841
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
842 (defsubst vc-editable-p (file)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
843 "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
844 (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
845 (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
846
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
847 ;; Two macros for elisp programming
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
848 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
849 (defmacro with-vc-file (file comment &rest body)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
850 "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
851 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
852 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
853 `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
854 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
855 (declare (debug t) (indent 2))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
856 (let ((filevar (make-symbol "file")))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
857 `(let ((,filevar (expand-file-name ,file)))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
858 (or (vc-backend ,filevar)
53874
978c77351d66 (with-vc-file): Fix unsafe uses of error.
Andreas Schwab <schwab@suse.de>
parents: 53839
diff changeset
859 (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
860 (unless (vc-editable-p ,filevar)
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
861 (let ((state (vc-state ,filevar)))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
862 (if (stringp state)
53874
978c77351d66 (with-vc-file): Fix unsafe uses of error.
Andreas Schwab <schwab@suse.de>
parents: 53839
diff changeset
863 (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
864 (vc-checkout ,filevar t))))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
865 (save-excursion
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
866 ,@body)
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
867 (vc-checkin ,filevar nil ,comment))))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
868
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
869 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
870 (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
871 "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
872 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
873 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
874 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
875 (declare (debug t) (indent 2))
41395
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
876 (let ((filevar (make-symbol "file")))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
877 `(let ((,filevar (expand-file-name ,file)))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
878 (with-vc-file
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
879 ,filevar ,comment
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
880 (set-buffer (find-file-noselect ,filevar))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
881 ,@body
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
882 (save-buffer)))))
0abfca935c80 (with-vc-properties): Don't bind `filename' locally.
André Spiegel <spiegel@gnu.org>
parents: 41071
diff changeset
883
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
884 (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
885 "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
886 (if vc-dired-mode
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
887 (set-buffer (find-file-noselect (dired-get-filename)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
888 (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
889 (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
890 (if (not buffer-file-name)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
891 (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
892 (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
893 (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
894
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
895 (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
896 "An alternative output filter for async process P.
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
897 The only difference with the default filter is to insert S after markers."
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
898 (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
899 (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
900 (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
901 (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
902 (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
903 (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
904
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
905 (defun vc-setup-buffer (&optional buf)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
906 "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
907 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
908 (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
909 (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
910 (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
911 (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
912 (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
913 (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
914 (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
915 (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
916 (setq default-directory olddir)
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
917 (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
918 (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
919
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
920 (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
921 "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
922 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
923 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
924 (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
925 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
926 ;; 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
927 ((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
928 ;; 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
929 ((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
930 (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
931 (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
932 ;; 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
933 ((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
934 (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
935 (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
936 `(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
937 (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
938 (goto-char (process-mark p))
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
939 ,@(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
940 ; (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
941 (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
942 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 (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
944 (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
945 nil)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
946
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
947 (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
948 "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
949 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
950 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
951
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
952 (defvar w32-quote-process-args)
38442
086300440396 (vc-do-command): Autoload.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38374
diff changeset
953 ;;;###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
954 (defun vc-do-command (buffer okstatus command file &rest flags)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
955 "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
956 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
957 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
958 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
959 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
960 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
961 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
962 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
963 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
964 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
965 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
966 (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
967 (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
968 (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
969 (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
970 (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
971 (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
972 (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
973 (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
974 (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
975 (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
976 (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
977 (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
978 (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
979 ;; 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
980 ;; 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
981 ;; 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
982 (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
983 (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
984 ;; 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
985 (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
986 (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
987 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
988 (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
989 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
990 (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
991 (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
992 ;; 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
993 (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
994 (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
995 (let ((proc
27c2765e06c8 (vc-do-command): Use a pipe for async processes, so password
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 60289
diff changeset
996 (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
997 (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
998 squeezed))))
33553
840460ecad6f (vc-do-command): In the asynchronous case, output messages only if the
André Spiegel <spiegel@gnu.org>
parents: 33548
diff changeset
999 (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
1000 (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
1001 ;;(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
1002 (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
1003 (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
1004 `(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
1005 (message "Running %s in the background... done" ',command))))
57653
b324ca4df07c * simple.el (process-file): New function, similar to call-process
Kai Großjohann <kgrossjo@eu.uu.net>
parents: 57479
diff changeset
1006 (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
1007 (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
1008 (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
1009 (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
1010 (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
1011 (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
1012 (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
1013 (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
1014 (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
1015 (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
1016 (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
1017 (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
1018 `(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
1019 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1020
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
1021 (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
1022 "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
1023 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
1024 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
1025 ;; 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
1026 ;; 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
1027 (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
1028 (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
1029 (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
1030 (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
1031
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-find-position-by-context (context)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1033 "Return the position of CONTEXT in the current buffer.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1034 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
1035 (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
1036 (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
1037 (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
1038 (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
1039 (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
1040 (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
1041 (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
1042 (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
1043 ;; 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
1044 ;; 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
1045 (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
1046 ;; 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
1047 ;; 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
1048 (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
1049 ;; 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
1050 (- (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
1051
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1052 (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
1053 "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
1054 (let* ((context-string (nth 2 context))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1055 (len (length context-string))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1056 (end (+ posn len)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1057 (if (> end (1+ (buffer-size)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1058 nil
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1059 (string= context-string (buffer-substring posn end)))))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1060
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1061 (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
1062 "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
1063 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
1064 (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
1065 ;; 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
1066 (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
1067 (vc-position-context (mark-marker))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
1068 ;; 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
1069 (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
1070 ;; 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
1071 ;; 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
1072 ;; be disabled. -- Stef
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1073 ;; ;; 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
1074 ;; (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
1075 ;; ;; 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
1076 ;; ;; 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
1077 ;; ;; 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
1078 ;; (save-current-buffer
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1079 ;; (mapcar (lambda (buffer)
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1080 ;; (set-buffer buffer)
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1081 ;; (let ((errors (or
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1082 ;; 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
1083 ;; compilation-error-list))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1084 ;; (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
1085 ;; (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
1086 ;; (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
1087 ;; (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
1088 ;; (eq buffer
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1089 ;; (marker-buffer
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1090 ;; (cdr (car errors))))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1091 ;; (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
1092 ;; (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
1093 ;; (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
1094 ;; (buffer-list)))))
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1095 (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
1096 (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
1097
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1098 (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
1099 "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
1100 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
1101 (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
1102 (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
1103 (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
1104 ;; 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
1105 ;; 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
1106 ;; be disabled. -- Stef
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1107 ;; ;; 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
1108 ;; (while reparse
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1109 ;; (if (car reparse)
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
1110 ;; (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
1111 ;; (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
1112 ;; ;; 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
1113 ;; ;; 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
1114 ;; (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
1115 ;; (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
1116 ;; ;; 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
1117 ;; (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
1118 ;; ;; 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
1119 ;; ;; 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
1120 ;; (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
1121 ;; (/= 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
1122 ;; (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
1123 ;; (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
1124
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1125 ;; if necessary, restore point and mark
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1126 (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
1127 (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
1128 (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
1129 (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
1130 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
1131 (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
1132 (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
1133 (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
1134
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1135 (defun vc-revert-buffer1 (&optional arg no-confirm)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1136 "Revert buffer, keeping point and mark where user expects them.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1137 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
1138 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
1139 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
1140 (interactive "P")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1141 (widen)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1142 (let ((context (vc-buffer-context)))
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1143 ;; 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
1144 ;; 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
1145 ;; 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
1146 ;; 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
1147 (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
1148 ;; t means don't call normal-mode;
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1149 ;; that's to preserve various minor modes.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1150 (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
1151 (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
1152
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1153
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1154 (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
1155 "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
1156 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
1157 (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
1158 (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
1159 (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
1160 (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
1161 (unless not-urgent
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1162 (error "Aborted")))))
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1163
36395
20a768ca0cf8 (vc-default-workfile-unchanged-p, vc-default-latest-on-branch-p): Add
André Spiegel <spiegel@gnu.org>
parents: 35830
diff changeset
1164 (defun vc-default-latest-on-branch-p (backend file)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1165 "Return non-nil if FILE is the latest on its branch.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1166 This default implementation always returns non-nil, which means that
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1167 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
1168 t)
9dcb897992b9 (vc-default-latest-on-branch-p): New function, replaces constant
André Spiegel <spiegel@gnu.org>
parents: 33634
diff changeset
1169
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
1170 (defun vc-next-action-on-file (file verbose &optional comment)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1171 "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
1172 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
1173 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
1174 (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
1175 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
1176 (when visited
46623
9ed0e3821f7a (vc-next-action-on-file): Preserve find-file-literally.
André Spiegel <spiegel@gnu.org>
parents: 46541
diff changeset
1177 (if vc-dired-mode
9ed0e3821f7a (vc-next-action-on-file): Preserve find-file-literally.
André Spiegel <spiegel@gnu.org>
parents: 46541
diff changeset
1178 (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
1179 (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
1180 ;; 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
1181 ;; 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
1182 ;; 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
1183 ;; 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
1184 ;; 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
1185 (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
1186 (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
1187 (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
1188 (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
1189 (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
1190 (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
1191 ;; 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
1192 (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
1193 (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
1194 (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
1195 (error "Aborted")))))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1196
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1197 ;; 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
1198 (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
1199 (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
1200 (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
1201 (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
1202 (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
1203 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1204 ;; 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
1205 ((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
1206 (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
1207 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1208 (verbose
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1209 ;; 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
1210 (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
1211 (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
1212 (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
1213 (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
1214 (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
1215 (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
1216 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
1217 ((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
1218 ;; 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
1219 (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
1220 (t
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1221 ;; 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
1222 (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
1223
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1224 ;; 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
1225 ((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
1226 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
1227 ;; 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
1228 ;; 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
1229 (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
1230 (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
1231 (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
1232 (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
1233
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1234 ;; edited
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1235 ((eq state 'edited)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1236 (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
1237 ;; 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
1238 ;; 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
1239 ((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
1240 (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
1241 ;; 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
1242 ;; 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
1243 ;; 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
1244 ;; 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
1245 (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
1246 ;; 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
1247 (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
1248 (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
1249 (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
1250 (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
1251 (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
1252 (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
1253 (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
1254 (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
1255 (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
1256 (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
1257 (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
1258
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1259 ;; 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
1260 ((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
1261 (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
1262 (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
1263 (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
1264 (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
1265 (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
1266 (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
1267 state))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1268
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1269 ;; 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
1270 ((eq state 'needs-patch)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1271 (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
1272 "%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
1273 (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
1274 (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
1275 (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
1276 (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
1277 (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
1278 (error "Aborted"))))
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-merge
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-merge)
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. 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
1284 (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
1285 (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
1286 (error "Aborted")))
32344
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
1287
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1288 ;; 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
1289 ((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
1290 (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
1291 (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
1292 (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
1293 (goto-char (point-min))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1294 (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
1295 (insert
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
1296 (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
1297 (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
1298 (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
1299 "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
1300 (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
1301 (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
1302 ;; 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
1303 ;; 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
1304 (vc-clear-headers file)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1305 (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
1306 (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
1307 (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
1308 "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
1309 (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
1310 (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
1311 (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
1312
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1313 (defvar vc-dired-window-configuration)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1314
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
1315 (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
1316 "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
1317 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
1318 (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
1319 (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
1320 (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
1321 (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
1322 (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
1323 (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
1324 (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
1325 (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
1326 nil t))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1327 (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
1328
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1329 ;; Here's the major entry point.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1330
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1331 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1332 (defun vc-next-action (verbose)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1333 "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
1334
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1335 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
1336 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
1337
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1338 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
1339 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
1340 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
1341 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
1342 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
1343
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1344 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
1345
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1346 For RCS and SCCS files:
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1347 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
1348 control.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1349 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
1350 a writable and locked file ready for editing.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1351 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
1352 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
1353 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
1354 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
1355 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
1356 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
1357 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
1358 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
1359 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
1360 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
1361
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1362 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
1363 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
1364 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
1365 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
1366 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
1367 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
1368 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
1369 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
1370 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
1371 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
1372
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1373 (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
1374 (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
1375 (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
1376 (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
1377 (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
1378 (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
1379 (if (string= ""
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1380 (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
1381 (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
1382 (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
1383 files ""))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1384 (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
1385 (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
1386 "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
1387 '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
1388 (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
1389 (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
1390 (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
1391 (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
1392 (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
1393 (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
1394
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
1395 ;; These functions help the vc-next-action entry point
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1396
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1397 (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
1398
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1399 ;;;###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
1400 (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
1401 "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
1402 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
1403 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
1404
31520
f9d2d484e1e2 * vc-sccs.el (vc-sccs-register):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31435
diff changeset
1405 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
1406 `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
1407 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
1408 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
1409 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
1410 first backend that could register the file is used."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1411 (interactive "P")
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1412 (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
1413 (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
1414 (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
1415 (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
1416 (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
1417 (error "Aborted"))))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1418 ;; 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
1419 ;; 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
1420 (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
1421 (zerop (buffer-size))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1422 (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
1423 (set-buffer-modified-p t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1424 (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
1425
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1426 (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
1427 (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
1428 (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
1429 (buffer-name)))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1430 (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
1431 '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
1432 (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
1433 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
1434 "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
1435 (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
1436 (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
1437 (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
1438 (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
1439 (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
1440 (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
1441 (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
1442 (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
1443 (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
1444 (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
1445
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1446
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1447 (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
1448 "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
1449 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
1450 registration should be found.
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1451
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1452 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
1453 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
1454 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
1455 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
1456 responsible, return the first backend.
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
1457
32069
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1458 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
1459 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
1460 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
1461 be registered."
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1462 (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
1463 (error "No handled backends"))
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1464 (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
1465 (catch 'found
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1466 ;; 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
1467 ;; 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
1468 (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
1469 (and (or (not register)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1470 (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
1471 (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
1472 (throw 'found backend)))
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1473 ;; no responsible backend
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1474 (if (not register)
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1475 ;; 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
1476 (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
1477 ;; 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
1478 ;; could register FILE
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 (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
1481 (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
1482 (throw 'found backend)))
4b577e4fc758 (vc-responsible-backend): Undo the previous change in the argument
André Spiegel <spiegel@gnu.org>
parents: 32059
diff changeset
1483 (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
1484
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1485 (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
1486 "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
1487 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
1488 nil)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1489
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1490 (defun vc-default-could-register (backend file)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1491 "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
1492 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
1493 t)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1494
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1495 (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
1496 "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
1497 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
1498 `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
1499 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
1500 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
1501 rather than user editing!"
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1502 (and (string= buffer-file-name file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1503 (if keep
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1504 (progn
1905
494dd05d460c * files.el (revert-buffer): Reverse the sense of the first
Jim Blandy <jimb@redhat.com>
parents: 1674
diff changeset
1505 (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
1506 ;; 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
1507 ;; 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
1508 ;; 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
1509 (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
1510 (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
1511 (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
1512 (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
1513 (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
1514 (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
1515 (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
1516 (view-mode-enter))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1517 (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
1518 (kill-buffer (current-buffer)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1519
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1520 (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
1521 "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
1522 (if (string= buffer-file-name file)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1523 (vc-resynch-window file keep noquery)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1524 (let ((buffer (get-file-buffer file)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1525 (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
1526 (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
1527 (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
1528 (vc-dired-resynch-file file))
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1529
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1530 (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
1531 "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
1532 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
1533 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
1534 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
1535 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
1536 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
1537 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
1538 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
1539 \(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
1540 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
1541 (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
1542 (if vc-before-checkin-hook
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1543 (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
1544 (with-current-buffer parent
17274
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1545 (run-hooks 'vc-before-checkin-hook))
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1546 (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
1547 (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
1548 (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
1549 (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
1550 (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
1551 (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
1552 (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
1553 (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
1554 (vc-log-edit file)
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1555 (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
1556 (if after-hook
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1557 (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
1558 (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
1559 (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
1560 (when comment
470147903e33 (vc-start-entry): Only erase the buffer if comment is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32910
diff changeset
1561 (erase-buffer)
470147903e33 (vc-start-entry): Only erase the buffer if comment is set.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32910
diff changeset
1562 (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
1563 (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
1564 (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
1565 (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
1566
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1567 (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
1568 "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
1569 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
1570 REV defaults to the latest revision.
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1571
cfe886db83f8 #Document prev change.
André Spiegel <spiegel@gnu.org>
parents: 38606
diff changeset
1572 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
1573 (and writable
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1574 (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
1575 (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
1576 (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
1577 (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
1578 (with-vc-properties
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1579 file
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1580 (condition-case err
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1581 (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
1582 (file-error
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1583 ;; 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
1584 (when writable
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1585 (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
1586 (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
1587 (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
1588 `((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
1589 (not writable))
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1590 (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
1591 'up-to-date
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1592 'needs-patch)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1593 'edited))
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
1594 (vc-checkout-time . ,(nth 5 (file-attributes file)))))
38606
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1595 (vc-resynch-buffer file t t)
32e167f31eb6 (vc-checkout-hook): New hook.
André Spiegel <spiegel@gnu.org>
parents: 38595
diff changeset
1596 (run-hooks 'vc-checkout-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1597
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1598 (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
1599 "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
1600 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1601 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1602 (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
1603 (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
1604 (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
1605 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
1606 (error "Steal canceled"))
42548
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1607 (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
1608 (with-vc-properties
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1609 file
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1610 (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
1611 `((vc-state . edited)))
1cf3624d80ac (vc-branch-part): Return nil if there's no `.'
André Spiegel <spiegel@gnu.org>
parents: 42205
diff changeset
1612 (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
1613 (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
1614 ;; 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
1615 ;; 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
1616 (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
1617 (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
1618 (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
1619 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1620 (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
1621 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1622 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1623 (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
1624
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
1625 (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
1626 "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
1627 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
1628 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
1629 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
1630 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
1631 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
1632
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1633 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
1634 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
1635
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1636 Runs the normal hook `vc-checkin-hook'."
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1637 (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
1638 file rev comment initial-contents
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
1639 "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
1640 (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
1641 (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
1642 ;; "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
1643 ;; 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
1644 (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
1645 (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
1646 (with-vc-properties
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1647 file
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
1648 ;; 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
1649 (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
1650 (progn
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1651 (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
1652 (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
1653 `((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
1654 (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
1655 (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
1656 (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
1657 'vc-checkin-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1658
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
1659 (defun vc-finish-logentry (&optional nocomment)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1660 "Complete the operation implied by the current log entry.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1661 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
1662 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
1663 the buffer contents as a comment."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1664 (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
1665 ;; 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
1666 (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
1667 ;; 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
1668 (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
1669 (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
1670 'logentry-check)
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
1671 (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
1672 ;; 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
1673 ;; 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
1674 (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
1675 (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
1676 (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
1677 ;; 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
1678 (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
1679 (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
1680 (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
1681 (log-entry (buffer-string))
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1682 (after-hook vc-log-after-operation-hook)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1683 (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
1684 (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
1685 ;; 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
1686 (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
1687 (funcall log-operation
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1688 log-file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1689 log-version
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1690 log-entry))
20661
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1691 ;; 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
1692 ;; 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
1693 (let ((logbuf (get-buffer "*VC-log*")))
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1694 (cond ((and logbuf vc-delete-logbuf-window)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1695 (delete-windows-on logbuf (selected-frame))
22721
d023df160219 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 22715
diff changeset
1696 ;; 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
1697 (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
1698 (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
1699 (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
1700 (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
1701 ;; 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
1702 (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
1703 (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
1704 (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
1705 (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
1706 (run-hooks after-hook 'vc-finish-logentry-hook)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1707
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1708 ;; Code for access to the comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1709
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1710 ;; Additional entry points for examining version histories
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1711
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1712 ;;;###autoload
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1713 (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
1714 "Display diffs between file versions.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1715 Normally this compares the current file and buffer with the most
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1716 recent checked in version of that file. This uses no arguments. With
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1717 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
1718 version designators specifying which versions to compare. The
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1719 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
1720 saving the buffer."
14376
eb8910a353fc (vc-diff): Make NOT-URGENT default to t.
Richard M. Stallman <rms@gnu.org>
parents: 14297
diff changeset
1721 (interactive (list current-prefix-arg t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1722 (if historic
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1723 (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
1724 (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
1725 (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
1726 (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
1727 (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
1728 (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
1729 (vc-version-diff file nil nil)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1730
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1731 (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
1732 "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
1733 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
1734 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
1735 a directory, in that case, generate diffs between the correponding
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1736 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
1737 (interactive
27436
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1738 (let ((file (expand-file-name
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1739 (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
1740 "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
1741 "File or dir to diff: ")
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1742 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
1743 (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
1744 ;; 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
1745 (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
1746 ;; 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
1747 ((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
1748 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
1749 ;; 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
1750 ((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
1751 (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
1752 ;; 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
1753 (t
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1754 (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
1755 (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
1756 (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
1757 (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
1758 ;; 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
1759 (list file
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1760 (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
1761 (concat "Older version (default "
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1762 rev1-default "): ")
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1763 "Older version: ")
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1764 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
1765 (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
1766 (concat "Newer version (default "
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1767 rev2-default "): ")
ed770a0a7846 2005-09-24 Emilio C. Lopes <eclig@gmx.net>
Romain Francoise <romain@orebokech.com>
parents: 65582
diff changeset
1768 "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
1769 nil nil rev2-default))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1770 (if (file-directory-p file)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
1771 ;; 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
1772 (progn
66e9d0506b71 (vc-do-command): If the destination buffer is already current, don't
André Spiegel <spiegel@gnu.org>
parents: 36395
diff changeset
1773 (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
1774 (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
1775 (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
1776 (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
1777 (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
1778 (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
1779 " and "
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1780 (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
1781 ":\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
1782 (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
1783 (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
1784 '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
1785 (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
1786 (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
1787 ;; 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
1788 ;; 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
1789 ;; 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
1790 (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
1791 (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
1792 (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
1793 (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
1794 (progn
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1795 (if rev1
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1796 (if rev2
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1797 (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
1798 (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
1799 (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
1800 nil)
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1801 (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
1802 ;; 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
1803 ;; 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
1804 (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
1805 (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
1806 (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
1807 (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
1808 (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
1809 (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
1810 t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1811
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1812 (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
1813 (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
1814 (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
1815 (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
1816 rev))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1817
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1818 (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
1819 "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
1820 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
1821 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
1822
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1823 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
1824 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
1825 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
1826 (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
1827 (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
1828 (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
1829 (setq rev2 nil))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1830 (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
1831 (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
1832 file
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1833 (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
1834 (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
1835 (if (and file-rev1 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
1836 (apply 'vc-do-command "*vc-diff*" 1 "diff" nil
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1837 (append (vc-switches nil 'diff)
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1838 ;; Provide explicit labels like RCS or CVS would do
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1839 ;; so diff-mode refers to `file' rather than to
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1840 ;; `file-rev1' when trying to find/apply/undo hunks.
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1841 (list "-L" (vc-diff-label file file-rev1 rev1)
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1842 "-L" (vc-diff-label file file-rev2 rev2)
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1843 (file-relative-name file-rev1)
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1844 (file-relative-name file-rev2))))
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1845 (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
1846
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1847
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1848 (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
1849 (let ((switches
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1850 (or (if backend
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1851 (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
1852 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
1853 "-switches")))))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1854 (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
1855 (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
1856 (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
1857 (cond
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1858 ((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
1859 (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
1860 ;; 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
1861 ;; 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
1862 ;; 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
1863 (if (listp switches) switches))))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
1864
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
1865 ;; 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
1866 (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
1867 (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
1868
54618
7cd50dab9d3d (vc-version-diff, vc-default-diff-tree): Change `rel' -> `rev'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54586
diff changeset
1869 (defun vc-default-diff-tree (backend dir rev1 rev2)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1870 "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
1871 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
1872 ;; 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
1873 ;; 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
1874 ;; 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
1875 ;; 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
1876 ;; 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
1877 ;; 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
1878 (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
1879 (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
1880 default-directory
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1881 (lambda (f)
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1882 (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
1883 `(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
1884 (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
1885 (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
1886 '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
1887
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1888 (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
1889 "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
1890 (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
1891 ;; 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
1892 ;; 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
1893 (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
1894 (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
1895 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
1896 ;; 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
1897 (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
1898 ;; 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
1899 'undecided))
9031427edfa3 (vc-diff-internal, vc-coding-system-for-diff, vc-default-diff-tree):
André Spiegel <spiegel@gnu.org>
parents: 39427
diff changeset
1900
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1901 ;;;###autoload
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1902 (defun vc-version-other-window (rev)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1903 "Visit version REV of the current file in another window.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1904 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
1905 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
1906 (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
1907 (vc-ensure-vc-buffer)
32888
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1908 (let* ((file buffer-file-name)
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1909 (version (if (string-equal rev "")
78063b725d3f (vc-version-other-window): Bind `file'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32748
diff changeset
1910 (vc-workfile-version file)
41556
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1911 rev)))
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1912 (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
1913
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1914 (defun vc-find-version (file version)
678f91af978a (vc-find-version): New function.
André Spiegel <spiegel@gnu.org>
parents: 41395
diff changeset
1915 "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
1916 (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
1917 (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
1918 (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
1919 (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
1920 (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
1921 (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
1922 (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
1923 (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
1924 (let ((failed t))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1925 (unwind-protect
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1926 (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
1927 (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
1928 (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
1929 (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
1930 ;; 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
1931 ;; vc-checkout-switches.
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1932 (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
1933 (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
1934 (setq failed nil))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1935 (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
1936 (delete-file filename))))
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1937 (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
1938 (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
1939 (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
1940
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1941 (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
1942 "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
1943 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
1944 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
1945 (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
1946 (unwind-protect
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1947 (progn
cf312195338d (vc-find-version): Use the new backend op `find-version'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47781
diff changeset
1948 (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
1949 (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
1950 (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
1951 (delete-file tmpfile))))
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1952
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1953 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1954
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1955 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1956 (defun vc-insert-headers ()
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1957 "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
1958 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
1959 the variable `vc-BACKEND-header'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1960 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1961 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1962 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1963 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1964 (widen)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1965 (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
1966 (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
1967 (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
1968 (comment-start-vc (or (car delims) comment-start "#"))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1969 (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
1970 (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
1971 'header))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1972 (hdstrings (and (boundp hdsym) (symbol-value hdsym))))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1973 (dolist (s hdstrings)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1974 (insert comment-start-vc "\t" s "\t"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1975 comment-end-vc "\n"))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1976 (if vc-static-header-alist
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1977 (dolist (f vc-static-header-alist)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1978 (if (string-match (car f) buffer-file-name)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
1979 (insert (format (cdr f) (car hdstrings)))))))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1980
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
1981 (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
1982 "Clear all version headers in the current buffer (or FILE).
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
1983 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
1984 (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
1985 (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
1986 (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
1987 (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
1988 (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
1989 (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
1990 ;; 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
1991 ;; 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
1992 ;; 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
1993 (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
1994 (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
1995 (vc-restore-buffer-context context))
32058
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
1996 (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
1997 (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
1998 (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
1999
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2000 ;;;###autoload
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2001 (defun vc-merge ()
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2002 "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
2003 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
2004 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
2005 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
2006 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
2007
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2008 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
2009 (interactive)
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2010 (vc-ensure-vc-buffer)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2011 (vc-buffer-sync)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2012 (let* ((file buffer-file-name)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2013 (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
2014 (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
2015 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
2016 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2017 ((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
2018 (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
2019 ((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
2020 (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
2021 "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
2022 (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
2023 (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
2024 (setq first-version
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2025 (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
2026 "(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
2027 (if (string= first-version "")
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2028 (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
2029 (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
2030 (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
2031 (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
2032 (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
2033 (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
2034 (setq second-version
f91ef1141a75 (with-vc-file, edit-vc-file): Specify `indent-function' property.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 32310
diff changeset
2035 (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
2036 (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
2037 ;; 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
2038 ;; 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
2039 (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
2040 ;; 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
2041 (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
2042 (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
2043 (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
2044
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2045 (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
2046 (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
2047 (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
2048 (smerge-mode 1)
54586
c3043c1faed3 (vc-maybe-resolve-conflicts): Don't prompt the user.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 54562
diff changeset
2049 (message "File contains conflicts.")))
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2050
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
2051 ;;;###autoload
47781
79bdd88fb006 (vc-resolve-conflicts); Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47780
diff changeset
2052 (defalias 'vc-resolve-conflicts 'smerge-ediff)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2053
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2054 ;; 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
2055 ;; 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
2056
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
2057 (defvar vc-dired-switches)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
2058 (defvar vc-dired-terse-mode)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
2059
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2060 (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
2061 (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
2062 (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
2063 (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
2064 (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
2065 (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
2066 (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
2067 map))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2068
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
2069 (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
2070 "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
2071
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2072 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
2073 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
2074 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
2075 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
2076 Dired.
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2077
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2078 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
2079 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
2080 `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
2081 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
2082 `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
2083 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
2084 ;; 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
2085 ;; 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
2086 ;; 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
2087 (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
2088 (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
2089 ;; 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
2090 ;; 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
2091 ;; (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
2092 ;; 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
2093 ;; 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
2094 ;; enough as delimeter.
66325
fda96ff4c7e5 * files.el (directory-listing-before-filename-regexp): New
Michael Albinus <michael.albinus@gmx.de>
parents: 65689
diff changeset
2095 (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
2096 (let* ((l "\\([A-Za-z]\\|[^\0-\177]\\)")
48142
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2097 ;; 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
2098 ;; and they can be followed by ".".
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2099 (month (concat l l "+\\.?"))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2100 (s " ")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2101 (yyyy "[0-9][0-9][0-9][0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2102 (dd "[ 0-3][0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2103 (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
2104 (seconds "[0-6][0-9]\\([.,][0-9]+\\)?")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2105 (zone "[-+][0-2][0-9][0-5][0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2106 (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
2107 (iso-time (concat HH:MM "\\(:" seconds "\\( ?" zone "\\)?\\)?"))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2108 (iso (concat "\\(\\(" yyyy "-\\)?" iso-mm-dd "[ T]" iso-time
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2109 "\\|" yyyy "-" iso-mm-dd "\\)"))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2110 (western (concat "\\(" month s "+" dd "\\|" dd "\\.?" s month "\\)"
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2111 s "+"
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2112 "\\(" HH:MM "\\|" yyyy "\\)"))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2113 (western-comma (concat month s "+" dd "," s "+" yyyy))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2114 ;; 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
2115 ;; 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
2116 (mm "[ 0-1]?[0-9]")
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2117 (japanese
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2118 (concat mm l "?" s dd l "?" s "+"
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2119 "\\(" HH:MM "\\|" yyyy l "?" "\\)")))
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2120 ;; 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
2121 (concat ".*" s
48142
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2122 "\\(" western "\\|" western-comma "\\|" japanese "\\|" iso "\\)"
9f0d9f099b64 Add comment to prev change.
André Spiegel <spiegel@gnu.org>
parents: 48139
diff changeset
2123 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
2124 (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
2125 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
2126 (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
2127 vc-dired-switches))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2128 (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
2129 (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
2130
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2131 (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
2132 "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
2133 (interactive)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2134 (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
2135 nil
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2136 (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
2137 (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
2138 (vc-dired-hook)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2139 (revert-buffer))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2140
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2141 (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
2142 "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
2143 (interactive)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2144 (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
2145 (and f
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2146 (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
2147 (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
2148 "locked file"))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2149
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2150 (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
2151
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2152 (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
2153 (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
2154 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2155 ((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
2156 ((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
2157 ((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
2158 ((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
2159 ((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
2160
47842
f7c7cc74fde2 (vc-dired-reformat-line): As a temporary fix, remove all text
André Spiegel <spiegel@gnu.org>
parents: 47796
diff changeset
2161 (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
2162 "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
2163 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
2164 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
2165 (beginning-of-line)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2166 (when (re-search-forward
47881
2a95bf2d8eaf (vc-dired-reformat-line): Simplified. Handles text properties
André Spiegel <spiegel@gnu.org>
parents: 47842
diff changeset
2167 ;; 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
2168 ;; 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
2169 "^..[drwxlts-]+ \\( *[0-9]+\\( [^ ]+ +\\([^ ]+ +\\)?[0-9]+\\)?\\) "
2a95bf2d8eaf (vc-dired-reformat-line): Simplified. Handles text properties
André Spiegel <spiegel@gnu.org>
parents: 47842
diff changeset
2170 (line-end-position) t)
2a95bf2d8eaf (vc-dired-reformat-line): Simplified. Handles text properties
André Spiegel <spiegel@gnu.org>
parents: 47842
diff changeset
2171 (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
2172 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
2173
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2174 (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
2175 "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
2176 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
2177 (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
2178 (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
2179 (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
2180 (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
2181 (cond
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2182 ;; subdir header line
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2183 ((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
2184 ;; 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
2185 ;; 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
2186 (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
2187 (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
2188 (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
2189 (forward-line 1)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2190 ;; 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
2191 (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
2192 (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
2193 (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
2194 ;; file line
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2195 ((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
2196 (cond
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2197 ;; subdir
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2198 ((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
2199 (cond
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2200 ((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
2201 vc-directory-exclusion-list)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2202 (let ((pos (point)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2203 (dired-kill-tree filename)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2204 (goto-char pos)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2205 (dired-kill-line)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2206 (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
2207 ;; 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
2208 ;; 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
2209 ;; 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
2210 (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
2211 (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
2212 ((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
2213 (dired-kill-line))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2214 (t
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2215 (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
2216 (forward-line 1))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2217 ;; 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
2218 ((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
2219 (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
2220 (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
2221 (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
2222 (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
2223 (t
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2224 (dired-kill-line))))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2225 ;; any other line
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2226 (t (forward-line 1))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2227 (vc-dired-purge))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2228 (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
2229 (save-restriction
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2230 (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
2231 (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
2232 (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
2233 (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
2234
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2235 (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
2236 "Remove empty subdirs."
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2237 (goto-char (point-min))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2238 (while (dired-get-subdir)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2239 (forward-line 2)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2240 (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
2241 (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
2242 (goto-char (point-max)))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2243 (forward-line -2)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2244 (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
2245 (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
2246 ;; 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
2247 ;; 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
2248 (forward-line 1)
53283
019243f7a304 (vc-dired-purge): Avoid error from `kill-line'.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 52401
diff changeset
2249 (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
2250 (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
2251 (goto-char (point-max))))))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2252 (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
2253
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2254 (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
2255 "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
2256 (let (result)
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2257 ;; 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
2258 (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
2259 (mapcar (lambda (buffer)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2260 (with-current-buffer buffer
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2261 (if vc-dired-mode
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2262 (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
2263 (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
2264 result))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2265
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2266 (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
2267 "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
2268 (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
2269 (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
2270 (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
2271 (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
2272 (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
2273 ;; 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
2274 ;; 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
2275 (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
2276 (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
2277 buffers))))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2278
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2279 ;;;###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
2280 (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
2281 "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
2282
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2283 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
2284
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2285 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
2286 `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
2287 (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
2288 (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
2289 (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
2290 (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
2291 (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
2292 (if read-switches
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2293 (setq vc-dired-switches
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
2294 (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
2295 vc-dired-switches)))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2296 (require 'dired)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2297 (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
2298 (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
2299 (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
2300 vc-dired-switches
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
2301 'vc-dired-mode))))
10475
2d9590603a06 Revert Jan 15 and Jan 5 changes.
Richard M. Stallman <rms@gnu.org>
parents: 10431
diff changeset
2302
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2303
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2304 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2305
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2306 (defun vc-snapshot-precondition (dir)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2307 "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
2308 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
2309 \(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
2310 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
2311 Otherwise, return nil."
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2312 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2313 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2314 (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
2315 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2316 (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
2317 (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
2318 (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
2319 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2320
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2321 ;;;###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
2322 (defun vc-create-snapshot (dir name branchp)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2323 "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
2324 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
2325 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
2326 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
2327 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
2328 (interactive
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2329 (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
2330 (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
2331 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
2332 (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
2333 (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
2334 (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
2335 '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
2336 (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
2337
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2338 (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
2339 (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
2340 (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
2341 (let ((result (vc-snapshot-precondition dir)))
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2342 (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
2343 (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
2344 (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
2345 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2346 (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
2347 (vc-call assign-name f name))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2348
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2349 ;;;###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
2350 (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
2351 "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
2352 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
2353 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
2354 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
2355 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
2356 (interactive
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2357 (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
2358 (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
2359 (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
2360 (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
2361 (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
2362 (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
2363 (abbreviate-file-name dir)))))
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
2364 (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
2365 (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
2366 'retrieve-snapshot dir name update)
65582
4d1085b02d64 Message format spec fixes (1)
Deepak Goel <deego@gnufans.org>
parents: 65405
diff changeset
2367 (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
2368
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2369 (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
2370 (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
2371 (progn
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2372 (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
2373 dir
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2374 (lambda (f) (and
51064
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
2375 (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
2376 (vc-error-occurred
f2383fb5260e (vc-log-mode-map, vc-maximum-comment-ring-size)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50926
diff changeset
2377 (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
2378 (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
2379 (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
2380 (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
2381 (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
2382 (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
2383 (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
2384 dir
37544
94c0503d3f2d (vc-next-action-on-file): Only force buffer+file to writable
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36710
diff changeset
2385 (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
2386 (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
2387 (if update (vc-resynch-buffer f t t)))))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2388
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2389 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2390
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2391 ;;;###autoload
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2392 (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
2393 "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
2394 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
2395 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2396 (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
2397 (let ((file buffer-file-name))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2398 (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
2399 ;; 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
2400 ;; 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
2401 ;; 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
2402 (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
2403 (progn
4598019c5c85 Add new optional BUFFER argument to vc-BACKEND-print-log and
André Spiegel <spiegel@gnu.org>
parents: 54398
diff changeset
2404 (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
2405 (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
2406 (wrong-number-of-arguments
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2407 ;; 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
2408 ;; 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
2409 ;; Otherwise, resignal.
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2410 (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
2411 (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
2412 (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
2413 'print-log))))
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2414 (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
2415 (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
2416 ;; for backward compatibility
494d96bf5f98 (vc-print-log): Use condition-case to check for backward
André Spiegel <spiegel@gnu.org>
parents: 54618
diff changeset
2417 (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
2418 (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
2419 (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
2420 (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
2421 (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
2422 `(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
2423 (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
2424 (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
2425 (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
2426 (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
2427 (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
2428 (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
2429 (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
2430 (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
2431 ;; 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
2432 (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
2433 'show-log-entry
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2434 ',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
2435 (set-buffer-modified-p nil)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2436
47760
15d0c5379959 (vc-default-show-log-entry): Fix typo.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 47748
diff changeset
2437 (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
2438 (with-no-warnings
ca4a1b3128f7 (vc-default-show-log-entry): Use with-no-warnings.
Richard M. Stallman <rms@gnu.org>
parents: 51627
diff changeset
2439 (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
2440
32054
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2441 (defun vc-default-comment-history (backend file)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2442 "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
2443 (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
2444 (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
2445 (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
2446 (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
2447 (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
2448
fef29341db1c (vc-next-action-on-file): Update mode line only if file is visited.
André Spiegel <spiegel@gnu.org>
parents: 31836
diff changeset
2449 (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
2450 "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
2451 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
2452 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
2453 (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
2454 "\\(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
2455 "\\(\\*\\*\\* 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
2456 (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
2457 (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
2458 (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
2459 (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
2460 (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
2461 (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
2462 (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
2463 (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
2464 (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
2465 (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
2466 (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
2467 (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
2468
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2469 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2470 (defun vc-revert-buffer ()
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2471 "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
2472 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
2473 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
2474 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
2475 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2476 (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
2477 ;; 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
2478 ;; 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
2479 (vc-buffer-sync nil)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2480 (let ((file buffer-file-name)
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
2481 ;; This operation should always ask for confirmation.
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
2482 (vc-suppress-confirm nil)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2483 (obuf (current-buffer))
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2484 status)
33548
714a4c4917cd (vc-revert-buffer): Ask for confirmation if file seems up-to-date.
André Spiegel <spiegel@gnu.org>
parents: 33546
diff changeset
2485 (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
2486 (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
2487 (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
2488 (unless (vc-workfile-unchanged-p file)
59442
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
2489 (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
2490 ;; 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
2491 ;; 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
2492 ;; 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
2493 (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
2494 (win (save-selected-window
37d47d9bf8b1 (vc-allow-async-revert): New user option.
André Spiegel <spiegel@gnu.org>
parents: 59011
diff changeset
2495 (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
2496 (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
2497 (when status
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2498 (unwind-protect
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2499 (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
2500 (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
2501 (select-window win)
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2502 (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
2503 (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
2504 (make-frame-invisible))
921a2e8fa97e (with-vc-properties): Use conses rather than length-2 lists.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32126
diff changeset
2505 (delete-window))))))
21329
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2506 (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
2507 ;; 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
2508 (message "Reverting %s..." file)
32093
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2509 (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
2510 (message "Reverting %s...done" file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2511
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2512 ;;;###autoload
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2513 (defun vc-update ()
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2514 "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
2515 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
2516 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
2517 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
2518 the current branch are merged into the working file."
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2519 (interactive)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2520 (vc-ensure-vc-buffer)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2521 (vc-buffer-sync nil)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2522 (let ((file buffer-file-name))
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2523 (if (vc-up-to-date-p file)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2524 (vc-checkout file nil "")
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2525 (if (eq (vc-checkout-model file) 'locking)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2526 (if (eq (vc-state file) 'edited)
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2527 (error
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2528 (substitute-command-keys
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2529 "File is locked--type \\[vc-revert-buffer] to discard changes"))
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2530 (error
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2531 (substitute-command-keys
49597
e88404e8f2cf Trailing whitespace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 48964
diff changeset
2532 "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
2533 (vc-state file)))
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2534 (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
2535 (error "Sorry, merging news is not implemented for %s"
43586
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2536 (vc-backend file))
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2537 (vc-call merge-news file)
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2538 (vc-resynch-window file t t))))))
62c8a228bc1f (vc-update): New function.
André Spiegel <spiegel@gnu.org>
parents: 43584
diff changeset
2539
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2540 (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
2541 "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
2542 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
2543 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
2544 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
2545 (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
2546 (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
2547 (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
2548 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
2549 ;; 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
2550 (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
2551 (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
2552 backup-file)))))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2553
67574
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2554 (defun vc-default-revert (backend file contents-done)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2555 (unless contents-done
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2556 (let ((rev (vc-workfile-version file))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2557 (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
2558 (message "Checking out %s..." file)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2559 (let ((failed t)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2560 (backup-name (car (find-backup-file-name file))))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2561 (when backup-name
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2562 (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
2563 (unless (file-writable-p file)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2564 (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
2565 (unwind-protect
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2566 (let ((coding-system-for-read 'no-conversion)
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2567 (coding-system-for-write 'no-conversion))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2568 (with-temp-file file
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2569 (let ((outbuf (current-buffer)))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2570 ;; 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
2571 (with-current-buffer file-buffer
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2572 (let ((default-directory (file-name-directory file)))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2573 (vc-call find-version file rev outbuf)))))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2574 (setq failed nil))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2575 (when backup-name
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2576 (if failed
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2577 (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
2578 (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
2579 (message "Checking out %s...done" file))))
9c4c9e375003 (vc-default-revert): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67552
diff changeset
2580
32093
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2581 (defun vc-revert-file (file)
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2582 "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
2583 (with-vc-properties
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2584 file
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2585 (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
2586 (when backup-file
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2587 (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
2588 (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
2589 (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
2590 `((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
2591 (vc-checkout-time . ,(nth 5 (file-attributes file)))))
32093
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2592 (vc-resynch-buffer file t t))
5c36fa51ee96 (vc-revert-file): New function.
André Spiegel <spiegel@gnu.org>
parents: 32069
diff changeset
2593
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2594 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2595 (defun vc-cancel-version (norevert)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2596 "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
2597 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
2598 (interactive "P")
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2599 (vc-ensure-vc-buffer)
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2600 (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
2601 (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
2602 (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
2603 (cond
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2604 ((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
2605 (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
2606 ((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
2607 (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
2608 ((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
2609 (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
2610 (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
2611 (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
2612 (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
2613 (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
2614
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2615 (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
2616 (with-vc-properties
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2617 file
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2618 (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
2619 `((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
2620 (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
2621 0
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2622 (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
2623 (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
2624 (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
2625
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2626 (cond
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2627 (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
2628 (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
2629 (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
2630 ;; 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
2631 (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
2632 (setq backup-inhibited t))
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2633 (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
2634 (vc-clear-headers)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2635 (vc-mode-line file)
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2636 (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
2637 (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
2638 (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
2639 (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
2640
38595
396f97177ef1 (vc-switch-backend): Fix autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38442
diff changeset
2641 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2642 (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
2643 "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
2644 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
2645 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
2646 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
2647 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
2648 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
2649 (interactive
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2650 (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
2651 (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
2652 (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
2653 (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
2654 (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
2655 (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
2656 (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
2657 ;; Find the registered backends.
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2658 (dolist (backend vc-handled-backends)
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2659 (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
2660 (push backend backends)))
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2661 ;; Find the next backend.
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2662 (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
2663 (others (delete backend backends)))
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2664 (cond
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2665 ((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
2666 (current-prefix-arg
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2667 (intern
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2668 (upcase
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2669 (completing-read
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2670 (format "Switch to backend [%s]: " def)
4196f89984ce * vc.el (vc-editable-p): Minor optimization.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32054
diff changeset
2671 (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
2672 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
2673 (t def))))))
32059
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2674 (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
2675 (vc-file-clearprops file)
13e0fdf65e3c (with-vc-file, vc-next-action-on-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 32058
diff changeset
2676 (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
2677 ;; 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
2678 (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
2679 (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
2680 (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
2681 (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
2682
38726
2dddcf515155 (vc-transfer-file): Fix malformed autoload cookie.
Gerd Moellmann <gerd@gnu.org>
parents: 38608
diff changeset
2683 ;;;###autoload
31810
495ca3bd372d (vc-index-of, vc-transfer-file, vc-default-receive-file): New functions.
André Spiegel <spiegel@gnu.org>
parents: 31718
diff changeset
2684 (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
2685 "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
2686 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
2687 \(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
2688 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
2689 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
2690 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
2691 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
2692 \(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
2693 (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
2694 (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
2695 (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
2696 (move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2697 (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
2698 ;; 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
2699 (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
2700 (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
2701 (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
2702 (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
2703 (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
2704 (if registered
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2705 (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
2706 ;; `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
2707 (vc-switch-backend file old-backend)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2708 (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
2709 (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
2710 (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
2711 ;; 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
2712 (unwind-protect
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2713 (progn
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2714 (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
2715 (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
2716 ;; 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
2717 ;; 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
2718 ;; 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
2719 (if unmodified-file
50894
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2720 (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
2721 'ok-if-already-exists 'keep-date)
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2722 (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
2723 (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
2724 (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
2725 (when modified-file
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2726 (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
2727 (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
2728 (vc-checkout file t nil))
32126
3aab429d3c8a (vc-revert-buffer): Handle empty diff properly.
André Spiegel <spiegel@gnu.org>
parents: 32097
diff changeset
2729 (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
2730 (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
2731 (when move
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2732 (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
2733 (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
2734 (vc-call unregister file))
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2735 (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
2736 (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
2737 (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
2738 (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
2739 (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
2740
32097
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2741 (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
2742 "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
2743 (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
2744
adf341c172af (vc-transfer-file, vc-default-receive-file): Rewritten to factorize
André Spiegel <spiegel@gnu.org>
parents: 32093
diff changeset
2745 (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
2746 "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
2747 (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
2748
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2749 (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
2750 "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
2751 (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
2752 (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
2753 (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
2754 (masters
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2755 ;; 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
2756 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2757 (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
2758 templates)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2759 (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
2760 (file-symlink-p (file-name-directory oldmaster)))
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2761 (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
2762 (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
2763 oldmaster
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2764 (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
2765 ;; 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
2766 (dolist (f masters)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2767 (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
2768 (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
2769 ;; 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
2770 (dolist (f masters)
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2771 (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
2772 (file-directory-p dir))
4dc2d45403ec (with-vc-properties, with-vc-file, edit-vc-file):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49869
diff changeset
2773 (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
2774 (error "New file lacks a version control directory")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2775
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2776 (defun vc-delete-file (file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2777 "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
2778 (interactive "fVC delete file: ")
51245
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2779 (let ((buf (get-file-buffer file))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2780 (backend (vc-backend file)))
f6920b201e1c (vc-delete-file): Fix free variable reference.
André Spiegel <spiegel@gnu.org>
parents: 51064
diff changeset
2781 (unless backend
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2782 (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
2783 (file-name-nondirectory file)))
50926
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2784 (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
2785 (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
2786 (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
2787 (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
2788 (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
2789 (file-name-nondirectory file)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2790 (error "Abort!"))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2791 (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
2792 (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
2793 (let ((backup-inhibited nil))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2794 (backup-buffer))))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2795 (vc-call delete-file file)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2796 ;; 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
2797 (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
2798
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2799 (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
2800 (condition-case nil
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2801 (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
2802 (error (rename-file old new)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2803 (vc-delete-file old)
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2804 (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
2805 (vc-register)))
dd6110a63907 New backend functions `delete-file' and `repository-hostname'.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50894
diff changeset
2806
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2807 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2808 (defun vc-rename-file (old new)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2809 "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
2810 (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
2811 (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
2812 (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
2813 (error "Please save files before moving them"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2814 (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
2815 (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
2816 (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
2817 (error "New file already exists"))
51627
1329f6a6c949 (vc-rename-file): Fix typo.
Luc Teirlinck <teirllm@auburn.edu>
parents: 51369
diff changeset
2818 (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
2819 (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
2820 (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
2821 (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
2822 (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
2823 (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
2824 ;; 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
2825 (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
2826 ;; ?? 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
2827 ;; 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
2828 ;; 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
2829 (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
2830 (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
2831 (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
2832 (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
2833 (vc-backend new)
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
2834 (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
2835 (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
2836
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2837 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2838 (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
2839 "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
2840 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
2841 directory.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2842
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2843 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
2844
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2845 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
2846 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
2847 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
2848
31404
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
2849 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
2850 log entries should be gathered."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2851 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2852 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2853 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2854 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2855 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2856 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2857 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2858 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2859 (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
2860 (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
2861 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2862 (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
2863 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2864 (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
2865 ;; 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
2866 ;; 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
2867 ;; 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
2868 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
2869 (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
2870 (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
2871 (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
2872 (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
2873 '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
2874
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2875 (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
2876 "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
2877 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
2878 ;; 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
2879 (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
2880 (changelog (find-change-log))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2881 ;; 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
2882 (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
2883 (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
2884 (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
2885 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
2886 (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
2887 (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
2888 (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
2889 (user-full-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2890 (user-login-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2891 (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
2892 (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
2893 user-mail-address)))
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2894 (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
2895 (barf-if-buffer-read-only)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2896 (vc-buffer-sync)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2897 (undo-boundary)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2898 (goto-char (point-min))
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2899 (push-mark)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2900 (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
2901 (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
2902 (unwind-protect
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2903 (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
2904 (setq default-directory odefault)
31565
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2905 (if (eq 0 (apply 'call-process
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2906 (expand-file-name "rcs2log"
de4e73d77734 (vc-dired-listing-switches): Fix :version.
Dave Love <fx@gnu.org>
parents: 31520
diff changeset
2907 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
2908 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
2909 "-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
2910 "-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
2911 "\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
2912 "\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
2913 (mapcar
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2914 (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
2915 (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
2916 (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
2917 f
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2918 (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
2919 files)))
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
2920 "done"
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2921 (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
2922 (erase-buffer)
59011
816dc38b1981 (vc-default-update-changelog): Use insert-file-contents, rather than
André Spiegel <spiegel@gnu.org>
parents: 58642
diff changeset
2923 (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
2924 "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
2925 (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
2926 (delete-file tempfile)))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2927
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
2928 ;; Annotate functionality
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2929
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2930 ;; 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
2931 ;; 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
2932 ;; 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
2933 ;; 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
2934 ;; 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
2935 (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
2936
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2937 ;; internal buffer-local variables
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2938 (defvar vc-annotate-backend nil)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2939 (defvar vc-annotate-parent-file nil)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2940 (defvar vc-annotate-parent-rev nil)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
2941 (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
2942
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2943 (defconst vc-annotate-font-lock-keywords
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2944 ;; 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
2945 '((vc-annotate-lines)))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2946
53663
34fd515d8bb8 (vc-annotate-mode): Inherit from fundamental-mode and activate
André Spiegel <spiegel@gnu.org>
parents: 53630
diff changeset
2947 (define-derived-mode vc-annotate-mode fundamental-mode "Annotate"
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2948 "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
2949
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2950 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
2951 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
2952 menu items."
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
2953 (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
2954 (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
2955 '(vc-annotate-font-lock-keywords t))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
2956 (view-mode 1))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2957
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2958 (defun vc-annotate-display-default (ratio)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2959 "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
2960 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
2961 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
2962 (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
2963 (message "Redisplaying annotation...")
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2964 (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
2965 (message "Redisplaying annotation...done"))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2966
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2967 (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
2968 "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
2969 ;; 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
2970 (caar (last color-map)))
67767
f4a3c7808545 (vc-annotate-car-last-cons): Defn moved up.
Richard M. Stallman <rms@gnu.org>
parents: 67755
diff changeset
2971
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2972 (defun vc-annotate-display-autoscale (&optional full)
57114
deddb5e7acc3 (annotate-time): Document point handling.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 56952
diff changeset
2973 "Highlight the output of \\[vc-annotate] using an autoscaled color map.
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2974 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
2975 oldest annotation in the buffer, or, with prefix argument FULL, to
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
2976 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
2977 (interactive "P")
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2978 (let ((newest 0.0)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2979 (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
2980 (current (vc-annotate-convert-time (current-time)))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2981 date)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2982 (message "Redisplaying annotation...")
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2983 ;; 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
2984 (save-excursion
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2985 (goto-char (point-min))
57906
ce81228800f3 (vc-annotate-display-autoscale): Make sure
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57904
diff changeset
2986 (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
2987 'annotate-time)
ce81228800f3 (vc-annotate-display-autoscale): Make sure
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 57904
diff changeset
2988 (forward-line 1)))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2989 (if (> date newest)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2990 (setq newest date))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2991 (if (< date oldest)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2992 (setq oldest date))))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
2993 (vc-annotate-display
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
2994 (/ (- (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
2995 (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
2996 (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
2997 (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
2998 (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
2999 (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
3000 (- current oldest)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3001 (- current newest))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3002 (format "Spanned to %.1f days old" (- current oldest))))))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3003
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3004 ;; Menu -- Using easymenu.el
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3005 (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
3006 "VC Annotate Display Menu"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3007 `("VC-Annotate"
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3008 ["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
3009 (setq vc-annotate-display-mode nil)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3010 (vc-annotate-display-select))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3011 :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
3012 ,@(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
3013 (mapcar (lambda (element)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3014 (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
3015 `[,(format "Span %.1f days" days)
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3016 (vc-annotate-display-select nil ,days)
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3017 :style toggle :selected
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3018 (eql vc-annotate-display-mode ,days) ]))
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3019 vc-annotate-menu-elements))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3020 ["Span ..."
67882
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3021 (vc-annotate-display-select
59639203f09a (vc-annotate-mode-map): Remove obsolete binding.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67767
diff changeset
3022 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
3023 "--"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3024 ["Span to Oldest"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3025 (unless (eq vc-annotate-display-mode 'scale)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3026 (vc-annotate-display-select nil 'scale))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3027 :style toggle :selected
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3028 (eq vc-annotate-display-mode 'scale)]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3029 ["Span Oldest->Newest"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3030 (unless (eq vc-annotate-display-mode 'fullscale)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3031 (vc-annotate-display-select nil 'fullscale))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3032 :style toggle :selected
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3033 (eq vc-annotate-display-mode 'fullscale)]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3034 "--"
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3035 ["Annotate previous revision" vc-annotate-prev-version]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3036 ["Annotate next revision" vc-annotate-next-version]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3037 ["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
3038 ["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
3039 ["Annotate latest revision" vc-annotate-workfile-version]
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3040 ["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
3041 ["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
3042
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3043 (defun vc-annotate-display-select (&optional buffer mode)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3044 "Highlight the output of \\[vc-annotate].
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3045 By default, the current buffer is highlighted, unless overridden by
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3046 BUFFER. `vc-annotate-display-mode' specifies the highlighting mode to
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3047 use; you may override this using the second optional arg MODE."
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3048 (interactive)
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3049 (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
3050 (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
3051 (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
3052 ;; 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
3053 (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
3054 (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
3055 ;; 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
3056 ((eq vc-annotate-display-mode 'scale)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3057 (vc-annotate-display-autoscale))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3058 ((eq vc-annotate-display-mode 'fullscale)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3059 (vc-annotate-display-autoscale t))
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3060 ((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
3061 (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
3062 (/ vc-annotate-display-mode
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3063 (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
3064 (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
3065 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
3066
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3067 ;;;###autoload
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3068 (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
3069 "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
3070
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3071 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
3072 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
3073 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
3074 youngest, and intermediate colors indicate intermediate ages. By
39233
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3075 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
3076 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
3077
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3078 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
3079 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
3080 displays and annotates that version instead of the current version
39388
bc299a98338c Doc fix
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 39309
diff changeset
3081 \(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
3082 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
3083 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
3084 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
3085 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
3086
a4c35b208150 (vc-annotate): Rewrote doc string.
André Spiegel <spiegel@gnu.org>
parents: 39117
diff changeset
3087 Customization variables:
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3088
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3089 `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
3090 mode-specific menu. `vc-annotate-color-map' and
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3091 `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
3092 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
3093 (interactive
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3094 (save-current-buffer
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3095 (vc-ensure-vc-buffer)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3096 (list buffer-file-name
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3097 (let ((def (vc-workfile-version buffer-file-name)))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3098 (if (null current-prefix-arg) def
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3099 (read-string
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3100 (format "Annotate from version (default %s): " def)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3101 nil nil def)))
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3102 (if (null current-prefix-arg)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3103 vc-annotate-display-mode
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3104 (float (string-to-number
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3105 (read-string "Annotate span days (default 20): "
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3106 nil nil "20")))))))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
3107 (vc-ensure-vc-buffer)
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3108 (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
3109 (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
3110 (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
3111 ;; 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
3112 ;; 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
3113 ;; 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
3114 (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
3115 (message "Annotating...")
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3116 ;; 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
3117 ;; 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
3118 ;; 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
3119 (if buf (with-current-buffer buf
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3120 (rename-buffer temp-buffer-name t)
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3121 ;; In case it had to be uniquified.
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3122 (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
3123 (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
3124 (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
3125 ;; 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
3126 ;; 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
3127 ;; with-output-to-temp-buffer
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3128 (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
3129 (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
3130 (vc-annotate-mode))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3131 (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
3132 (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
3133 (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
3134 (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
3135 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
3136 (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
3137 (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
3138 (message "Annotating... done")))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3139
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3140 (defun vc-annotate-prev-version (prefix)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3141 "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
3142
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3143 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
3144 versions previous."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3145 (interactive "p")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3146 (vc-annotate-warp-version (- 0 prefix)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3147
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3148 (defun vc-annotate-next-version (prefix)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3149 "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
3150
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3151 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
3152 versions after."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3153 (interactive "p")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3154 (vc-annotate-warp-version prefix))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3155
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3156 (defun vc-annotate-workfile-version ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3157 "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
3158 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3159 (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
3160 (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
3161 (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
3162 (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
3163 (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
3164 (vc-annotate-warp-version warp-rev)))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3165
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3166 (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
3167 "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
3168 ;; 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
3169 (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
3170
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3171 (defun vc-annotate-revision-at-line ()
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3172 "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
3173 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3174 (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
3175 (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
3176 (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
3177 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3178 (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
3179 (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
3180 (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
3181 (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
3182
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3183 (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
3184 "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
3185 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3186 (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
3187 (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
3188 (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
3189 (prev-rev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3190 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3191 (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
3192 (setq prev-rev
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3193 (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
3194 (vc-annotate-warp-version prev-rev)))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3195
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3196 (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
3197 "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
3198 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3199 (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
3200 (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
3201 (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
3202 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3203 (message "Cannot extract revision number from the current line")
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3204 (vc-print-log rev-at-line)))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3205
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3206 (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
3207 "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
3208 (interactive)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3209 (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
3210 (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
3211 (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
3212 (prev-rev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3213 (if (not rev-at-line)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3214 (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
3215 (setq prev-rev
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3216 (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
3217 (if (not prev-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3218 (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
3219 (save-window-excursion
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3220 (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
3221 (switch-to-buffer "*vc-diff*"))))))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3222
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3223 (defun vc-annotate-warp-version (revspec)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3224 "Annotate the version described by REVSPEC.
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3225
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3226 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
3227 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
3228 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
3229 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
3230 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
3231 revision."
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3232 (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
3233 (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
3234 (let* ((buf (current-buffer))
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3235 (oldline (line-number-at-pos))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3236 (revspeccopy revspec)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3237 (newrev nil))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3238 (cond
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3239 ((and (integerp revspec) (> revspec 0))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3240 (setq newrev vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3241 (while (and (> revspec 0) newrev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3242 (setq newrev (vc-call next-version
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3243 vc-annotate-parent-file newrev))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3244 (setq revspec (1- revspec)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3245 (if (not newrev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3246 (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
3247 revspeccopy vc-annotate-parent-rev)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3248 ((and (integerp revspec) (< revspec 0))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3249 (setq newrev vc-annotate-parent-rev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3250 (while (and (< revspec 0) newrev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3251 (setq newrev (vc-call previous-version
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3252 vc-annotate-parent-file newrev))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3253 (setq revspec (1+ revspec)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3254 (if (not newrev)
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3255 (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
3256 (- 0 revspeccopy) vc-annotate-parent-rev)))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3257 ((stringp revspec) (setq newrev revspec))
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3258 (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
3259 (when newrev
67755
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3260 (vc-annotate vc-annotate-parent-file newrev
0cdb122ad4db Remove unnecessary leading * in docstrings.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67578
diff changeset
3261 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
3262 buf)
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3263 (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
3264 (previous-line)
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3265 (line-number-at-pos))) buf)))))
53630
2f41b6c48585 * vc.el (vc-default-previous-version): Doc enhancement.
André Spiegel <spiegel@gnu.org>
parents: 53283
diff changeset
3266
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3267 (defun vc-annotate-compcar (threshold a-list)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3268 "Test successive cons cells of A-LIST against THRESHOLD.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3269 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
3270 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
3271 (let ((i 1)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3272 (tmp-cons (car a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3273 (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
3274 (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
3275 (setq i (+ i 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3276 tmp-cons)) ; Return the appropriate value
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3277
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3278 (defun vc-annotate-convert-time (time)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3279 "Convert a time value to a floating-point number of days.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3280 The argument TIME is a list as returned by `current-time' or
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3281 `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
3282 (/ (+ (* (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
3283
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3284 (defun vc-annotate-difference (&optional offset)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3285 "Return the time span in days to the next annotation.
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3286 This calls the backend function annotate-time, and returns the
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3287 difference in days between the time returned and the current time,
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3288 or OFFSET if present."
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3289 (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
3290 (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
3291 (- (or offset
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3292 (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
3293 next-time))))
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3294
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3295 (defun vc-default-annotate-current-time (backend)
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3296 "Return the current time, encoded as fractional days."
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3297 (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
3298
51764
3c3b6501b4f1 (vc-annotate-offset): Move defvar up.
John Paul Wallington <jpw@pobox.com>
parents: 51762
diff changeset
3299 (defvar vc-annotate-offset nil)
3c3b6501b4f1 (vc-annotate-offset): Move defvar up.
John Paul Wallington <jpw@pobox.com>
parents: 51762
diff changeset
3300
67885
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3301 (defun vc-annotate-display (ratio &optional offset)
41071
cb1ebde1c4c9 Documentation fixes.
André Spiegel <spiegel@gnu.org>
parents: 40958
diff changeset
3302 "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
3303 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
3304 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
3305 (if (/= ratio 1.0)
e60b008e862d (vc-annotate-display): Replace optional arg `color-map' with
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 67882
diff changeset
3306 (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
3307 (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
3308 vc-annotate-color-map)))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3309 (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
3310 (font-lock-mode 1))
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3311
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3312 (defun vc-annotate-lines (limit)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3313 (let (difference)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3314 (while (and (< (point) limit)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3315 (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
3316 (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
3317 (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
3318 ;; 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
3319 (face-name (concat "vc-annotate-face-"
ccc2eb385394 Remove eol whitespace; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 69943
diff changeset
3320 (if (string-equal
69939
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3321 (substring (cdr color) 0 1) "#")
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3322 (substring (cdr color) 1)
99dd1b3c0caa (vc-annotate-display-mode): Made default 'fullscale.
J.D. Smith <jdsmith@as.arizona.edu>
parents: 68678
diff changeset
3323 (cdr color))))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3324 ;; Make the face if not done.
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3325 (face (or (intern-soft face-name)
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3326 (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
3327 (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
3328 (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
3329 (set-face-background tmp-face
40170
115527dd1d27 Change scaling algorithm for vc-annotate.
André Spiegel <spiegel@gnu.org>
parents: 40164
diff changeset
3330 vc-annotate-background))
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3331 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
3332 (point (point)))
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
3333 (forward-line 1)
46481
ddfd07bf63ec (vc-default-comment-history): Hard code *vc*.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 46454
diff changeset
3334 (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
3335 ;; 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
3336 nil))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3337
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
3338 ;; Collect back-end-dependent stuff here
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3339
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3340 (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
3341
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3342 (defun vc-check-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3343 "Check if the current file has any headers in it."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3344 (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
3345 (vc-call-backend (vc-backend buffer-file-name) 'check-headers))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3346
33562
7c20a27966ae Updated backend documentation.
André Spiegel <spiegel@gnu.org>
parents: 33553
diff changeset
3347 (defun vc-default-check-headers (backend)
7c20a27966ae Updated backend documentation.
André Spiegel <spiegel@gnu.org>
parents: 33553
diff changeset
3348 "Default implementation of check-headers; always returns nil."
7c20a27966ae Updated backend documentation.
André Spiegel <spiegel@gnu.org>
parents: 33553
diff changeset
3349 nil)
7c20a27966ae Updated backend documentation.
André Spiegel <spiegel@gnu.org>
parents: 33553
diff changeset
3350
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3351 ;; Back-end-dependent stuff ends here.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3352
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3353 ;; Set up key bindings for use while editing log messages
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3354
31380
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3355 (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
3356 "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
3357 (setq default-directory
f2ab9420390f 2000-09-05 Stefan Monnier <monnier@cs.yale.edu>
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 31387
diff changeset
3358 (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
3359 (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
3360 (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
3361 (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
3362 ;; 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
3363 (lambda ()
1dc1153f070a (vc-log-mode-map): Explicitly inherit from text-mode.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47760
diff changeset
3364 (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
3365 (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
3366 (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
3367 (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
3368 (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
3369 (setq buffer-file-name nil))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3370
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3371 ;; These things should probably be generally available
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3372
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
3373 (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
3374 "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
3375 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
3376 (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
3377 (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
3378
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3379 (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
3380 (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
3381 (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
3382 (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
3383 (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
3384 (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
3385 (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
3386 (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
3387 (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
3388 (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
3389 (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
3390 (or
2d74ed749db8 (vc-next-action-on-file): Do not visit the file if it's
Gerd Moellmann <gerd@gnu.org>
parents: 28460
diff changeset
3391 (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
3392 (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
3393 (directory-files dir)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3394
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3395 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3396
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3397 ;; 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
3398 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3399 ;; 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
3400 ;; (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
3401 ;; 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
3402 ;; 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
3403 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3404 ;; 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
3405 ;; 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
3406 ;; 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
3407 ;; 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
3408 ;; 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
3409 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3410 ;; 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
3411 ;; 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
3412 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3413 ;; ANALYSIS:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3414 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3415 ;; 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
3416 ;; 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
3417 ;; 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
3418 ;; 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
3419 ;; master.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3420 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3421 ;; 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
3422 ;; 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
3423 ;; 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
3424 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3425 ;; 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
3426 ;; 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
3427 ;; 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
3428 ;; 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
3429 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3430 ;; 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
3431 ;; 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
3432 ;; 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
3433 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3434 ;; 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
3435 ;; 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
3436 ;; 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
3437 ;; 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
3438 ;; directory).
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3439 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3440 ;; 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
3441 ;; 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
3442 ;; vc-next-action.
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 ;; 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
3445 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3446 ;; 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
3447 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3448 ;; 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
3449 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3450 ;; 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
3451 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3452 ;; 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
3453 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3454 ;; 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
3455 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3456 ;; 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
3457 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3458 ;; 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
3459 ;; |
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3460 ;; 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
3461 ;; 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
3462 ;; 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
3463 ;; 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
3464 ;; 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
3465 ;; 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
3466 ;; 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
3467 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3468 ;; 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
3469 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3470 ;; 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
3471 ;; 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
3472 ;; 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
3473 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3474 ;; 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
3475 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3476 ;; Window P:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3477 ;; 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
3478 ;; 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
3479 ;; 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
3480 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3481 ;; Window Q:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3482 ;; 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
3483 ;; 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
3484 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3485 ;; Window R:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3486 ;; 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
3487 ;; 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
3488 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3489 ;; Window S:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3490 ;; 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
3491 ;; 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
3492 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3493 ;; Window T:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3494 ;; 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
3495 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3496 ;; Window U:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3497 ;; 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
3498 ;; 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
3499 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3500 ;; Window V:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3501 ;; 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
3502 ;; 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
3503 ;; 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
3504 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3505 ;; Window W:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3506 ;; 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
3507 ;; 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
3508 ;; 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
3509 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3510 ;; Window X:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3511 ;; 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
3512 ;; 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
3513 ;; 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
3514 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3515 ;; Errors:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3516 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3517 ;; Apparent state A ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3518 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3519 ;; 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
3520 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3521 ;; 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
3522 ;; 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
3523 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3524 ;; RCS: Prior to version 5.6.4, ci fails with message
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3525 ;; "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
3526 ;; 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
3527 ;; 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
3528 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3529 ;; 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
3530 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3531 ;; 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
3532 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3533 ;; 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
3534 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3535 ;; RCS: Prior to version 5.6.4, 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
3536 ;; 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
3537 ;; 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
3538 ;; 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
3539 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3540 ;; 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
3541 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3542 ;; 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
3543 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3544 ;; 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
3545 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3546 ;; 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
3547 ;; 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
3548 ;; 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
3549 ;; 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
3550 ;; 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
3551 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3552 ;; 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
3553 ;;;
38374
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3554 ;; 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
3555 ;; 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
3556 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3557 ;; 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
3558 ;; "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
3559 ;; 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
3560 ;; "<file>,v: already exists".
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3561 ;; 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
3562 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3563 ;; 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
3564 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3565 ;; Apparent state B ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3566 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3567 ;; 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
3568 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3569 ;; 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
3570 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3571 ;; 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
3572 ;; 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
3573 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3574 ;; 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
3575 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3576 ;; 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
3577 ;; calling user and unchanged.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3578 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3579 ;; 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
3580 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3581 ;; 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
3582 ;; 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
3583 ;; directory, checkout will succeed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3584 ;; 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
3585 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3586 ;; 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
3587 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3588 ;; 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
3589 ;; calling user and changed.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3590 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3591 ;; As case 6.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3592 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3593 ;; 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
3594 ;; user.
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 ;; 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
3597 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3598 ;; 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
3599 ;; 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
3600 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3601 ;; 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
3602 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3603 ;; Apparent state C ---
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 ;; 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
3606 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3607 ;; As case 5.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3608 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3609 ;; 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
3610 ;; locked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3611 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3612 ;; Potential cause: a 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
3613 ;; 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
3614 ;; 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
3615 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3616 ;; 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
3617 ;; the master.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3618 ;; 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
3619 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3620 ;; 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
3621 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3622 ;; 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
3623 ;; changed.
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: 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
3626 ;; during window Q.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3627 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3628 ;; 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
3629 ;; 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
3630 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3631 ;; 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
3632 ;; 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
3633 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3634 ;; 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
3635 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3636 ;; 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
3637 ;; 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
3638 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3639 ;; 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
3640 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3641 ;; Apparent state D ---
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3642 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3643 ;; 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
3644 ;; actually unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3645 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3646 ;; 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
3647 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3648 ;; 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
3649 ;; 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
3650 ;; 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
3651 ;; 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
3652 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3653 ;; 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
3654 ;; 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
3655 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3656 ;; 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
3657 ;; actually unlocked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3658 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3659 ;; 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
3660 ;; 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
3661 ;; someone else's revert.
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 ;; 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
3664 ;; 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
3665 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3666 ;; 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
3667 ;; 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
3668 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3669 ;; 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
3670 ;; 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
3671 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3672 ;; 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
3673 ;; 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
3674 ;; the file unlocked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3675 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3676 ;; 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
3677 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3678 ;; 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
3679 ;; 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
3680 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3681 ;; 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
3682 ;; 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
3683 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3684 ;; 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
3685 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3686 ;; Apparent state E ---
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 ;; 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
3689 ;; unregistered.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3690 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3691 ;; As case 13.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3692 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3693 ;; 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
3694 ;; unlocked.
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3695 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3696 ;; 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
3697 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3698 ;; 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
3699 ;; 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
3700 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3701 ;; 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
3702 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3703 ;; 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
3704 ;; 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
3705 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3706 ;; 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
3707 ;; 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
3708 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3709 ;; 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
3710 ;; 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
3711 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3712 ;; 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
3713 ;; 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
3714 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3715 ;; As case 19.
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 ;; PROBLEM CASES:
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3718 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3719 ;; 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
3720 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3721 ;; 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
3722 ;; 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
3723 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3724 ;; 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
3725 ;; 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
3726 ;; 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
3727 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3728 ;; 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
3729 ;; 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
3730 ;; 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
3731 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3732 ;; 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
3733 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3734 ;; 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
3735 ;; 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
3736 ;; 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
3737 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3738 ;; 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
3739 ;; 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
3740 ;;
ee328ec2505c (vc-prefix-map): Moved back to vc-hooks.el.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37544
diff changeset
3741 ;; Thus, there is no explicit recovery code.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3742
56952
1e43327f7457 (vc-buffer-context, vc-restore-buffer-context): Disable obsolete code.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 55100
diff changeset
3743 ;; arch-tag: ca82c1de-3091-4e26-af92-460abc6213a6
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3744 ;;; vc.el ends here