annotate lisp/vc.el @ 29005:b396df3a5181

(ONE_MORE_BYTE, TWO_MORE_BYTES): Set coding->resutl to CODING_FINISH_INSUFFICIENT_SRC if there's not enough source. (ONE_MORE_CHAR, EMIT_CHAR, EMIT_ONE_BYTE, EMIT_TWO_BYTE, EMIT_BYTES): New macros. (THREE_MORE_BYTES, DECODE_CHARACTER_ASCII, DECODE_CHARACTER_DIMENSION1, DECODE_CHARACTER_DIMENSION2): These macros deleted. (CHECK_CODE_RANGE_A0_FF): This macro deleted. (detect_coding_emacs_mule): Use UNIBYTE_STR_AS_MULTIBYTE_P to check the validity of multibyte sequence. (decode_coding_emacs_mule): New function. (encode_coding_emacs_mule): New macro. (detect_coding_iso2022): Use ONE_MORE_BYTE to fetch a byte from the source. (DECODE_ISO_CHARACTER): Just return a character code. (DECODE_COMPOSITION_START): Set coding->result instead of result. (decode_coding_iso2022, decode_coding_sjis_big5, decode_eol): Use EMIT_CHAR to produced decoded characters. Exit the loop only by macros ONE_MORE_BYTE or EMIT_CHAR. Don't handle the case of last block here. (ENCODE_ISO_CHARACTER): Don't translate character here. Produce only position codes for an invalid character. (encode_designation_at_bol): Return new destination pointer. 5th arg DSTP is changed to DST. (encode_coding_iso2022, decode_coding_sjis_big5): Get a character from the source by ONE_MORE_CHAR. Don't handle the case of last block here. (DECODE_SJIS_BIG5_CHARACTER, ENCODE_SJIS_BIG5_CHARACTER): These macros deleted. (detect_coding_sjis, detect_coding_big5, detect_coding_utf_8, detect_coding_utf_16, detect_coding_ccl): Use ONE_MORE_BYTE and TWO_MORE_BYTES to fetch a byte from the source. (encode_eol): Pay attention to coding->src_multibyte. (detect_coding, detect_eol): Preserve members src_multibyte and dst_multibyte. (DECODING_BUFFER_MAG): Return 2 even for coding_type_raw_text. (encoding_buffer_size): Set magnification to 3 for all coding systems that require encoding. (ccl_coding_driver): For decoding, be sure that the result is valid multibyte sequence. (decode_coding): Initialize coding->errors and coding->result. For emacs-mule, call decode_coding_emacs_mule. For no-conversion and raw-text, always call decode_eol. Handle the case of last block here. If not coding->dst_multibyte, convert the resulting sequence to unibyte. (encode_coding): Initialize coding->errors and coding->result. For emacs-mule, call encode_coding_emacs_mule. For no-conversion and raw-text, always call encode_eol. Handle the case of last block here. (shrink_decoding_region, shrink_encoding_region): Detect cases that we can't skip data more rigidly. (code_convert_region): Setup src_multibyte and dst_multibyte members of coding. For decoding, if the buffer is multibyte, convert the source sequence to unibyte in advance. For encoding, if the buffer is multibyte, convert the resulting sequence to multibyte afterward. (run_pre_post_conversion_on_str): New function. (code_convert_string): Deleted and divided into the following two. (decode_coding_string, encode_coding_string): New functions. (code_convert_string1, code_convert_string_norecord): Call one of above. (Fdecode_sjis_char, Fdecode_big5_char): Use MAKE_CHAR instead of MAKE_NON_ASCII_CHAR. (Fset_terminal_coding_system_internal, Fset_safe_terminal_coding_system_internal): Setup src_multibyte and dst_multibyte members. (init_coding_once): Initialize iso_code_class with new enum ISO_control_0 and ISO_control_1.
author Kenichi Handa <handa@m17n.org>
date Fri, 19 May 2000 23:54:56 +0000
parents 8a724c4f9928
children 2d74ed749db8
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1 ;;; vc.el --- drive a version-control system from within Emacs
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
3 ;; Copyright (C) 1992, 93, 94, 95, 96, 97, 1998 Free Software Foundation, Inc.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
4
16821
d57c1c1bb966 Changed my e-mail address in the header.
André Spiegel <spiegel@gnu.org>
parents: 16743
diff changeset
5 ;; Author: Eric S. Raymond <esr@snark.thyrsus.com>
d57c1c1bb966 Changed my e-mail address in the header.
André Spiegel <spiegel@gnu.org>
parents: 16743
diff changeset
6 ;; Maintainer: Andre Spiegel <spiegel@inf.fu-berlin.de>
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
7
28460
8a724c4f9928 (vc-backend-diff): Return the correct status if we had to
Gerd Moellmann <gerd@gnu.org>
parents: 27436
diff changeset
8 ;; $Id: vc.el,v 1.259 2000/01/26 10:31:13 gerd Exp $
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
9
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
10 ;; This file is part of GNU Emacs.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12 ;; 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
13 ;; 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
14 ;; the Free Software Foundation; either version 2, or (at your option)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; any later version.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
16
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; 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
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; GNU General Public License for more details.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22 ;; 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
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14141
diff changeset
25 ;; Boston, MA 02111-1307, USA.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
26
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
27 ;;; Commentary:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
29 ;; 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
30 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
31 ;; This was designed and implemented by Eric Raymond <esr@snark.thyrsus.com>.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
32 ;; Paul Eggert <eggert@twinsun.com>, Sebastian Kremer <sk@thp.uni-koeln.de>,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
33 ;; and Richard Stallman contributed valuable criticism, support, and testing.
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
34 ;; CVS support was added by Per Cederqvist <ceder@lysator.liu.se>
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
35 ;; in Jan-Feb 1994. Further enhancements came from ttn@netcom.com and
16821
d57c1c1bb966 Changed my e-mail address in the header.
André Spiegel <spiegel@gnu.org>
parents: 16743
diff changeset
36 ;; Andre Spiegel <spiegel@inf.fu-berlin.de>.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
37 ;;
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
38 ;; Supported version-control systems presently include SCCS, RCS, and CVS.
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
39 ;;
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
40 ;; 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
41 ;; appropriate, VC finds out which version you have, and allows or
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
42 ;; disallows those features (stealing locks, for example, works only
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
43 ;; 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
44 ;; 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
45 ;; doesn't understand -t-; this has been known to happen to people running
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
46 ;; NExTSTEP 3.0.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
47 ;;
12926
ecb9cf000265 Removed the comment that said we assume strict locking.
André Spiegel <spiegel@gnu.org>
parents: 12915
diff changeset
48 ;; You can support the RCS -x option by adding pairs to the
ecb9cf000265 Removed the comment that said we assume strict locking.
André Spiegel <spiegel@gnu.org>
parents: 12915
diff changeset
49 ;; vc-master-templates list.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
50 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
51 ;; Proper function of the SCCS diff commands requires the shellscript vcdiff
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
52 ;; to be installed somewhere on Emacs's path for executables.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
53 ;;
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
54 ;; If your site uses the ChangeLog convention supported by Emacs, the
2464
667050db93ca (vc-comment-to-change-log): Renamed from vc-comment-to-changelog.
Roland McGrath <roland@gnu.org>
parents: 2419
diff changeset
55 ;; function vc-comment-to-change-log should prove a useful checkin hook.
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
56 ;;
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
57 ;; This code depends on call-process passing back the subprocess exit
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
58 ;; status. Thus, you need Emacs 18.58 or later to run it. For the
2691
be85636d8b6e (vc-directory-18): New function.
Richard M. Stallman <rms@gnu.org>
parents: 2667
diff changeset
59 ;; vc-directory command to work properly as documented, you need 19.
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
60 ;; You also need Emacs 19's ring.el.
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 ;; 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
63 ;; version-control operations to a minimum. Some names are only computed
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
64 ;; once. If you perform version control operations with RCS/SCCS/CVS while
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
65 ;; 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
66 ;; vc may get seriously confused. Don't do these things!
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
67 ;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
68 ;; 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
69 ;; the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
70
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
71 ;;; Code:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
72
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
73 (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
74 (require 'ring)
8290
f95e050e272f At compile time, require dired.
Richard M. Stallman <rms@gnu.org>
parents: 8237
diff changeset
75 (eval-when-compile (require 'dired)) ; for dired-map-over-marks macro
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
76
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
77 (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
78 (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
79 (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
80 minor-mode-alist)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
81
12280
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
82 ;; To implement support for a new version-control system, add another
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
83 ;; branch to the vc-backend-dispatch macro and fill it in in each
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
84 ;; call. The variable vc-master-templates in vc-hooks.el will also
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
85 ;; have to change.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
86
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
87 (defmacro vc-backend-dispatch (f s r c)
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
88 "Execute FORM1, FORM2 or FORM3 for SCCS, RCS or CVS respectively.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
89 If FORM3 is `RCS', use FORM2 for CVS as well as RCS.
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
90 \(CVS shares some code with RCS)."
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
91 (list 'let (list (list 'type (list 'vc-backend f)))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
92 (list 'cond
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
93 (list (list 'eq 'type (quote 'SCCS)) s) ;; SCCS
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
94 (list (list 'eq 'type (quote 'RCS)) r) ;; RCS
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
95 (list (list 'eq 'type (quote 'CVS)) ;; CVS
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
96 (if (eq c 'RCS) r c))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
97 )))
b33cc6583bb9 (vc-backend-dispatch): Move definition before first use.
Richard M. Stallman <rms@gnu.org>
parents: 12279
diff changeset
98
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
99 ;; General customization
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
100
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
101 (defgroup vc nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
102 "Version-control system in Emacs."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
103 :group 'tools)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
104
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
105 (defcustom vc-suppress-confirm nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
106 "*If non-nil, treat user as expert; suppress yes-no prompts on some things."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
107 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
108 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
109
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
110 (defcustom vc-delete-logbuf-window t
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
111 "*If non-nil, delete the *VC-log* buffer and window after each logical action.
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
112 If nil, bury that buffer instead.
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
113 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
114 preserve the setting."
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
115 :type 'boolean
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
116 :group 'vc)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
117
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
118 (defcustom vc-initial-comment nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
119 "*If non-nil, prompt for initial comment when a file is registered."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
120 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
121 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
122
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
123 (defcustom vc-default-init-version "1.1"
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
124 "*A string used as the default version number when a new file is registered.
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
125 This can be overriden by giving a prefix argument to \\[vc-register]."
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
126 :type 'string
21669
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
127 :group 'vc
9861518505cb *** empty log message ***
Dan Nicolaescu <done@ece.arizona.edu>
parents: 21560
diff changeset
128 :version "20.3")
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
129
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
130 (defcustom vc-command-messages nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
131 "*If non-nil, display run messages from back-end commands."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
132 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
133 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
134
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
135 (defcustom vc-checkin-switches nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
136 "*A string or list of strings specifying extra switches for checkin.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
137 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
138 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
139 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
140 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
141 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
142 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
143 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
144
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
145 (defcustom vc-checkout-switches nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
146 "*A string or list of strings specifying extra switches for checkout.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
147 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
148 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
149 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
150 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
151 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
152 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
153 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
154
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
155 (defcustom vc-register-switches nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
156 "*A string or list of strings; extra switches for registering a file.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
157 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
158 :type '(choice (const :tag "None" nil)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
159 (string :tag "Argument String")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
160 (repeat :tag "Argument List"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
161 :value ("")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
162 string))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
163 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
164
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
165 (defcustom vc-dired-recurse t
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
166 "*If non-nil, show directory trees recursively in VC Dired."
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
167 :type 'boolean
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
168 :group 'vc
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
169 :version "20.3")
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
170
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
171 (defcustom vc-dired-terse-display t
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
172 "*If non-nil, show only locked files in VC Dired."
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
173 :type 'boolean
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
174 :group 'vc
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
175 :version "20.3")
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
176
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
177 (defcustom vc-directory-exclusion-list '("SCCS" "RCS" "CVS")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
178 "*List of directory names to be ignored while recursively walking file trees."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
179 :type '(repeat string)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
180 :group 'vc)
1335
d649d430148d (vc-checkin-switches): New defvar.
Roland McGrath <roland@gnu.org>
parents: 1243
diff changeset
181
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
182 (defconst vc-maximum-comment-ring-size 32
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
183 "Maximum number of saved comments in the comment ring.")
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
184
2705
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
185 ;;; This is duplicated in diff.el.
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
186 (defvar diff-switches "-c"
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
187 "*A string or list of strings specifying switches to be be passed to diff.")
b4587e7ff4e5 (diff-switches): Define var here as well as in diff.el.
Richard M. Stallman <rms@gnu.org>
parents: 2692
diff changeset
188
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
189 (defcustom vc-annotate-color-map
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
190 '(( 26.3672 . "#FF0000")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
191 ( 52.7344 . "#FF3800")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
192 ( 79.1016 . "#FF7000")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
193 (105.4688 . "#FFA800")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
194 (131.8359 . "#FFE000")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
195 (158.2031 . "#E7FF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
196 (184.5703 . "#AFFF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
197 (210.9375 . "#77FF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
198 (237.3047 . "#3FFF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
199 (263.6719 . "#07FF00")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
200 (290.0391 . "#00FF31")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
201 (316.4063 . "#00FF69")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
202 (342.7734 . "#00FFA1")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
203 (369.1406 . "#00FFD9")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
204 (395.5078 . "#00EEFF")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
205 (421.8750 . "#00B6FF")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
206 (448.2422 . "#007EFF"))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
207 "*Association list of age versus color, for \\[vc-annotate].
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
208 Ages are given in units of 2**-16 seconds.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
209 Default is eighteen steps using a twenty day increment."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
210 :type 'sexp
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
211 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
212
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
213 (defcustom vc-annotate-very-old-color "#0046FF"
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
214 "*Color for lines older than CAR of last cons in `vc-annotate-color-map'."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
215 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
216 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
217
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
218 (defcustom vc-annotate-background "black"
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
219 "*Background color for \\[vc-annotate].
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
220 Default color is used if nil."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
221 :type 'string
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
222 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
223
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
224 (defcustom vc-annotate-menu-elements '(2 0.5 0.1 0.01)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
225 "*Menu elements for the mode-specific menu of VC-Annotate mode.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
226 List of factors, used to expand/compress the time scale. See `vc-annotate'."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
227 :type 'sexp
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
228 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
229
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
230 ;;;###autoload
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
231 (defcustom vc-checkin-hook nil
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
232 "*Normal hook (list of functions) run after a checkin is done.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
233 See `run-hooks'."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
234 :type 'hook
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
235 :options '(vc-comment-to-change-log)
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
236 :group 'vc)
17274
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
237
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
238 ;;;###autoload
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
239 (defcustom vc-before-checkin-hook nil
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
240 "*Normal hook (list of functions) run before a file gets checked in.
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
241 See `run-hooks'."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
242 :type 'hook
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
243 :group 'vc)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
244
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
245 ;;;###autoload
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
246 (defcustom vc-annotate-mode-hook nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
247 "*Hooks to run when VC-Annotate mode is turned on."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
248 :type 'hook
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
249 :group 'vc)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
250
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
251 ;; Header-insertion hair
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
252
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
253 (defcustom vc-header-alist
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
254 '((SCCS "\%W\%") (RCS "\$Id\$") (CVS "\$Id\$"))
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
255 "*Header keywords to be inserted by `vc-insert-headers'.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
256 Must be a list of two-element lists, the first element of each must
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
257 be `RCS', `CVS', or `SCCS'. The second element is the string to
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
258 be inserted for this particular backend."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
259 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
260 (choice :tag "System"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
261 (const SCCS)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
262 (const RCS)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
263 (const CVS))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
264 (string :tag "Header")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
265 :group 'vc)
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
266
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
267 (defcustom vc-static-header-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
268 '(("\\.c$" .
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
269 "\n#ifndef lint\nstatic char vcid[] = \"\%s\";\n#endif /* lint */\n"))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
270 "*Associate static header string templates with file types. A \%s in the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
271 template is replaced with the first string associated with the file's
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
272 version-control type in `vc-header-alist'."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
273 :type '(repeat (cons :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
274 (regexp :tag "File Type")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
275 (string :tag "Header String")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
276 :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
277
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
278 (defcustom vc-comment-alist
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
279 '((nroff-mode ".\\\"" ""))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
280 "*Special comment delimiters to be used in generating vc headers only.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
281 Add an entry in this list if you need to override the normal comment-start
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
282 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
283 is sensitive to blank lines."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
284 :type '(repeat (list :format "%v"
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
285 (symbol :tag "Mode")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
286 (string :tag "Comment Start")
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
287 (string :tag "Comment End")))
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
288 :group 'vc)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
289
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
290 ;; Default is to be extra careful for super-user.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
291 (defcustom vc-checkout-carefully (= (user-uid) 0)
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
292 "*Non-nil means be extra-careful in checkout.
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
293 Verify that the file really is not locked
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
294 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
295 :type 'boolean
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
296 :group 'vc)
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
297
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
298 (defcustom vc-rcs-release nil
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
299 "*The release number of your RCS installation, as a string.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
300 If nil, VC itself computes this value when it is first needed."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
301 :type '(choice (const :tag "Auto" nil)
23832
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
302 string
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
303 (const :tag "Unknown" unknown))
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
304 :group 'vc)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
305
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
306 (defcustom vc-sccs-release nil
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
307 "*The release number of your SCCS installation, as a string.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
308 If nil, VC itself computes this value when it is first needed."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
309 :type '(choice (const :tag "Auto" nil)
23832
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
310 string
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
311 (const :tag "Unknown" unknown))
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
312 :group 'vc)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
313
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
314 (defcustom vc-cvs-release nil
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
315 "*The release number of your CVS installation, as a string.
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
316 If nil, VC itself computes this value when it is first needed."
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
317 :type '(choice (const :tag "Auto" nil)
23832
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
318 string
da77f7e4d272 (vc-rcs-release): Fix Type.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 23792
diff changeset
319 (const :tag "Unknown" unknown))
17672
3e14521699ff Use defgroup and defcustom.
Richard M. Stallman <rms@gnu.org>
parents: 17410
diff changeset
320 :group 'vc)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
321
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
322 ;; Variables the user doesn't need to know about.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
323 (defvar vc-log-entry-mode nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
324 (defvar vc-log-operation nil)
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
325 (defvar vc-log-after-operation-hook nil)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
326 (defvar vc-checkout-writable-buffer-hook 'vc-checkout-writable-buffer)
8350
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
327 ;; In a log entry buffer, this is a local variable
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
328 ;; that points to the buffer for which it was made
b3afbc67aa6b Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 8349
diff changeset
329 ;; (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
330 (defvar vc-parent-buffer nil)
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
331 (defvar vc-parent-buffer-name nil)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
332
1494
64f5e84c822b (vc-admin): Pass t as noquery arg to vc-resynch-window.
Richard M. Stallman <rms@gnu.org>
parents: 1478
diff changeset
333 (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
334 (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
335
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
336 (defconst vc-name-assoc-file "VC-names")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
337
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
338 (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
339 (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
340
15036
e782b987fbdb (vc-comment-ring): Initialise using make-ring.
Richard M. Stallman <rms@gnu.org>
parents: 14855
diff changeset
341 (defvar vc-comment-ring (make-ring vc-maximum-comment-ring-size))
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
342 (defvar vc-comment-ring-index nil)
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
343 (defvar vc-last-comment-match nil)
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
344
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
345 ;;; Find and compare backend releases
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
346
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
347 (defun vc-backend-release (backend)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
348 ;; Returns which backend release is installed on this system.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
349 (cond
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
350 ((eq backend 'RCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
351 (or vc-rcs-release
16993
6a9b49bc5161 (vc-do-command): If OKSTATUS is nil, ignore errors.
Richard M. Stallman <rms@gnu.org>
parents: 16821
diff changeset
352 (and (zerop (vc-do-command nil nil "rcs" nil nil "-V"))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
353 (save-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
354 (set-buffer (get-buffer "*vc*"))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
355 (setq vc-rcs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
356 (car (vc-parse-buffer
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
357 '(("^RCS version \\([0-9.]+ *.*\\)" 1)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
358 (setq vc-rcs-release 'unknown)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
359 ((eq backend 'CVS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
360 (or vc-cvs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
361 (and (zerop (vc-do-command nil 1 "cvs" nil nil "-v"))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
362 (save-excursion
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
363 (set-buffer (get-buffer "*vc*"))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
364 (setq vc-cvs-release
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
365 (car (vc-parse-buffer
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
366 '(("^Concurrent Versions System (CVS) \\([0-9.]+\\)"
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
367 1)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
368 (setq vc-cvs-release 'unknown)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
369 ((eq backend 'SCCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
370 vc-sccs-release)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
371
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
372 (defun vc-release-greater-or-equal (r1 r2)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
373 ;; Compare release numbers, represented as strings.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
374 ;; Release components are assumed cardinal numbers, not decimal
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
375 ;; fractions (5.10 is a higher release than 5.9). Omitted fields
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
376 ;; are considered lower (5.6.7 is earlier than 5.6.7.1).
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
377 ;; Comparison runs till the end of the string is found, or a
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
378 ;; non-numeric component shows up (5.6.7 is earlier than "5.6.7 beta",
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
379 ;; which is probably not what you want in some cases).
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
380 ;; This code is suitable for existing RCS release numbers.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
381 ;; CVS releases are handled reasonably, too (1.3 < 1.4* < 1.5).
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
382 (let (v1 v2 i1 i2)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
383 (catch 'done
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
384 (or (and (string-match "^\\.?\\([0-9]+\\)" r1)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
385 (setq i1 (match-end 0))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
386 (setq v1 (string-to-number (match-string 1 r1)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
387 (or (and (string-match "^\\.?\\([0-9]+\\)" r2)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
388 (setq i2 (match-end 0))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
389 (setq v2 (string-to-number (match-string 1 r2)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
390 (if (> v1 v2) (throw 'done t)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
391 (if (< v1 v2) (throw 'done nil)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
392 (throw 'done
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
393 (vc-release-greater-or-equal
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
394 (substring r1 i1)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
395 (substring r2 i2)))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
396 (throw 'done t)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
397 (or (and (string-match "^\\.?\\([0-9]+\\)" r2)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
398 (throw 'done nil))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
399 (throw 'done t)))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
400
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
401 (defun vc-backend-release-p (backend release)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
402 ;; Return t if we have RELEASE of BACKEND or better
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
403 (let (i r (ri 0) (ii 0) is rs (installation (vc-backend-release backend)))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
404 (if (not (eq installation 'unknown))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
405 (cond
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
406 ((or (eq backend 'RCS) (eq backend 'CVS))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
407 (vc-release-greater-or-equal installation release))))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
408
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
409 ;;; functions that operate on RCS revision numbers
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
410
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
411 (defun vc-trunk-p (rev)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
412 ;; return t if REV is a revision on the trunk
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
413 (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
414
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
415 (defun vc-branch-p (rev)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
416 ;; return t if REV is a branch revision
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
417 (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
418
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
419 (defun vc-branch-part (rev)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
420 ;; return the branch part of a revision number REV
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
421 (substring rev 0 (string-match "\\.[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
422
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
423 (defun vc-minor-part (rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
424 ;; return the minor version number of a revision number REV
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
425 (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
426 (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
427
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
428 (defun vc-previous-version (rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
429 ;; guess the previous version number
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
430 (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
431 (minor-num (string-to-number (vc-minor-part rev))))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
432 (if (> minor-num 1)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
433 ;; version does probably not start a branch or release
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
434 (concat branch "." (number-to-string (1- minor-num)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
435 (if (vc-trunk-p rev)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
436 ;; we are at the beginning of the trunk --
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
437 ;; don't know anything to return here
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
438 ""
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
439 ;; we are at the beginning of a branch --
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
440 ;; return version of starting point
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
441 (vc-branch-part branch)))))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
442
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
443 ;; File property caching
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
444
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
445 (defun vc-clear-context ()
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
446 "Clear all cached file properties and the comment ring."
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
447 (interactive)
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
448 (fillarray vc-file-prop-obarray nil)
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
449 ;; Note: there is potential for minor lossage here if there is an open
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
450 ;; log buffer with a nonzero local value of vc-comment-ring-index.
15036
e782b987fbdb (vc-comment-ring): Initialise using make-ring.
Richard M. Stallman <rms@gnu.org>
parents: 14855
diff changeset
451 (setq vc-comment-ring (make-ring vc-maximum-comment-ring-size)))
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
452
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
453 (defun vc-file-clear-masterprops (file)
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
454 ;; clear all properties of FILE that were retrieved
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
455 ;; from the master file
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
456 (vc-file-setprop file 'vc-latest-version nil)
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
457 (vc-file-setprop file 'vc-your-latest-version nil)
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
458 (vc-backend-dispatch file
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
459 (progn ;; SCCS
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
460 (vc-file-setprop file 'vc-master-locks nil))
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
461 (progn ;; RCS
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
462 (vc-file-setprop file 'vc-default-branch nil)
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
463 (vc-file-setprop file 'vc-head-version nil)
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
464 (vc-file-setprop file 'vc-master-workfile-version nil)
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
465 (vc-file-setprop file 'vc-master-locks nil))
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
466 (progn
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
467 (vc-file-setprop file 'vc-cvs-status nil))))
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
468
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
469 (defun vc-head-version (file)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
470 ;; Return the RCS head version of FILE
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
471 (cond ((vc-file-getprop file 'vc-head-version))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
472 (t (vc-fetch-master-properties file)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
473 (vc-file-getprop file 'vc-head-version))))
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
474
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
475 ;; Random helper functions
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
476
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
477 (defun vc-latest-on-branch-p (file)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
478 ;; return t iff the current workfile version of FILE is
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
479 ;; the latest on its branch.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
480 (vc-backend-dispatch file
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
481 ;; SCCS
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
482 (string= (vc-workfile-version file) (vc-latest-version file))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
483 ;; RCS
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
484 (let ((workfile-version (vc-workfile-version file)) tip-version)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
485 (if (vc-trunk-p workfile-version)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
486 (progn
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
487 ;; Re-fetch the head version number. This is to make
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
488 ;; sure that no-one has checked in a new version behind
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
489 ;; our back.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
490 (vc-fetch-master-properties file)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
491 (string= (vc-file-getprop file 'vc-head-version)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
492 workfile-version))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
493 ;; If we are not on the trunk, we need to examine the
12875
33a7a6329aa5 Changed references to vc-top-version into vc-master-workfile-version.
André Spiegel <spiegel@gnu.org>
parents: 12873
diff changeset
494 ;; whole current branch. (vc-master-workfile-version
33a7a6329aa5 Changed references to vc-top-version into vc-master-workfile-version.
André Spiegel <spiegel@gnu.org>
parents: 12873
diff changeset
495 ;; is not what we need.)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
496 (save-excursion
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
497 (set-buffer (get-buffer-create "*vc-info*"))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
498 (vc-insert-file (vc-name file) "^desc")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
499 (setq tip-version (car (vc-parse-buffer (list (list
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
500 (concat "^\\(" (regexp-quote (vc-branch-part workfile-version))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
501 "\\.[0-9]+\\)\ndate[ \t]+\\([0-9.]+\\);") 1 2)))))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
502 (if (get-buffer "*vc-info*")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
503 (kill-buffer (get-buffer "*vc-info*")))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
504 (string= tip-version workfile-version))))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
505 ;; CVS
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
506 t))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
507
23635
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
508 ;;; Two macros for elisp programming
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
509 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
510 (defmacro with-vc-file (file comment &rest body)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
511 "Execute BODY, checking out a writable copy of FILE first if necessary.
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
512 After BODY has been executed, check-in FILE with COMMENT (a string).
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
513 FILE is passed through `expand-file-name'; BODY executed within
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
514 `save-excursion'. If FILE is not under version control, or locked by
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
515 somebody else, signal error."
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
516 `(let ((file (expand-file-name ,file)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
517 (or (vc-registered file)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
518 (error (format "File not under version control: `%s'" file)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
519 (let ((locking-user (vc-locking-user file)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
520 (cond ((and (not locking-user)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
521 (eq (vc-checkout-model file) 'manual))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
522 (vc-checkout file t))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
523 ((and (stringp locking-user)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
524 (not (string= locking-user (vc-user-login-name))))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
525 (error (format "`%s' is locking `%s'" locking-user file)))))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
526 (save-excursion
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
527 ,@body)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
528 (vc-checkin file nil ,comment)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
529
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
530 ;;;###autoload
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
531 (defmacro edit-vc-file (file comment &rest body)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
532 "Edit FILE under version control, executing BODY. Checkin with COMMENT.
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
533 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
534 However, before executing BODY, find FILE, and after BODY, save buffer."
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
535 `(with-vc-file
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
536 ,file ,comment
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
537 (find-file ,file)
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
538 ,@body
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
539 (save-buffer)))
9717d57c40c1 (with-vc-file, edit-vc-file): New macros.
André Spiegel <spiegel@gnu.org>
parents: 23592
diff changeset
540
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
541 (defun vc-ensure-vc-buffer ()
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
542 ;; Make sure that the current buffer visits a version-controlled file.
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
543 (if vc-dired-mode
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
544 (set-buffer (find-file-noselect (dired-get-filename)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
545 (while vc-parent-buffer
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
546 (pop-to-buffer vc-parent-buffer))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
547 (if (not (buffer-file-name))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
548 (error "Buffer %s is not associated with a file" (buffer-name))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
549 (if (not (vc-backend (buffer-file-name)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
550 (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
551
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
552 (defvar vc-binary-assoc nil)
22534
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
553 (defvar vc-binary-suffixes
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
554 (if (memq system-type '(ms-dos windows-nt))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
555 '(".exe" ".com" ".bat" ".cmd" ".btm" "")
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
556 '("")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
557 (defun vc-find-binary (name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
558 "Look for a command anywhere on the subprocess-command search path."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
559 (or (cdr (assoc name vc-binary-assoc))
4791
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
560 (catch 'found
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
561 (mapcar
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
562 (function
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
563 (lambda (s)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
564 (if s
22534
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
565 (let ((full (concat s "/" name))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
566 (suffixes vc-binary-suffixes)
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
567 candidate)
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
568 (while suffixes
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
569 (setq candidate (concat full (car suffixes)))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
570 (if (and (file-executable-p candidate)
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
571 (not (file-directory-p candidate)))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
572 (progn
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
573 (setq vc-binary-assoc
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
574 (cons (cons name candidate) vc-binary-assoc))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
575 (throw 'found candidate))
442d61eaab83 (vc-binary-suffixes): New variable.
Eli Zaretskii <eliz@gnu.org>
parents: 22504
diff changeset
576 (setq suffixes (cdr suffixes))))))))
4791
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
577 exec-path)
3544f3a41ae6 (vc-find-binary): Fix bug; it always claimed success.
Paul Eggert <eggert@twinsun.com>
parents: 4770
diff changeset
578 nil)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
579
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
580 (defun vc-do-command (buffer okstatus command file last &rest flags)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
581 "Execute a version-control command, notifying user and checking for errors.
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
582 Output from COMMAND goes to BUFFER, or *vc* if BUFFER is nil. The
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
583 command is considered successful if its exit status does not exceed
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
584 OKSTATUS (if OKSTATUS is nil, that means to ignore errors). FILE is
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
585 the name of the working file (may also be nil, to execute commands
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
586 that don't expect a file name). If FILE is non-nil, the argument LAST
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
587 indicates what filename should actually be passed to the command: if
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
588 it is `MASTER', the name of FILE's master file is used, if it is
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
589 `WORKFILE', then FILE is passed through unchanged. If an optional
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
590 list of FLAGS is present, that is inserted into the command line
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
591 before the filename."
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
592 (and file (setq file (expand-file-name file)))
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
593 (if (not buffer) (setq buffer "*vc*"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
594 (if vc-command-messages
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
595 (message "Running %s on %s..." command file))
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
596 (let ((obuf (current-buffer)) (camefrom (current-buffer))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
597 (squeezed nil)
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
598 (olddir default-directory)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
599 vc-file status)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
600 (set-buffer (get-buffer-create buffer))
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
601 (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
602 (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
603 (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
604 (setq default-directory olddir)
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
605
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
606 (erase-buffer)
1674
75e8a7f920c7 * vc.el (vc-do-command): Set the default directory of the *vc*
Jim Blandy <jimb@redhat.com>
parents: 1636
diff changeset
607
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
608 (mapcar
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
609 (function (lambda (s) (and s (setq squeezed (append squeezed (list s))))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
610 flags)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
611 (if (and (eq last 'MASTER) file (setq vc-file (vc-name file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
612 (setq squeezed (append squeezed (list vc-file))))
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
613 (if (and file (eq last 'WORKFILE))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
614 (progn
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
615 (let* ((pwd (expand-file-name default-directory))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
616 (preflen (length pwd)))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
617 (if (string= (substring file 0 preflen) pwd)
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
618 (setq file (substring file preflen))))
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
619 (setq squeezed (append squeezed (list file)))))
10862
b905092475a7 (vc-do-command): Search vc-path first, not last.
Richard M. Stallman <rms@gnu.org>
parents: 10786
diff changeset
620 (let ((exec-path (append vc-path exec-path))
8726
fcf64871aa14 (vc-do-command): Temporarily add vc-path to the end of PATH.
Richard M. Stallman <rms@gnu.org>
parents: 8627
diff changeset
621 ;; Add vc-path to PATH for the execution of this command.
fcf64871aa14 (vc-do-command): Temporarily add vc-path to the end of PATH.
Richard M. Stallman <rms@gnu.org>
parents: 8627
diff changeset
622 (process-environment
fcf64871aa14 (vc-do-command): Temporarily add vc-path to the end of PATH.
Richard M. Stallman <rms@gnu.org>
parents: 8627
diff changeset
623 (cons (concat "PATH=" (getenv "PATH")
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
624 path-separator
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
625 (mapconcat 'identity vc-path path-separator))
15787
d5dd4b891c3e (vc-do-command): Bind win32-quote-process-args.
Richard M. Stallman <rms@gnu.org>
parents: 15336
diff changeset
626 process-environment))
16590
a0cfcb9f8033 Use w32 instead of ms-windows for window-system symbol
Geoff Voelker <voelker@cs.washington.edu>
parents: 16529
diff changeset
627 (w32-quote-process-args t))
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
628 (setq status (apply 'call-process command nil t nil squeezed)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
629 (goto-char (point-max))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
630 (set-buffer-modified-p nil)
4770
987685f55edd (vc-do-command): Remove debugging output. Use (forward-line -1) instead
Brian Fox <bfox@gnu.org>
parents: 4725
diff changeset
631 (forward-line -1)
16993
6a9b49bc5161 (vc-do-command): If OKSTATUS is nil, ignore errors.
Richard M. Stallman <rms@gnu.org>
parents: 16821
diff changeset
632 (if (or (not (integerp status)) (and okstatus (< okstatus status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
633 (progn
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
634 (pop-to-buffer buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
635 (goto-char (point-min))
4362
2c0ac46d5d5b (vc-shrink-to-fit): Deleted. All callers changed to use
Richard M. Stallman <rms@gnu.org>
parents: 4281
diff changeset
636 (shrink-window-if-larger-than-buffer)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
637 (error "Running %s...FAILED (%s)" command
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
638 (if (integerp status)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
639 (format "status %d" status)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
640 status))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
641 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
642 (if vc-command-messages
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
643 (message "Running %s...OK" command))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
644 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
645 (set-buffer obuf)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
646 status)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
647 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
648
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
649 ;;; Save a bit of the text around POSN in the current buffer, to help
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
650 ;;; us find the corresponding position again later. This works even
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
651 ;;; if all markers are destroyed or corrupted.
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
652 ;;; A lot of this was shamelessly lifted from Sebastian Kremer's 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
653 (defun vc-position-context (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
654 (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
655 (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
656 (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
657 (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
658
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
659 ;;; Return the position of CONTEXT in the current buffer, or nil if we
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
660 ;;; couldn't find it.
e3c02a517030 Thu Nov 19 16:44:24 1992 Jim Blandy (jimb@totoro.cs.oberlin.edu)
Jim Blandy <jimb@redhat.com>
parents: 1575
diff changeset
661 (defun vc-find-position-by-context (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
662 (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
663 (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
664 (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
665 (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
666 (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
667 (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
668 (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
669 (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
670 ;; 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
671 ;; 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
672 (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
673 ;; 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
674 ;; 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
675 (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
676 ;; 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
677 (- (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
678
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
679 (defun vc-context-matches-p (posn context)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
680 ;; Returns t if POSN matches CONTEXT, nil otherwise.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
681 (let* ((context-string (nth 2 context))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
682 (len (length context-string))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
683 (end (+ posn len)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
684 (if (> end (1+ (buffer-size)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
685 nil
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
686 (string= context-string (buffer-substring posn end)))))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
687
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
688 (defun vc-buffer-context ()
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
689 ;; Return a list '(point-context mark-context reparse); from which
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
690 ;; vc-restore-buffer-context can 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
691 (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
692 ;; 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
693 (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
694 (vc-position-context (mark-marker))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
695 ;; 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
696 (mark-active 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
697 ;; We may want to reparse the compilation buffer after revert
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
698 (reparse (and (boundp 'compilation-error-list) ;compile loaded
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
699 (let ((curbuf (current-buffer)))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
700 ;; Construct a list; each elt is nil or a buffer
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
701 ;; iff that buffer is a compilation output buffer
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
702 ;; that contains markers into the current buffer.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
703 (save-excursion
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
704 (mapcar (function
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
705 (lambda (buffer)
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
706 (set-buffer buffer)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
707 (let ((errors (or
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
708 compilation-old-error-list
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
709 compilation-error-list))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
710 (buffer-error-marked-p nil))
2774
ea8a7ab72d14 (vc-revert-buffer1): Don't assume that compilation-error-list
Richard M. Stallman <rms@gnu.org>
parents: 2769
diff changeset
711 (while (and (consp errors)
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
712 (not buffer-error-marked-p))
2617
e2e5dfa162b4 (vc-revert-buffer1): Fix format of compilation-error-list.
Richard M. Stallman <rms@gnu.org>
parents: 2612
diff changeset
713 (and (markerp (cdr (car errors)))
2604
3a56b8caf6c9 (vc-revert-buffer1): Ignore non-marker elts of compilation-error-list.
Roland McGrath <roland@gnu.org>
parents: 2580
diff changeset
714 (eq buffer
3a56b8caf6c9 (vc-revert-buffer1): Ignore non-marker elts of compilation-error-list.
Roland McGrath <roland@gnu.org>
parents: 2580
diff changeset
715 (marker-buffer
2617
e2e5dfa162b4 (vc-revert-buffer1): Fix format of compilation-error-list.
Richard M. Stallman <rms@gnu.org>
parents: 2612
diff changeset
716 (cdr (car errors))))
2604
3a56b8caf6c9 (vc-revert-buffer1): Ignore non-marker elts of compilation-error-list.
Roland McGrath <roland@gnu.org>
parents: 2580
diff changeset
717 (setq buffer-error-marked-p t))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
718 (setq errors (cdr errors)))
2745
adf91f018312 (vc-diff): Report an error if the buffer isn't registered.
Richard M. Stallman <rms@gnu.org>
parents: 2706
diff changeset
719 (if buffer-error-marked-p buffer))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
720 (buffer-list)))))))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
721 (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
722
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
723 (defun 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
724 ;; Restore point/mark, and reparse any affected compilation buffers.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
725 ;; CONTEXT is that which vc-buffer-context returns.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
726 (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
727 (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
728 (reparse (nth 2 context)))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
729 ;; Reparse affected compilation buffers.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
730 (while reparse
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
731 (if (car reparse)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
732 (save-excursion
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
733 (set-buffer (car reparse))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
734 (let ((compilation-last-buffer (current-buffer)) ;select buffer
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
735 ;; Record the position in the compilation buffer of
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
736 ;; the last error next-error went to.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
737 (error-pos (marker-position
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
738 (car (car-safe compilation-error-list)))))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
739 ;; Reparse the error messages as far as they were parsed before.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
740 (compile-reinitialize-errors '(4) compilation-parsing-end)
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
741 ;; Move the pointer up to find the error we were at before
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
742 ;; reparsing. Now next-error should properly go to the next one.
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
743 (while (and compilation-error-list
2558
78a9cebdb22c (vc-revert-buffer1): Typo fix in last change.
Roland McGrath <roland@gnu.org>
parents: 2555
diff changeset
744 (/= error-pos (car (car compilation-error-list))))
2554
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
745 (setq compilation-error-list (cdr compilation-error-list))))))
5686672705bf (vc-revert-buffer1): Completely rewrote compilation reparsing code.
Roland McGrath <roland@gnu.org>
parents: 2493
diff changeset
746 (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
747
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
748 ;; if necessary, restore point and mark
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
749 (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
750 (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
751 (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
752 (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
753 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
754 (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
755 (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
756 (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
757
26039
fb6b9c37cdc4 Use make-temp-file.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25849
diff changeset
758 ;; Maybe this "smart mark preservation" could be added directly
fb6b9c37cdc4 Use make-temp-file.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25849
diff changeset
759 ;; to revert-buffer since it can be generally useful. -sm
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
760 (defun vc-revert-buffer1 (&optional arg no-confirm)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
761 ;; Revert buffer, try to keep point and mark where user expects them in spite
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
762 ;; of changes because of expanded version-control key words.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
763 ;; This is quite important since otherwise typeahead won't work as expected.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
764 (interactive "P")
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
765 (widen)
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
766 (let ((context (vc-buffer-context)))
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
767 ;; 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
768 ;; and mark properly even in cases where vc-restore-buffer-context
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
769 ;; would fail. However, save-excursion might also get it wrong --
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
770 ;; 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
771 (save-excursion
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
772 ;; t means don't call normal-mode;
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
773 ;; that's to preserve various minor modes.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
774 (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
775 (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
776
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
777
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
778 (defun vc-buffer-sync (&optional not-urgent)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
779 ;; Make sure the current buffer and its working file are in sync
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
780 ;; 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
781 (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
782 (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
783 (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
784 (save-buffer)
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
785 (if not-urgent
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
786 nil
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
787 (error "Aborted")))))
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
788
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
789
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
790 (defun vc-workfile-unchanged-p (file &optional want-differences-if-changed)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
791 ;; Has the given workfile changed since last checkout?
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
792 (let ((checkout-time (vc-file-getprop file 'vc-checkout-time))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
793 (lastmod (nth 5 (file-attributes file))))
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
794 (or (equal checkout-time lastmod)
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
795 (and (or (not checkout-time) want-differences-if-changed)
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
796 (let ((unchanged (zerop (vc-backend-diff file nil nil
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
797 (not want-differences-if-changed)))))
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
798 ;; 0 stands for an unknown time; it can't match any mod time.
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
799 (vc-file-setprop file 'vc-checkout-time (if unchanged lastmod 0))
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
800 unchanged)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
801
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
802 (defun vc-next-action-on-file (file verbose &optional comment)
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
803 ;;; If comment is specified, it will be used as an admin or checkin comment.
21517
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
804 (let ((vc-type (vc-backend file))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
805 owner version buffer)
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
806 (cond
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
807
21517
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
808 ;; If the file is not under version control, register it
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
809 ((not vc-type)
4d5cd99a3d51 (vc-next-action-on-file): Don't check out after registering. This is
André Spiegel <spiegel@gnu.org>
parents: 21448
diff changeset
810 (vc-register verbose comment))
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
811
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
812 ;; CVS: changes to the master file need to be
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
813 ;; merged back into the working file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
814 ((and (eq vc-type 'CVS)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
815 (or (eq (vc-cvs-status file) 'needs-checkout)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
816 (eq (vc-cvs-status file) 'needs-merge)))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
817 (if (or vc-dired-mode
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
818 (yes-or-no-p
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
819 (format "%s is not up-to-date. Merge in changes now? "
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
820 (buffer-name))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
821 (progn
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
822 (if vc-dired-mode
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
823 (and (setq buffer (get-file-buffer file))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
824 (buffer-modified-p buffer)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
825 (switch-to-buffer-other-window buffer)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
826 (vc-buffer-sync t))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
827 (setq buffer (current-buffer))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
828 (vc-buffer-sync t))
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
829 (if (and buffer (buffer-modified-p buffer)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
830 (not (yes-or-no-p
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
831 (format
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
832 "Buffer %s modified; merge file on disc anyhow? "
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
833 (buffer-name buffer)))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
834 (error "Merge aborted"))
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
835 (let ((status (vc-backend-merge-news file)))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
836 (and buffer
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
837 (vc-resynch-buffer file t
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
838 (not (buffer-modified-p buffer))))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
839 (if (not (zerop status))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
840 (if (y-or-n-p "Conflicts detected. Resolve them now? ")
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
841 (vc-resolve-conflicts)))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
842 (error "%s needs update" (buffer-name))))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
843
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
844 ;; For CVS files with implicit checkout: if unmodified, don't do anything
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
845 ((and (eq vc-type 'CVS)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
846 (eq (vc-checkout-model file) 'implicit)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
847 (not (vc-locking-user file))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
848 (not verbose))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
849 (message "%s is up to date" (buffer-name)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
850
17201
ac40292bd898 (vc-next-action-on-file): With implicit checkout, make
Richard M. Stallman <rms@gnu.org>
parents: 17135
diff changeset
851 ;; If there is no lock on the file, assert one and get it.
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
852 ((not (setq owner (vc-locking-user file)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
853 ;; With implicit checkout, make sure not to lose unsaved changes.
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
854 (and (eq (vc-checkout-model file) 'implicit)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
855 (buffer-modified-p buffer)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
856 (vc-buffer-sync))
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
857 (if (and vc-checkout-carefully
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
858 (not (vc-workfile-unchanged-p file t)))
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
859 (if (save-window-excursion
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
860 (pop-to-buffer "*vc-diff*")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
861 (goto-char (point-min))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
862 (insert-string (format "Changes to %s since last lock:\n\n"
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
863 file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
864 (not (beep))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
865 (yes-or-no-p
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
866 (concat "File has unlocked changes, "
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
867 "claim lock retaining changes? ")))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
868 (progn (vc-backend-steal file)
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
869 (vc-mode-line file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
870 (if (not (yes-or-no-p "Revert to checked-in version, instead? "))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
871 (error "Checkout aborted")
5201
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
872 (vc-revert-buffer1 t t)
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
873 (vc-checkout-writable-buffer file))
b27badfb4040 (vc-buffer-sync): Signal error if user says no.
Richard M. Stallman <rms@gnu.org>
parents: 5015
diff changeset
874 )
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
875 (if verbose
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
876 (if (not (eq vc-type 'SCCS))
12876
fedbe59f374e (vc-next-action-on-file): Moved the setting of the default branch to
André Spiegel <spiegel@gnu.org>
parents: 12875
diff changeset
877 (vc-checkout file nil
fedbe59f374e (vc-next-action-on-file): Moved the setting of the default branch to
André Spiegel <spiegel@gnu.org>
parents: 12875
diff changeset
878 (read-string "Branch or version to move to: "))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
879 (error "Sorry, this is not implemented for SCCS"))
12873
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
880 (if (vc-latest-on-branch-p file)
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
881 (vc-checkout-writable-buffer file)
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
882 (if (yes-or-no-p
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
883 "This is not the latest version. Really lock it? ")
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
884 (vc-checkout-writable-buffer file)
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
885 (if (yes-or-no-p "Lock the latest version instead? ")
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
886 (vc-checkout-writable-buffer file
13111
f7fca58643bc (vc-next-action-on-file): When locking the latest trunk version,
André Spiegel <spiegel@gnu.org>
parents: 13012
diff changeset
887 (if (vc-trunk-p (vc-workfile-version file))
f7fca58643bc (vc-next-action-on-file): When locking the latest trunk version,
André Spiegel <spiegel@gnu.org>
parents: 13012
diff changeset
888 "" ;; this means check out latest on trunk
f7fca58643bc (vc-next-action-on-file): When locking the latest trunk version,
André Spiegel <spiegel@gnu.org>
parents: 13012
diff changeset
889 (vc-branch-part (vc-workfile-version file)))))))
12873
03d3b7d60f67 (vc-next-action-on-file): Query when trying to lock non-latest
André Spiegel <spiegel@gnu.org>
parents: 12872
diff changeset
890 )))
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
891
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
892 ;; a checked-out version exists, but the user may not own the lock
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
893 ((and (not (eq vc-type 'CVS))
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
894 (not (string-equal owner (vc-user-login-name))))
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
895 (if comment
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
896 (error "Sorry, you can't steal the lock on %s this way" file))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
897 (and (eq vc-type 'RCS)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
898 (not (vc-backend-release-p 'RCS "5.6.2"))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
899 (error "File is locked by %s" owner))
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
900 (vc-steal-lock
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
901 file
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
902 (if verbose (read-string "Version to steal: ")
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
903 (vc-workfile-version file))
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
904 owner))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
905
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
906 ;; OK, user owns the lock on the file
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
907 (t
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
908 (if vc-dired-mode
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
909 (find-file-other-window file)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
910 (find-file file))
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
911
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
912 ;; If the file on disk is newer, then the user just
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
913 ;; said no to rereading it. So the user probably wishes to
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
914 ;; overwrite the file with the buffer's contents, and check
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
915 ;; that in.
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
916 (if (not (verify-visited-file-modtime (current-buffer)))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
917 (if (yes-or-no-p "Replace file on disk with buffer contents? ")
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
918 (write-file (buffer-file-name))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
919 (error "Aborted"))
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
920 ;; if buffer is not saved, give user a chance to do it
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
921 (vc-buffer-sync))
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
922
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
923 ;; Revert if file is unchanged and buffer is too.
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
924 ;; If buffer is modified, that means the user just said no
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
925 ;; to saving it; in that case, don't revert,
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
926 ;; because the user might intend to save
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
927 ;; after finishing the log entry.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
928 (if (and (vc-workfile-unchanged-p file)
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
929 (not (buffer-modified-p)))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
930 ;; DO NOT revert the file without asking the user!
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
931 (cond
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
932 ((yes-or-no-p "Revert to master version? ")
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
933 (vc-backend-revert file)
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
934 (vc-resynch-window file t 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
935
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
936 ;; user may want to set nonstandard parameters
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
937 (if verbose
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
938 (setq version (read-string "New version level: ")))
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
939
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
940 ;; OK, let's do the checkin
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
941 (vc-checkin file version comment)
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
942 )))))
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
943
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
944 (defvar vc-dired-window-configuration)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
945
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
946 (defun vc-next-action-dired (file rev comment)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
947 ;; Do a vc-next-action-on-file on all the marked files, possibly
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
948 ;; passing on the log comment we've just entered.
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
949 (let ((dired-buffer (current-buffer))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
950 (dired-dir default-directory))
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
951 (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
952 (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
953 (message "Processing %s..." file)
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
954 ;; Adjust the default directory so that checkouts
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
955 ;; go to the right place.
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
956 (let ((default-directory (file-name-directory file)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
957 (vc-next-action-on-file file nil comment)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
958 (set-buffer dired-buffer))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
959 ;; Make sure that files don't vanish
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
960 ;; after they are checked in.
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
961 (let ((vc-dired-terse-mode nil))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
962 (dired-do-redisplay file))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
963 (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
964 (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
965 nil t))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
966 (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
967
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
968 ;; Here's the major entry point.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
969
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
970 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
971 (defun vc-next-action (verbose)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
972 "Do the next logical checkin or checkout operation on the current file.
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
973 If you call this from within a VC dired buffer with no files marked,
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
974 it will operate on the file in the current line.
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
975 If you call this from within a VC dired buffer, and one or more
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
976 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
977 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
978 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
979 lock steals will raise an error.
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
980 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
981
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
982 For RCS and SCCS files:
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
983 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
984 control.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
985 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
986 a writable and locked file ready for editing.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
987 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
988 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
989 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
990 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
991 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
992 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
993 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
994 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
995 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
996 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
997
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
998 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
999 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
1000 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
1001 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
1002 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
1003 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
1004 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
1005 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
1006 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
1007 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
1008
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1009 (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
1010 (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
1011 (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
1012 (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
1013 (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
1014 (current-window-configuration))
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1015 (if (string= ""
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1016 (mapconcat
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1017 (function (lambda (f)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1018 (if (eq (vc-backend f) 'CVS)
12968
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1019 (if (or (eq (vc-cvs-status f) 'locally-modified)
a0d985336555 (vc-dired-update-line): Don't use dired-do-redisplay.
André Spiegel <spiegel@gnu.org>
parents: 12943
diff changeset
1020 (eq (vc-cvs-status f) 'locally-added))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1021 "@" "")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1022 (if (vc-locking-user f) "@" ""))))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1023 files ""))
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1024 (vc-next-action-dired nil nil "dummy")
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1025 (vc-start-entry nil nil nil
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1026 "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
1027 '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
1028 (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
1029 (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
1030 (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
1031 (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
1032 (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
1033 (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
1034
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1035 ;;; These functions help the vc-next-action entry point
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1036
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1037 (defun vc-checkout-writable-buffer (&optional file rev)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1038 "Retrieve a writable copy of the latest version of the current buffer's file."
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1039 (vc-checkout (or file (buffer-file-name)) t rev)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1040 )
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1041
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1042 ;;;###autoload
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
1043 (defun vc-register (&optional override comment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1044 "Register the current file into your version-control system."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1045 (interactive "P")
12152
19ced24c2963 (vc-register): Check for a visited file first thing.
Karl Heuer <kwzh@gnu.org>
parents: 12107
diff changeset
1046 (or buffer-file-name
19ced24c2963 (vc-register): Check for a visited file first thing.
Karl Heuer <kwzh@gnu.org>
parents: 12107
diff changeset
1047 (error "No visited file"))
9216
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
1048 (let ((master (vc-name buffer-file-name)))
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
1049 (and master (file-exists-p master)
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
1050 (error "This file is already registered"))
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
1051 (and master
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
1052 (not (y-or-n-p "Previous master file has vanished. Make a new one? "))
8aae61dee4df (vc-register): Verify an old master file really still exists
Richard M. Stallman <rms@gnu.org>
parents: 9046
diff changeset
1053 (error "This file is already registered")))
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1054 ;; 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
1055 ;; 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
1056 (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
1057 (zerop (buffer-size))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1058 (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
1059 (set-buffer-modified-p t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1060 (vc-buffer-sync)
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1061 (cond ((not vc-make-backup-files)
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1062 ;; inhibit backup for this buffer
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1063 (make-local-variable 'backup-inhibited)
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1064 (setq backup-inhibited t)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1065 (vc-admin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1066 buffer-file-name
20988
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1067 (or (and override
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1068 (read-string
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1069 (format "Initial version level for %s: " buffer-file-name)))
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1070 vc-default-init-version)
9a6179e6eff6 (vc-default-init-version): New variable.
André Spiegel <spiegel@gnu.org>
parents: 20977
diff changeset
1071 comment)
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1072 ;; Recompute backend property (it may have been set to nil before).
20977
1ca384be7f8a (vc-register): Update vc-buffer-backend.
Karl Heuer <kwzh@gnu.org>
parents: 20967
diff changeset
1073 (setq vc-buffer-backend (vc-backend (buffer-file-name)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1074 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1075
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1076 (defun vc-resynch-window (file &optional keep noquery)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1077 ;; If the given file is in the current buffer,
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
1078 ;; either revert on it so we see expanded keywords,
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1079 ;; or unvisit it (depending on vc-keep-workfiles)
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1080 ;; NOQUERY if non-nil inhibits confirmation for reverting.
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1081 ;; NOQUERY should be t *only* if it is known the only difference
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1082 ;; between the buffer and the file is due to RCS rather than user editing!
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1083 (and (string= buffer-file-name file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1084 (if keep
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1085 (progn
1905
494dd05d460c * files.el (revert-buffer): Reverse the sense of the first
Jim Blandy <jimb@redhat.com>
parents: 1674
diff changeset
1086 (vc-revert-buffer1 t noquery)
20602
e8566ea47491 (vc-resynch-window): Behave properly when view-read-only is non-nil.
André Spiegel <spiegel@gnu.org>
parents: 19484
diff changeset
1087 (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
1088 (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
1089 (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
1090 (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
1091 (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
1092 (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
1093 (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
1094 (view-mode-enter))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1095 (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
1096 (kill-buffer (current-buffer)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1097
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1098 (defun vc-resynch-buffer (file &optional keep noquery)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1099 ;; 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
1100 (if (string= buffer-file-name file)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1101 (vc-resynch-window file keep noquery)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1102 (let ((buffer (get-file-buffer file)))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1103 (if buffer
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1104 (save-excursion
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1105 (set-buffer buffer)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1106 (vc-resynch-window file keep noquery))))))
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1107
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1108 (defun vc-start-entry (file rev comment msg action &optional 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
1109 ;; Accept a comment for an operation on FILE revision REV. If COMMENT
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
1110 ;; is nil, pop up a VC-log buffer, emit MSG, and set the
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
1111 ;; action on close to ACTION; otherwise, do action immediately.
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
1112 ;; Remember the file's buffer in vc-parent-buffer (current one if no file).
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1113 ;; AFTER-HOOK specifies the local value for vc-log-operation-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
1114 (let ((parent (if file (find-file-noselect file) (current-buffer))))
17274
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1115 (if vc-before-checkin-hook
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1116 (if file
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1117 (save-excursion
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1118 (set-buffer parent)
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1119 (run-hooks 'vc-before-checkin-hook))
c8228f461dda (vc-checkin-hook): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 17201
diff changeset
1120 (run-hooks 'vc-before-checkin-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
1121 (if comment
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
1122 (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
1123 (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
1124 (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
1125 (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
1126 (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
1127 (if file (vc-mode-line file))
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
1128 (vc-log-mode file)
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1129 (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
1130 (if after-hook
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1131 (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
1132 (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
1133 (setq vc-log-version rev)
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
1134 (if comment
70d00ecacc0d (vc-directory. vc-start-entry, vc-next-action, vc-next-action-on-file):
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2464
diff changeset
1135 (progn
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
1136 (erase-buffer)
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
1137 (if (eq comment t)
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
1138 (vc-finish-logentry t)
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
1139 (insert comment)
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
1140 (vc-finish-logentry 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
1141 (message "%s Type C-c C-c when done." msg))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1142
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
1143 (defun vc-admin (file rev &optional comment)
1478
429e23e87072 (vc-resynch-window): New arg NOQUERY. Pass it to vc-revert-buffer1.
Richard M. Stallman <rms@gnu.org>
parents: 1352
diff changeset
1144 "Check a file into your version-control system.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1145 FILE is the unmodified name of the file. REV should be the base version
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
1146 level to check it in under. COMMENT, if specified, is the checkin comment."
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1147 (vc-start-entry file rev
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1148 (or comment (not vc-initial-comment))
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1149 "Enter initial comment." 'vc-backend-admin
8563
a15ce495af6f (vc-admin): Pass nil as last arg to vc-start-entry.
Richard M. Stallman <rms@gnu.org>
parents: 8350
diff changeset
1150 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
1151
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1152 (defun vc-checkout (file &optional writable rev)
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
1153 "Retrieve a copy of the latest version of the given file."
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
1154 ;; If ftp is on this system and the name matches the ange-ftp format
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
1155 ;; for a remote file, the user is trying something that won't work.
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
1156 (if (and (string-match "^/[^/:]+:" file) (vc-find-binary "ftp"))
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
1157 (error "Sorry, you can't check out files over FTP"))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
1158 (vc-backend-checkout file writable rev)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1159 (vc-resynch-buffer file t t))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1160
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1161 (defun vc-steal-lock (file rev &optional owner)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1162 "Steal the lock on the current workfile."
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1163 (let (file-description)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1164 (if (not owner)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1165 (setq owner (vc-locking-user file)))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1166 (if rev
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1167 (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
1168 (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
1169 (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
1170 file-description owner)))
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1171 (error "Steal cancelled"))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1172 (pop-to-buffer (get-buffer-create "*VC-mail*"))
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1173 (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
1174 (auto-save-mode auto-save-default)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1175 (mail-mode)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1176 (erase-buffer)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1177 (mail-setup owner (format "Stolen lock on %s" file-description) nil nil nil
9045
989c8e13c115 (vc-finish-steal): Do vc-resynch-window in the right buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9044
diff changeset
1178 (list (list 'vc-finish-steal file rev)))
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1179 (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
1180 (insert
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1181 (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
1182 (current-time-string)
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1183 ".\n")
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
1184 (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
1185
1343
9b5cb40cb6c8 (vc-steal-lock): Use mail-setup, and do like `mail'.
Richard M. Stallman <rms@gnu.org>
parents: 1337
diff changeset
1186 ;; This is called when the notification has been sent.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1187 (defun vc-finish-steal (file version)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1188 (vc-backend-steal file version)
9045
989c8e13c115 (vc-finish-steal): Do vc-resynch-window in the right buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9044
diff changeset
1189 (if (get-file-buffer file)
989c8e13c115 (vc-finish-steal): Do vc-resynch-window in the right buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9044
diff changeset
1190 (save-excursion
9046
09fb6d81f449 (vc-finish-steal): Fix typo in previous change.
Richard M. Stallman <rms@gnu.org>
parents: 9045
diff changeset
1191 (set-buffer (get-file-buffer file))
9045
989c8e13c115 (vc-finish-steal): Do vc-resynch-window in the right buffer.
Richard M. Stallman <rms@gnu.org>
parents: 9044
diff changeset
1192 (vc-resynch-window file t t))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1193
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1194 (defun vc-checkin (file &optional rev comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1195 "Check in the file specified by FILE.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1196 The optional argument REV may be a string specifying the new version level
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
1197 \(if nil increment the current level). The file is either retained with write
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1198 permissions zeroed, or deleted (according to the value of `vc-keep-workfiles').
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
1199 If the back-end is CVS, a writable workfile is always kept.
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1200 COMMENT is a comment string; if omitted, a buffer is popped up to accept a
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1201 comment.
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1202
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1203 Runs the normal hook `vc-checkin-hook'."
6581
3a0db3b2366c (vc-checkin): Undo previous change.
Richard M. Stallman <rms@gnu.org>
parents: 6563
diff changeset
1204 (vc-start-entry file rev comment
8159
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1205 "Enter a change comment." 'vc-backend-checkin
513f25ffd93d (vc-start-entry): New arg after-hook.
Richard M. Stallman <rms@gnu.org>
parents: 8120
diff changeset
1206 'vc-checkin-hook))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1207
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1208 (defun vc-comment-to-change-log (&optional whoami file-name)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1209 "Enter last VC comment into change log file for current buffer's file.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1210 Optional arg (interactive prefix) non-nil means prompt for user name and site.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1211 Second arg is file name of change log. \
20967
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1212 If nil, uses `change-log-default-name'.
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1213
e57454838582 (vc-checkin-hook): Add :options.
Dave Love <fx@gnu.org>
parents: 20752
diff changeset
1214 May be useful as a `vc-checkin-hook' to update change logs automatically."
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1215 (interactive (if current-prefix-arg
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1216 (list current-prefix-arg
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1217 (prompt-for-change-log-name))))
5871
49029e28ed2c (vc-comment-to-change-log): Load add-log before binding
Karl Heuer <kwzh@gnu.org>
parents: 5732
diff changeset
1218 ;; Make sure the defvar for add-log-current-defun-function has been executed
49029e28ed2c (vc-comment-to-change-log): Load add-log before binding
Karl Heuer <kwzh@gnu.org>
parents: 5732
diff changeset
1219 ;; before binding it.
49029e28ed2c (vc-comment-to-change-log): Load add-log before binding
Karl Heuer <kwzh@gnu.org>
parents: 5732
diff changeset
1220 (require 'add-log)
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1221 (let (;; Extract the comment first so we get any error before doing anything.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1222 (comment (ring-ref vc-comment-ring 0))
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1223 ;; Don't let add-change-log-entry insert a defun name.
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1224 (add-log-current-defun-function 'ignore)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1225 end)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1226 ;; Call add-log to do half the work.
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1227 (add-change-log-entry whoami file-name t t)
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1228 ;; Insert the VC comment, leaving point before it.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1229 (setq end (save-excursion (insert comment) (point-marker)))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1230 (if (looking-at "\\s *\\s(")
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1231 ;; It starts with an open-paren, as in "(foo): Frobbed."
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1232 ;; So remove the ": " add-log inserted.
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1233 (delete-char -2))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1234 ;; Canonicalize the white space between the file name and comment.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1235 (just-one-space)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1236 ;; Indent rest of the text the same way add-log indented the first line.
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1237 (let ((indentation (current-indentation)))
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1238 (save-excursion
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1239 (while (< (point) end)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1240 (forward-line 1)
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1241 (indent-to indentation))
4156
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1242 (setq end (point))))
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1243 ;; Fill the inserted text, preserving open-parens at bol.
10900
5b375fee0e1f (vc-comment-to-change-log): Remove ^ from paragraph-start & paragraph-separate.
Boris Goldowsky <boris@gnu.org>
parents: 10862
diff changeset
1244 (let ((paragraph-separate (concat paragraph-separate "\\|\\s *\\s("))
5b375fee0e1f (vc-comment-to-change-log): Remove ^ from paragraph-start & paragraph-separate.
Boris Goldowsky <boris@gnu.org>
parents: 10862
diff changeset
1245 (paragraph-start (concat paragraph-start "\\|\\s *\\s(")))
4158
469c093061bf (vc-comment-to-change-log): Copy interactive spec from
Roland McGrath <roland@gnu.org>
parents: 4156
diff changeset
1246 (beginning-of-line)
4156
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1247 (fill-region (point) end))
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1248 ;; Canonicalize the white space at the end of the entry so it is
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1249 ;; separated from the next entry by a single blank line.
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1250 (skip-syntax-forward " " end)
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1251 (delete-char (- (skip-syntax-backward " ")))
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1252 (or (eobp) (looking-at "\n\n")
0000c3af1836 (vc-comment-to-change-log): Canonicalize following whitespace after
Roland McGrath <roland@gnu.org>
parents: 4155
diff changeset
1253 (insert "\n"))))
4155
9f0a271fa24f (vc-comment-to-change-log): Complete rewrite. Do not use
Roland McGrath <roland@gnu.org>
parents: 4000
diff changeset
1254
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
1255 (defun vc-finish-logentry (&optional nocomment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1256 "Complete the operation implied by the current log entry."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1257 (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
1258 ;; Check and record the comment, if any.
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
1259 (if (not nocomment)
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
1260 (progn
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
1261 ;; Comment too long?
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
1262 (vc-backend-logentry-check vc-log-file)
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
1263 ;; Record the comment in the comment ring
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
1264 (ring-insert vc-comment-ring (buffer-string))
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
1265 ))
5428
e66b058ec9f6 (vc-finish-logentry): Sync the buffer in case the user modified it while
Paul Eggert <eggert@twinsun.com>
parents: 5338
diff changeset
1266 ;; 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
1267 ;; But not if it is a vc-dired buffer.
5428
e66b058ec9f6 (vc-finish-logentry): Sync the buffer in case the user modified it while
Paul Eggert <eggert@twinsun.com>
parents: 5338
diff changeset
1268 (save-excursion
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
1269 (set-buffer vc-parent-buffer)
a61f6295ee0e (vc-next-action): Even in 1-file case, get its name from FILES.
Richard M. Stallman <rms@gnu.org>
parents: 8290
diff changeset
1270 (or vc-dired-mode
a61f6295ee0e (vc-next-action): Even in 1-file case, get its name from FILES.
Richard M. Stallman <rms@gnu.org>
parents: 8290
diff changeset
1271 (vc-buffer-sync)))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1272 (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
1273 ;; 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
1274 (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
1275 (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
1276 (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
1277 (log-entry (buffer-string))
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1278 (after-hook vc-log-after-operation-hook)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1279 (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
1280 (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
1281 ;; 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
1282 (save-excursion
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1283 (funcall log-operation
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1284 log-file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1285 log-version
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
1286 log-entry))
20661
e3498221274f (vc-finish-logentry): Move killing the log buffer after
Karl Heuer <kwzh@gnu.org>
parents: 20602
diff changeset
1287 ;; 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
1288 ;; 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
1289 (let ((logbuf (get-buffer "*VC-log*")))
24477
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1290 (cond ((and logbuf vc-delete-logbuf-window)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1291 (delete-windows-on logbuf (selected-frame))
22721
d023df160219 Comment change.
Richard M. Stallman <rms@gnu.org>
parents: 22715
diff changeset
1292 ;; 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
1293 (kill-buffer logbuf))
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1294 (t (pop-to-buffer "*VC-log*")
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1295 (bury-buffer)
b3b029a06e34 (vc-delete-logbuf-window): New var.
Karl Heuer <kwzh@gnu.org>
parents: 24139
diff changeset
1296 (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
1297 ;; Now make sure we see the expanded headers
189d7c4eaf68 (vc-finish-logentry): Use the value of vc-log-after-operation-hook of
Richard M. Stallman <rms@gnu.org>
parents: 8159
diff changeset
1298 (if buffer-file-name
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
1299 (vc-resynch-window buffer-file-name vc-keep-workfiles t))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1300 (if vc-dired-mode
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1301 (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
1302 (run-hooks after-hook 'vc-finish-logentry-hook)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1303
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1304 ;; Code for access to the comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1305
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
1306 (defun vc-previous-comment (arg)
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
1307 "Cycle backwards through comment history."
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
1308 (interactive "*p")
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
1309 (let ((len (ring-length vc-comment-ring)))
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
1310 (cond ((<= len 0)
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
1311 (message "Empty comment ring")
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
1312 (ding))
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
1313 (t
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
1314 (erase-buffer)
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
1315 ;; Initialize the index on the first use of this command
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
1316 ;; so that the first M-p gets index 0, and the first M-n gets
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
1317 ;; index -1.
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
1318 (if (null vc-comment-ring-index)
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
1319 (setq vc-comment-ring-index
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
1320 (if (> arg 0) -1
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
1321 (if (< arg 0) 1 0))))
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
1322 (setq vc-comment-ring-index
4509
aeef9d07f78d (vc-previous-comment): Use `mod', not `ring-mod'.
Paul Eggert <eggert@twinsun.com>
parents: 4480
diff changeset
1323 (mod (+ vc-comment-ring-index arg) len))
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
1324 (message "%d" (1+ vc-comment-ring-index))
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
1325 (insert (ring-ref vc-comment-ring vc-comment-ring-index))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1326
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
1327 (defun vc-next-comment (arg)
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
1328 "Cycle forwards through comment history."
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
1329 (interactive "*p")
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
1330 (vc-previous-comment (- arg)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1331
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
1332 (defun vc-comment-search-reverse (str)
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
1333 "Searches backwards through comment history for substring match."
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
1334 (interactive "sComment substring: ")
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
1335 (if (string= str "")
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
1336 (setq str vc-last-comment-match)
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
1337 (setq vc-last-comment-match str))
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
1338 (if (null vc-comment-ring-index)
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
1339 (setq vc-comment-ring-index -1))
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
1340 (let ((str (regexp-quote str))
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
1341 (len (ring-length vc-comment-ring))
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
1342 (n (1+ vc-comment-ring-index)))
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
1343 (while (and (< n len) (not (string-match str (ring-ref vc-comment-ring n))))
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
1344 (setq n (+ n 1)))
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
1345 (cond ((< n len)
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
1346 (vc-previous-comment (- n vc-comment-ring-index)))
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
1347 (t (error "Not found")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1348
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
1349 (defun vc-comment-search-forward (str)
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
1350 "Searches forwards through comment history for substring match."
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
1351 (interactive "sComment substring: ")
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
1352 (if (string= str "")
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
1353 (setq str vc-last-comment-match)
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
1354 (setq vc-last-comment-match str))
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
1355 (if (null vc-comment-ring-index)
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
1356 (setq vc-comment-ring-index 0))
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
1357 (let ((str (regexp-quote str))
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
1358 (len (ring-length vc-comment-ring))
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
1359 (n vc-comment-ring-index))
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
1360 (while (and (>= n 0) (not (string-match str (ring-ref vc-comment-ring n))))
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
1361 (setq n (- n 1)))
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
1362 (cond ((>= n 0)
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
1363 (vc-next-comment (- n vc-comment-ring-index)))
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
1364 (t (error "Not found")))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1365
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1366 ;; Additional entry points for examining version histories
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1367
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1368 ;;;###autoload
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
1369 (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
1370 "Display diffs between file versions.
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1371 Normally this compares the current file and buffer with the most recent
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1372 checked in version of that file. This uses no arguments.
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1373 With a prefix argument, it reads the file name to use
62869d996485 (vc-backend-diff): Use diff-switches, not vc-diff-options.
Richard M. Stallman <rms@gnu.org>
parents: 2666
diff changeset
1374 and two version designators specifying which versions to compare."
14376
eb8910a353fc (vc-diff): Make NOT-URGENT default to t.
Richard M. Stallman <rms@gnu.org>
parents: 14297
diff changeset
1375 (interactive (list current-prefix-arg t))
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1376 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1377 (if historic
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1378 (call-interactively 'vc-version-diff)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1379 (let ((file buffer-file-name)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1380 unchanged)
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1381 (vc-buffer-sync not-urgent)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1382 (setq unchanged (vc-workfile-unchanged-p buffer-file-name))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1383 (if unchanged
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1384 (message "No changes to %s since latest version" file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1385 (vc-backend-diff file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1386 ;; Ideally, we'd like at this point to parse the diff so that
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1387 ;; the buffer effectively goes into compilation mode and we
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1388 ;; can visit the old and new change locations via next-error.
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1389 ;; Unfortunately, this is just too painful to do. The basic
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1390 ;; problem is that the `old' file doesn't exist to be
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1391 ;; visited. This plays hell with numerous assumptions in
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1392 ;; the diff.el and compile.el machinery.
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1393 (set-buffer "*vc-diff*")
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1394 (setq default-directory (file-name-directory file))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1395 (if (= 0 (buffer-size))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1396 (progn
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1397 (setq unchanged t)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1398 (message "No changes to %s since latest version" file))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1399 (pop-to-buffer "*vc-diff*")
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1400 (goto-char (point-min))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1401 (shrink-window-if-larger-than-buffer)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1402 (not unchanged))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1403
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1404 (defun vc-version-diff (file rel1 rel2)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1405 "For FILE, report diffs between two stored versions REL1 and REL2 of it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1406 If FILE is a directory, generate diffs between versions for all registered
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1407 files in or below it."
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1408 (interactive
27436
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1409 (let ((file (expand-file-name
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1410 (read-file-name (if buffer-file-name
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1411 "File or dir to diff: (default visited file) "
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1412 "File or dir to diff: ")
564f85cd6921 (vc-version-diff): Make sure file name is expanded.
Gerd Moellmann <gerd@gnu.org>
parents: 26685
diff changeset
1413 default-directory buffer-file-name t)))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1414 (rel1-default nil) (rel2-default nil))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1415 ;; 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
1416 (cond
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1417 ;; if it's a directory, don't supply any version defauolt
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1418 ((file-directory-p file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1419 nil)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1420 ;; if the file is locked, use current version as older version
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1421 ((vc-locking-user file)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1422 (setq rel1-default (vc-workfile-version file)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1423 ;; 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
1424 (t
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1425 (setq rel1-default (vc-previous-version (vc-workfile-version file)))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1426 (setq rel2-default (vc-workfile-version file))))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1427 ;; construct argument list
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
1428 (list file
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1429 (read-string (if rel1-default
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1430 (concat "Older version: (default "
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1431 rel1-default ") ")
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1432 "Older version: ")
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1433 nil nil rel1-default)
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1434 (read-string (if rel2-default
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1435 (concat "Newer version: (default "
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1436 rel2-default ") ")
19177
31175a4bf0a6 (vc-version-diff): Change the Newer version prompt.
Richard M. Stallman <rms@gnu.org>
parents: 19126
diff changeset
1437 "Newer version (default: current source): ")
19126
c57d673ff676 (vc-version-diff): Use defaults, not initial input,
Richard M. Stallman <rms@gnu.org>
parents: 19055
diff changeset
1438 nil nil rel2-default))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1439 (if (string-equal rel1 "") (setq rel1 nil))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1440 (if (string-equal rel2 "") (setq rel2 nil))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1441 (if (file-directory-p file)
2402
61e1f8813d03 (vc-comment-to-changelog): A useful vc-checkin hook, added.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2226
diff changeset
1442 (let ((camefrom (current-buffer)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1443 (set-buffer (get-buffer-create "*vc-status*"))
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
1444 (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
1445 (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
1446 (concat " from " (buffer-name camefrom)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1447 (erase-buffer)
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1448 (insert "Diffs between "
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1449 (or rel1 "last version checked in")
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1450 " and "
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1451 (or rel2 "current workfile(s)")
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1452 ":\n\n")
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
1453 (set-buffer (get-buffer-create "*vc-diff*"))
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
1454 (cd file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1455 (vc-file-tree-walk
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1456 default-directory
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1457 (function (lambda (f)
2219
a729b16f7427 (vc-version-diff): Use (message ...), not (message (format ...)).
Paul Eggert <eggert@twinsun.com>
parents: 2212
diff changeset
1458 (message "Looking at %s" f)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1459 (and
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1460 (not (file-directory-p f))
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
1461 (vc-registered f)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1462 (vc-backend-diff f rel1 rel2)
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1463 (append-to-buffer "*vc-status*" (point-min) (point-max)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
1464 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1465 (pop-to-buffer "*vc-status*")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1466 (insert "\nEnd of diffs.\n")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1467 (goto-char (point-min))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1468 (set-buffer-modified-p nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1469 )
2769
209f745babd1 (vc-version-diff): Don't move point in current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 2760
diff changeset
1470 (if (zerop (vc-backend-diff file rel1 rel2))
209f745babd1 (vc-version-diff): Don't move point in current buffer.
Richard M. Stallman <rms@gnu.org>
parents: 2760
diff changeset
1471 (message "No changes to %s between %s and %s." file rel1 rel2)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
1472 (pop-to-buffer "*vc-diff*"))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1473
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1474 ;;;###autoload
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1475 (defun vc-version-other-window (rev)
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1476 "Visit version REV of the current buffer in another window.
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1477 If the current buffer is named `F', the version is named `F.~REV~'.
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1478 If `F.~REV~' already exists, it is used instead of being re-created."
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1479 (interactive "sVersion to visit (default is latest version): ")
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1480 (vc-ensure-vc-buffer)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1481 (let* ((version (if (string-equal rev "")
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1482 (vc-latest-version buffer-file-name)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1483 rev))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1484 (filename (concat buffer-file-name ".~" version "~")))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1485 (or (file-exists-p filename)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1486 (vc-backend-checkout buffer-file-name nil version filename))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1487 (find-file-other-window filename)))
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
1488
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1489 ;; Header-insertion code
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1490
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1491 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1492 (defun vc-insert-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1493 "Insert headers in a file for use with your version-control system.
23235
7f3fdbb83988 (vc-insert-headers): Doc fix.
Dave Love <fx@gnu.org>
parents: 22905
diff changeset
1494 Headers desired are inserted at point, and are pulled from
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
1495 the variable `vc-header-alist'."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1496 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1497 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1498 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1499 (save-restriction
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1500 (widen)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1501 (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
1502 (y-or-n-p "Version headers already exist. Insert another set? "))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1503 (progn
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1504 (let* ((delims (cdr (assq major-mode vc-comment-alist)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1505 (comment-start-vc (or (car delims) comment-start "#"))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1506 (comment-end-vc (or (car (cdr delims)) comment-end ""))
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
1507 (hdstrings (cdr (assoc (vc-backend (buffer-file-name)) vc-header-alist))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1508 (mapcar (function (lambda (s)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1509 (insert comment-start-vc "\t" s "\t"
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1510 comment-end-vc "\n")))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1511 hdstrings)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1512 (if vc-static-header-alist
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1513 (mapcar (function (lambda (f)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1514 (if (string-match (car f) buffer-file-name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1515 (insert (format (cdr f) (car hdstrings))))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1516 vc-static-header-alist))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1517 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1518 )))))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1519
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1520 (defun vc-clear-headers ()
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1521 ;; Clear all version headers in the current buffer, i.e. reset them
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1522 ;; to the nonexpanded form. Only implemented for RCS, yet.
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1523 ;; Don't lose point and mark during this.
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1524 (let ((context (vc-buffer-context))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1525 (case-fold-search nil))
21113
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1526 ;; save-excursion may be able to relocate point and mark properly.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1527 ;; If it fails, vc-restore-buffer-context will give it a second try.
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1528 (save-excursion
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1529 (goto-char (point-min))
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1530 (while (re-search-forward
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1531 (concat "\\$\\(Author\\|Date\\|Header\\|Id\\|Locker\\|Name\\|"
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1532 "RCSfile\\|Revision\\|Source\\|State\\): [^$\n]+\\$")
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1533 nil t)
fcf0d1459d81 (vc-context-matches-p): New function.
André Spiegel <spiegel@gnu.org>
parents: 20988
diff changeset
1534 (replace-match "$\\1$")))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
1535 (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
1536
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1537 ;;;###autoload
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1538 (defun vc-merge ()
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1539 (interactive)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1540 (vc-ensure-vc-buffer)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1541 (vc-buffer-sync)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1542 (let* ((file buffer-file-name)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1543 (backend (vc-backend file))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1544 first-version second-version locking-user)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1545 (if (eq backend 'SCCS)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1546 (error "Sorry, merging is not implemented for SCCS")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1547 (setq locking-user (vc-locking-user file))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1548 (if (eq (vc-checkout-model file) 'manual)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1549 (if (not locking-user)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1550 (if (not (y-or-n-p
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1551 (format "File must be %s for merging. %s now? "
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1552 (if (eq backend 'RCS) "locked" "writable")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1553 (if (eq backend 'RCS) "Lock" "Check out"))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1554 (error "Merge aborted")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1555 (vc-checkout file t))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1556 (if (not (string= locking-user (vc-user-login-name)))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1557 (error "File is locked by %s" locking-user))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1558 (setq first-version (read-string "Branch or version to merge from: "))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1559 (if (and (>= (elt first-version 0) ?0)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1560 (<= (elt first-version 0) ?9))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1561 (if (not (vc-branch-p first-version))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1562 (setq second-version
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1563 (read-string "Second version: "
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1564 (concat (vc-branch-part first-version) ".")))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1565 ;; We want to merge an entire branch. Set versions
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1566 ;; accordingly, so that vc-backend-merge understands us.
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1567 (setq second-version first-version)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1568 ;; first-version must be the starting point of the branch
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1569 (setq first-version (vc-branch-part first-version))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1570 (let ((status (vc-backend-merge file first-version second-version)))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1571 (if (and (eq (vc-checkout-model file) 'implicit)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1572 (not (vc-locking-user file)))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1573 (vc-file-setprop file 'vc-locking-user nil))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1574 (vc-resynch-buffer file t t)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1575 (if (not (zerop status))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1576 (if (y-or-n-p "Conflicts detected. Resolve them now? ")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1577 (vc-resolve-conflicts "WORKFILE" "MERGE SOURCE")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1578 (message "File contains conflict markers"))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1579 (message "Merge successful"))))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1580
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1581 (defvar vc-ediff-windows)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1582 (defvar vc-ediff-result)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1583
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1584 ;;;###autoload
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1585 (defun vc-resolve-conflicts (&optional name-A name-B)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1586 "Invoke ediff to resolve conflicts in the current buffer.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1587 The conflicts must be marked with rcsmerge conflict markers."
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1588 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
1589 (vc-ensure-vc-buffer)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1590 (let* ((found nil)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1591 (file-name (file-name-nondirectory buffer-file-name))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1592 (your-buffer (generate-new-buffer
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1593 (concat "*" file-name
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1594 " " (or name-A "WORKFILE") "*")))
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1595 (other-buffer (generate-new-buffer
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1596 (concat "*" file-name
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
1597 " " (or name-B "CHECKED-IN") "*")))
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1598 (result-buffer (current-buffer)))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1599 (save-excursion
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1600 (set-buffer your-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1601 (erase-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1602 (insert-buffer result-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1603 (goto-char (point-min))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1604 (while (re-search-forward (concat "^<<<<<<< "
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1605 (regexp-quote file-name) "\n") nil t)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1606 (setq found t)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1607 (replace-match "")
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1608 (if (not (re-search-forward "^=======\n" nil t))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1609 (error "Malformed conflict marker"))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1610 (replace-match "")
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1611 (let ((start (point)))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1612 (if (not (re-search-forward "^>>>>>>> [0-9.]+\n" nil t))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1613 (error "Malformed conflict marker"))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1614 (delete-region start (point))))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1615 (if (not found)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1616 (progn
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1617 (kill-buffer your-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1618 (kill-buffer other-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1619 (error "No conflict markers found")))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1620 (set-buffer other-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1621 (erase-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1622 (insert-buffer result-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1623 (goto-char (point-min))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1624 (while (re-search-forward (concat "^<<<<<<< "
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1625 (regexp-quote file-name) "\n") nil t)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1626 (let ((start (match-beginning 0)))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1627 (if (not (re-search-forward "^=======\n" nil t))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1628 (error "Malformed conflict marker"))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1629 (delete-region start (point))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1630 (if (not (re-search-forward "^>>>>>>> [0-9.]+\n" nil t))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1631 (error "Malformed conflict marker"))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1632 (replace-match "")))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1633 (let ((config (current-window-configuration))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1634 (ediff-default-variant 'default-B))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1635
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1636 ;; Fire up ediff.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1637
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1638 (set-buffer (ediff-merge-buffers your-buffer other-buffer))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1639
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1640 ;; Ediff is now set up, and we are in the control buffer.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1641 ;; Do a few further adjustments and take precautions for exit.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1642
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1643 (make-local-variable 'vc-ediff-windows)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1644 (setq vc-ediff-windows config)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1645 (make-local-variable 'vc-ediff-result)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1646 (setq vc-ediff-result result-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1647 (make-local-variable 'ediff-quit-hook)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1648 (setq ediff-quit-hook
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1649 (function
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1650 (lambda ()
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1651 (let ((buffer-A ediff-buffer-A)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1652 (buffer-B ediff-buffer-B)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1653 (buffer-C ediff-buffer-C)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1654 (result vc-ediff-result)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1655 (windows vc-ediff-windows))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1656 (ediff-cleanup-mess)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1657 (set-buffer result)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1658 (erase-buffer)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1659 (insert-buffer buffer-C)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1660 (kill-buffer buffer-A)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1661 (kill-buffer buffer-B)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1662 (kill-buffer buffer-C)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1663 (set-window-configuration windows)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1664 (message "Conflict resolution finished; you may save the buffer")))))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1665 (message "Please resolve conflicts now; exit ediff when done")
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1666 nil))))
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
1667
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1668 ;; 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
1669 ;; 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
1670
23792
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1671 (defvar vc-dired-switches)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1672 (defvar vc-dired-terse-mode)
ec06ad058029 (vc-dired-window-configuration, vc-ediff-windows,
André Spiegel <spiegel@gnu.org>
parents: 23635
diff changeset
1673
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1674 (define-derived-mode vc-dired-mode dired-mode "Dired under VC"
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1675 "The major mode used in VC directory buffers. It works like Dired,
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1676 but lists only files under version control, with the current VC state of
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1677 each file being indicated in the place of the file's link count, owner,
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1678 group and size. Subdirectories are also listed, and you may insert them
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1679 into the buffer as desired, like in Dired.
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1680 All Dired commands operate normally, with the exception of `v', which
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1681 is redefined as the version control prefix, so that you can type
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1682 `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
1683 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
1684 `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
1685 There is a special command, `*l', to mark all files currently locked."
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
1686 (make-local-hook 'dired-after-readin-hook)
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
1687 (add-hook 'dired-after-readin-hook 'vc-dired-hook nil t)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1688 ;; The following is slightly modified from dired.el,
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1689 ;; because file lines look a bit different in vc-dired-mode.
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1690 (set (make-local-variable 'dired-move-to-filename-regexp)
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1691 (let*
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1692 ((l "\\([A-Za-z]\\|[^\0-\177]\\)")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1693 ;; In some locales, month abbreviations are as short as 2 letters,
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1694 ;; and they can be padded on the right with spaces.
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1695 (month (concat l l "+ *"))
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1696 ;; Recognize any non-ASCII character.
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1697 ;; The purpose is to match a Kanji character.
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1698 (k "[^\0-\177]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1699 ;; (k "[^\x00-\x7f\x80-\xff]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1700 (s " ")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1701 (yyyy "[0-9][0-9][0-9][0-9]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1702 (mm "[ 0-1][0-9]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1703 (dd "[ 0-3][0-9]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1704 (HH:MM "[ 0-2][0-9]:[0-5][0-9]")
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1705 (western (concat "\\(" month s dd "\\|" dd s month "\\)"
24852
fb28ec3f61c7 Undo previous undo -- spiegel's change already corrected rms's.
Karl Heuer <kwzh@gnu.org>
parents: 24850
diff changeset
1706 s "\\(" HH:MM "\\|" s yyyy"\\|" yyyy s "\\)"))
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1707 (japanese (concat mm k s dd k s "\\(" s HH:MM "\\|" yyyy k "\\)")))
24823
7bf461aabf49 (vc-dired-mode): Don't match anything before the date in
André Spiegel <spiegel@gnu.org>
parents: 24761
diff changeset
1708 (concat s "\\(" western "\\|" japanese "\\)" 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
1709 (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
1710 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
1711 (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
1712 vc-dired-switches))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1713 (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
1714 (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
1715
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1716 (define-key vc-dired-mode-map "\C-xv" vc-prefix-map)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1717 (define-key vc-dired-mode-map "v" vc-prefix-map)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1718
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1719 (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
1720 "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
1721 (interactive)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1722 (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
1723 nil
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1724 (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
1725 (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
1726 (vc-dired-hook)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1727 (revert-buffer))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1728
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1729 (define-key vc-dired-mode-map "vt" 'vc-dired-toggle-terse-mode)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1730
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1731 (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
1732 "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
1733 (interactive)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1734 (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
1735 (and f
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1736 (not (file-directory-p f))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1737 (vc-locking-user f)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1738 "locked file"))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1739
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1740 (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
1741
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1742 (defun vc-fetch-cvs-status (dir)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1743 (let ((default-directory dir))
21908
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1744 ;; Don't specify DIR in this command, the default-directory is
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1745 ;; enough. Otherwise it might fail with remote repositories.
24903
6f932cbd18e8 (vc-fetch-cvs-status): Use "-l" option for "cvs status", to make it
André Spiegel <spiegel@gnu.org>
parents: 24852
diff changeset
1746 (vc-do-command "*vc-info*" 0 "cvs" nil nil "status" "-l")
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1747 (save-excursion
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1748 (set-buffer (get-buffer "*vc-info*"))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1749 (goto-char (point-min))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1750 (while (re-search-forward "^=+\n\\([^=\n].*\n\\|\n\\)+" nil t)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1751 (narrow-to-region (match-beginning 0) (match-end 0))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1752 (vc-parse-cvs-status)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1753 (goto-char (point-max))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1754 (widen)))))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1755
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1756 (defun vc-dired-state-info (file)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1757 ;; Return the string that indicates the version control status
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1758 ;; on a VC dired line.
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1759 (let* ((cvs-state (and (eq (vc-backend file) 'CVS)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1760 (vc-cvs-status file)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1761 (state
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1762 (if cvs-state
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1763 (cond ((eq cvs-state 'up-to-date) nil)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1764 ((eq cvs-state 'needs-checkout) "patch")
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1765 ((eq cvs-state 'locally-modified) "modified")
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1766 ((eq cvs-state 'needs-merge) "merge")
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1767 ((eq cvs-state 'unresolved-conflict) "conflict")
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1768 ((eq cvs-state 'locally-added) "added"))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1769 (vc-locking-user file))))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1770 (if state (concat "(" state ")"))))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
1771
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
1772 (defun vc-dired-reformat-line (x)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1773 ;; Reformat a directory-listing line, replacing various columns with
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1774 ;; version control information.
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
1775 ;; 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
1776 (beginning-of-line)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1777 (let ((pos (point)) limit perm date-and-file)
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1778 (end-of-line)
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1779 (setq limit (point))
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1780 (goto-char pos)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1781 (when
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1782 (or
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1783 (re-search-forward ;; owner and group
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1784 "^\\(..[drwxlts-]+ \\) *[0-9]+ [^ ]+ +[^ ]+ +[0-9]+\\( .*\\)"
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1785 limit t)
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1786 (re-search-forward ;; only owner displayed
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1787 "^\\(..[drwxlts-]+ \\) *[0-9]+ [^ ]+ +[0-9]+\\( .*\\)"
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1788 limit t)
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1789 (re-search-forward ;; OS/2 -l format, no links, owner, group
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1790 "^\\(..[drwxlts-]+ \\) *[0-9]+\\( .*\\)"
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1791 limit t))
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1792 (setq perm (match-string 1)
21560
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1793 date-and-file (match-string 2))
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1794 (setq x (substring (concat x " ") 0 10))
9e3de167472c (vc-dired-mode): Redefine dired-move-to-filename-regexp locally.
André Spiegel <spiegel@gnu.org>
parents: 21559
diff changeset
1795 (replace-match (concat perm x date-and-file)))))
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
1796
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1797 (defun vc-dired-hook ()
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1798 ;; Called by dired after any portion of a vc-dired buffer has been read in.
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1799 ;; Reformat the listing according to version control.
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1800 (message "Getting version information... ")
21908
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1801 (let (subdir filename (buffer-read-only nil) cvs-dir)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1802 (goto-char (point-min))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1803 (while (not (eq (point) (point-max)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1804 (cond
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1805 ;; subdir header line
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1806 ((setq subdir (dired-get-subdir))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1807 (if (file-directory-p (concat subdir "/CVS"))
21908
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1808 (progn
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1809 (vc-fetch-cvs-status (file-name-as-directory subdir))
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1810 (setq cvs-dir t))
e35eb91f05cc (vc-fetch-cvs-status): Don't specify DIR on the command line.
André Spiegel <spiegel@gnu.org>
parents: 21669
diff changeset
1811 (setq cvs-dir nil))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1812 (forward-line 1)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1813 ;; erase (but don't remove) the "total" line
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1814 (let ((start (point)))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1815 (end-of-line)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1816 (delete-region start (point))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1817 (beginning-of-line)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1818 (forward-line 1)))
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1819 ;; directory entry
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1820 ((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
1821 (cond
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1822 ;; subdir
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1823 ((file-directory-p filename)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1824 (cond
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1825 ((member (file-name-nondirectory filename)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1826 vc-directory-exclusion-list)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1827 (let ((pos (point)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1828 (dired-kill-tree filename)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1829 (goto-char pos)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1830 (dired-kill-line)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1831 (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
1832 ;; 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
1833 ;; 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
1834 ;; that would remove the directory contents as well.
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1835 (delete-region (progn (beginning-of-line) (point))
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1836 (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
1837 ((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
1838 (dired-kill-line))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1839 (t
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1840 (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
1841 (forward-line 1))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1842 ;; ordinary file
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1843 ((if cvs-dir
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1844 (and (eq (vc-file-getprop filename 'vc-backend) 'CVS)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1845 (or (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
1846 (not (eq (vc-cvs-status filename) 'up-to-date))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1847 (and (vc-backend filename)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1848 (or (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
1849 (vc-locking-user filename))))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1850 (vc-dired-reformat-line (vc-dired-state-info filename))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1851 (forward-line 1))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1852 (t
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1853 (dired-kill-line))))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1854 ;; any other line
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1855 (t (forward-line 1))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1856 (vc-dired-purge))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1857 (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
1858 (save-restriction
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1859 (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
1860 (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
1861 (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
1862 (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
1863
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1864 (defun vc-dired-purge ()
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1865 ;; Remove empty subdirs
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1866 (let (subdir)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1867 (goto-char (point-min))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1868 (while (setq subdir (dired-get-subdir))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1869 (forward-line 2)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1870 (if (dired-get-filename nil t)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1871 (if (not (dired-next-subdir 1 t))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1872 (goto-char (point-max)))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1873 (forward-line -2)
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1874 (if (not (string= (dired-current-directory) default-directory))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1875 (dired-do-kill-lines t "")
22453
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1876 ;; We cannot remove the top level directory.
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1877 ;; Just make it look a little nicer.
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1878 (forward-line 1)
9d9df85eb7fb (vc-dired-hook): Don't use dired-kill-line to remove directory lines
André Spiegel <spiegel@gnu.org>
parents: 22437
diff changeset
1879 (kill-line)
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1880 (if (not (dired-next-subdir 1 t))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1881 (goto-char (point-max))))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1882 (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
1883
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1884 ;;;###autoload
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1885 (defun vc-directory (dirname read-switches)
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1886 (interactive "DDired under VC (directory): \nP")
22437
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1887 (let ((vc-dired-switches (concat dired-listing-switches
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1888 (if vc-dired-recurse "R" ""))))
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1889 (if read-switches
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1890 (setq vc-dired-switches
982bf2f2c1de (vc-dired-recurse, vc-dired-terse-display): New user options.
André Spiegel <spiegel@gnu.org>
parents: 22356
diff changeset
1891 (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
1892 vc-dired-switches)))
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1893 (require 'dired)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1894 (require 'dired-aux)
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1895 ;; force a trailing slash
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1896 (if (not (eq (elt dirname (1- (length dirname))) ?/))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1897 (setq dirname (concat dirname "/")))
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1898 (switch-to-buffer
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1899 (dired-internal-noselect (expand-file-name dirname)
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
1900 (or vc-dired-switches dired-listing-switches)
21357
b0e5a2784761 (vc-next-action-dired): Use dired-do-redisplay. Handle
Richard M. Stallman <rms@gnu.org>
parents: 21329
diff changeset
1901 'vc-dired-mode))))
10475
2d9590603a06 Revert Jan 15 and Jan 5 changes.
Richard M. Stallman <rms@gnu.org>
parents: 10431
diff changeset
1902
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1903 ;; Named-configuration support for SCCS
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1905 (defun vc-add-triple (name file rev)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1906 (save-excursion
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1907 (find-file (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1908 vc-name-assoc-file
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
1909 (file-name-directory (vc-name file))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1910 (goto-char (point-max))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1911 (insert name "\t:\t" file "\t" rev "\n")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1912 (basic-save-buffer)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1913 (kill-buffer (current-buffer))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1914 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1915
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1916 (defun vc-record-rename (file newname)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1917 (save-excursion
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1918 (find-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1919 (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1920 vc-name-assoc-file
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
1921 (file-name-directory (vc-name file))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1922 (goto-char (point-min))
5263
f12548cb6e0b (vc-record-rename): Don't use replace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 5212
diff changeset
1923 ;; (replace-regexp (concat ":" (regexp-quote file) "$") (concat ":" newname))
f12548cb6e0b (vc-record-rename): Don't use replace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 5212
diff changeset
1924 (while (re-search-forward (concat ":" (regexp-quote file) "$") nil t)
f12548cb6e0b (vc-record-rename): Don't use replace-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 5212
diff changeset
1925 (replace-match (concat ":" newname) nil nil))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1926 (basic-save-buffer)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1927 (kill-buffer (current-buffer))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1928 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1929
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1930 (defun vc-lookup-triple (file name)
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
1931 ;; Return the numeric version corresponding to a named snapshot of file
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1932 ;; If name is nil or a version number string it's just passed through
5989
0b529dfd88c3 (vc-lookup-triple): Yield nil, not "", if NAME is nil.
Paul Eggert <eggert@twinsun.com>
parents: 5871
diff changeset
1933 (cond ((null name) name)
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
1934 ((let ((firstchar (aref name 0)))
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1935 (and (>= firstchar ?0) (<= firstchar ?9)))
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1936 name)
b2216b3b8f57 (vc-header-strings) Name changed to vc-header-alist, to match the
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2219
diff changeset
1937 (t
12281
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1938 (save-excursion
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1939 (set-buffer (get-buffer-create "*vc-info*"))
12311
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1940 (vc-insert-file
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1941 (expand-file-name
d33ef5819d81 (vc-register): Inhibit backups for the file's buffer
Richard M. Stallman <rms@gnu.org>
parents: 12281
diff changeset
1942 vc-name-assoc-file
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
1943 (file-name-directory (vc-name file))))
12281
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1944 (prog1
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1945 (car (vc-parse-buffer
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1946 (list (list (concat name "\t:\t" file "\t\\(.+\\)") 1))))
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1947 (kill-buffer "*vc-info*"))))
ba3d2da14bca (vc-lookup-triple): changed the code that used to call
Richard M. Stallman <rms@gnu.org>
parents: 12280
diff changeset
1948 ))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1949
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1950 ;; Named-configuration entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1951
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1952 (defun vc-snapshot-precondition ()
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1953 ;; Scan the tree below the current directory.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1954 ;; If any files are locked, return the name of the first such file.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1955 ;; (This means, neither snapshot creation nor retrieval is allowed.)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1956 ;; If one or more of the files are currently visited, return `visited'.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1957 ;; Otherwise, return nil.
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1958 (let ((status nil))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1959 (catch 'vc-locked-example
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1960 (vc-file-tree-walk
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1961 default-directory
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1962 (function (lambda (f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1963 (and (vc-registered f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1964 (if (vc-locking-user f) (throw 'vc-locked-example f)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1965 (if (get-file-buffer f) (setq status 'visited)))))))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1966 status)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1967
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1968 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1969 (defun vc-create-snapshot (name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1970 "Make a snapshot called NAME.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1971 The snapshot is made from all registered files at or below the current
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1972 directory. For each file, the version level of its latest
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1973 version becomes part of the named configuration."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1974 (interactive "sNew snapshot name: ")
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1975 (let ((result (vc-snapshot-precondition)))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1976 (if (stringp result)
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
1977 (error "File %s is locked" result)
4656
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1978 (vc-file-tree-walk
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
1979 default-directory
4656
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1980 (function (lambda (f) (and
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1981 (vc-name f)
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1982 (vc-backend-assign-name f name)))))
29bd5f3d0059 (vc-locked-example): Renamed from vc-quiescent-p. Now yields example of
Paul Eggert <eggert@twinsun.com>
parents: 4509
diff changeset
1983 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1984
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
1985 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
1986 (defun vc-retrieve-snapshot (name)
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1987 "Retrieve the snapshot called NAME, or latest versions if NAME is empty.
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1988 When retrieving a snapshot, there must not be any locked files at or below
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1989 the current directory. If none are locked, all registered files are
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1990 checked out (unlocked) at their version levels in the snapshot NAME.
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1991 If NAME is the empty string, all registered files that are not currently
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1992 locked are updated to the latest versions."
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1993 (interactive "sSnapshot name to retrieve (default latest versions): ")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1994 (let ((update (yes-or-no-p "Update any affected buffers? ")))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1995 (if (string= name "")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1996 (progn
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1997 (vc-file-tree-walk
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1998 default-directory
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
1999 (function (lambda (f) (and
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2000 (vc-registered f)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2001 (not (vc-locking-user f))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2002 (vc-error-occurred
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2003 (vc-backend-checkout f nil "")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2004 (if update (vc-resynch-buffer f t t))))))))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2005 (let ((result (vc-snapshot-precondition)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2006 (if (stringp result)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2007 (error "File %s is locked" result)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2008 (setq update (and (eq result 'visited) update))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2009 (vc-file-tree-walk
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2010 default-directory
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2011 (function (lambda (f) (and
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2012 (vc-name f)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2013 (vc-error-occurred
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2014 (vc-backend-checkout f nil name)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2015 (if update (vc-resynch-buffer f t t)))))))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2016 )))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2017
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2018 ;; Miscellaneous other entry points
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2019
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2020 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2021 (defun vc-print-log ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2022 "List the change log of the current buffer in a window."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2023 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2024 (vc-ensure-vc-buffer)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2025 (let ((file buffer-file-name))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2026 (vc-backend-print-log file)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2027 (pop-to-buffer (get-buffer-create "*vc*"))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2028 (setq default-directory (file-name-directory file))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2029 (goto-char (point-max)) (forward-line -1)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2030 (while (looking-at "=*\n")
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2031 (delete-char (- (match-end 0) (match-beginning 0)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2032 (forward-line -1))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2033 (goto-char (point-min))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2034 (if (looking-at "[\b\t\n\v\f\r ]+")
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2035 (delete-char (- (match-end 0) (match-beginning 0))))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2036 (shrink-window-if-larger-than-buffer)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2037 ;; move point to the log entry for the current version
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2038 (and (not (eq (vc-backend file) 'SCCS))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2039 (re-search-forward
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2040 ;; also match some context, for safety
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2041 (concat "----\nrevision " (vc-workfile-version file)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2042 "\\(\tlocked by:.*\n\\|\n\\)date: ") nil t)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2043 ;; set the display window so that
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2044 ;; the whole log entry is displayed
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2045 (let (start end lines)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2046 (beginning-of-line) (forward-line -1) (setq start (point))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2047 (if (not (re-search-forward "^----*\nrevision" nil t))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2048 (setq end (point-max))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2049 (beginning-of-line) (forward-line -1) (setq end (point)))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2050 (setq lines (count-lines start end))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2051 (cond
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2052 ;; if the global information and this log entry fit
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2053 ;; into the window, display from the beginning
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2054 ((< (count-lines (point-min) end) (window-height))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2055 (goto-char (point-min))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2056 (recenter 0)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2057 (goto-char start))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2058 ;; if the whole entry fits into the window,
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2059 ;; display it centered
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2060 ((< (1+ lines) (window-height))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2061 (goto-char start)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2062 (recenter (1- (- (/ (window-height) 2) (/ lines 2)))))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2063 ;; otherwise (the entry is too large for the window),
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2064 ;; display from the start
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2065 (t
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2066 (goto-char start)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2067 (recenter 0)))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2068
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2069 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2070 (defun vc-revert-buffer ()
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2071 "Revert the current buffer's file back to the version it was based on.
952
ba6a993500d4 entered into RCS
Richard M. Stallman <rms@gnu.org>
parents: 927
diff changeset
2072 This asks for confirmation if the buffer contents are not identical
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2073 to that version. Note that for RCS and CVS, this function does not
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2074 automatically pick up newer changes found in the master file;
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2075 use C-u \\[vc-next-action] RET to do so."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2076 (interactive)
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2077 (vc-ensure-vc-buffer)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2078 (let ((file buffer-file-name)
13536
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
2079 ;; This operation should always ask for confirmation.
af2fc95b03f0 (vc-directory): Require dired.
Richard M. Stallman <rms@gnu.org>
parents: 13379
diff changeset
2080 (vc-suppress-confirm nil)
5338
b3a78854c791 (vc-buffer-sync, vc-diff): New arg NOT-URGENT.
Richard M. Stallman <rms@gnu.org>
parents: 5263
diff changeset
2081 (obuf (current-buffer)) (changed (vc-diff nil t)))
21329
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2082 (if changed
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2083 (unwind-protect
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2084 (if (not (yes-or-no-p "Discard changes? "))
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2085 (error "Revert cancelled"))
12806
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
2086 (if (and (window-dedicated-p (selected-window))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
2087 (one-window-p t 'selected-frame))
826ee893ebdf (vc-revert-buffer): In a dedicated solitary window,
Richard M. Stallman <rms@gnu.org>
parents: 12714
diff changeset
2088 (make-frame-invisible (selected-frame))
21329
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2089 (delete-window))))
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2090 (set-buffer obuf)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2091 (vc-backend-revert file)
21329
58dc75416c30 (vc-revert-buffer): Rewrote handling of vc-diff buffer,
André Spiegel <spiegel@gnu.org>
parents: 21325
diff changeset
2092 (vc-resynch-window file t t)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2093
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2094 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2095 (defun vc-cancel-version (norevert)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2096 "Get rid of most recently checked in version of this file.
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2097 A prefix argument means do not revert the buffer afterwards."
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2098 (interactive "P")
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2099 (vc-ensure-vc-buffer)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2100 (cond
15336
8d23d63f1eee (vc-cancel-version): Fix paren error.
Richard M. Stallman <rms@gnu.org>
parents: 15227
diff changeset
2101 ((eq (vc-backend (buffer-file-name)) 'CVS)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2102 (error "Unchecking files under CVS is dangerous and not supported in VC"))
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2103 ((vc-locking-user (buffer-file-name))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2104 (error "This version is locked; use vc-revert-buffer to discard changes"))
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2105 ((not (vc-latest-on-branch-p (buffer-file-name)))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2106 (error "This is not the latest version--VC cannot cancel it")))
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2107 (let* ((target (vc-workfile-version (buffer-file-name)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2108 (recent (if (vc-trunk-p target) "" (vc-branch-part target)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2109 (config (current-window-configuration)) done)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2110 (if (null (yes-or-no-p (format "Remove version %s from master? " target)))
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
2111 nil
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2112 (setq norevert (or norevert (not
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2113 (yes-or-no-p "Revert buffer to most recent remaining version? "))))
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
2114 (vc-backend-uncheck (buffer-file-name) target)
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2115 ;; Check out the most recent remaining version. If it fails, because
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2116 ;; the whole branch got deleted, do a double-take and check out the
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2117 ;; version where the branch started.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2118 (while (not done)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2119 (condition-case err
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2120 (progn
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2121 (if norevert
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2122 ;; Check out locked, but only to disc, and keep
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2123 ;; modifications in the buffer.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2124 (vc-backend-checkout (buffer-file-name) t recent)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2125 ;; Check out unlocked, and revert buffer.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2126 (vc-checkout (buffer-file-name) nil recent))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2127 (setq done t))
14141
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
2128 ;; If the checkout fails, vc-do-command signals an error.
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
2129 ;; We catch this error, check the reason, correct the
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
2130 ;; version number, and try a second time.
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2131 (error (set-buffer "*vc*")
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2132 (goto-char (point-min))
14141
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
2133 (if (search-forward "no side branches present for" nil t)
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2134 (progn (setq recent (vc-branch-part recent))
14141
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
2135 ;; vc-do-command popped up a window with
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
2136 ;; the error message. Get rid of it, by
dc502b9c237c (vc-cancel-version): Use search-forward to scan error message. Added
André Spiegel <spiegel@gnu.org>
parents: 14053
diff changeset
2137 ;; restoring the old window configuration.
13934
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2138 (set-window-configuration config))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2139 ;; No, it was some other error: re-signal it.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2140 (signal (car err) (cdr err))))))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2141 ;; If norevert, clear version headers and mark the buffer modified.
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2142 (if norevert
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2143 (progn
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2144 (set-visited-file-name (buffer-file-name))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2145 (if (not vc-make-backup-files)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2146 ;; inhibit backup for this buffer
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2147 (progn (make-local-variable 'backup-inhibited)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2148 (setq backup-inhibited t)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2149 (if (eq (vc-backend (buffer-file-name)) 'RCS)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2150 (progn (setq buffer-read-only nil)
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2151 (vc-clear-headers)))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2152 (vc-mode-line (buffer-file-name))))
ee57ee38cdb5 (vc-cancel-version): Handle versions that start a new branch.
André Spiegel <spiegel@gnu.org>
parents: 13890
diff changeset
2153 (message "Version %s has been removed from the master" target)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2154 )))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2155
9044
5ddb0e0adb08 (vc-backend-checkout): Add if-statements to the shell cmds
Richard M. Stallman <rms@gnu.org>
parents: 8726
diff changeset
2156 ;;;###autoload
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2157 (defun vc-rename-file (old new)
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
2158 "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
2159 (interactive "fVC rename file: \nFRename to: ")
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2160 ;; There are several ways of renaming files under CVS 1.3, but they all
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2161 ;; have serious disadvantages. See the FAQ (available from think.com in
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2162 ;; pub/cvs/). I'd rather send the user an error, than do something he might
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2163 ;; consider to be wrong. When the famous, long-awaited rename database is
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2164 ;; implemented things might change for the better. This is unlikely to occur
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2165 ;; until CVS 2.0 is released. --ceder 1994-01-23 21:27:51
11605
36b1eb58d0c9 (vc-next-action-on-file): Add missing let-binding.
Karl Heuer <kwzh@gnu.org>
parents: 11597
diff changeset
2166 (if (eq (vc-backend old) 'CVS)
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2167 (error "Renaming files under CVS is dangerous and not supported in VC"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2168 (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
2169 (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
2170 (error "Please save files before moving them"))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2171 (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
2172 (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
2173 (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
2174 (error "New file already exists"))
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2175 (let ((oldmaster (vc-name old)) newmaster)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2176 (if oldmaster
4991
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2177 (progn
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2178 (if (vc-locking-user old)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2179 (error "Please check in files before moving them"))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2180 (if (or (file-symlink-p oldmaster)
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2181 ;; This had FILE, I changed it to OLD. -- rms.
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2182 (file-symlink-p (vc-backend-subdirectory-name old)))
9da6c6c24ddd (vc-rename-file): Don't overwrite an existing file.
Richard M. Stallman <rms@gnu.org>
parents: 4854
diff changeset
2183 (error "This is not a safe thing to do in the presence of symbolic links"))
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2184 (setq newmaster
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2185 (let ((backend (vc-backend old))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2186 (newdir (or (file-name-directory new) ""))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2187 (newbase (file-name-nondirectory new)))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2188 (catch 'found
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2189 (mapcar
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2190 (function
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2191 (lambda (s)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2192 (if (eq backend (cdr s))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2193 (let* ((newmaster (format (car s) newdir newbase))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2194 (newmasterdir (file-name-directory newmaster)))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2195 (if (or (not newmasterdir)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2196 (file-directory-p newmasterdir))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2197 (throw 'found newmaster))))))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2198 vc-master-templates)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2199 (error "New file lacks a version control directory"))))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2200 ;; Handle the SCCS PROJECTDIR feature. It is odd that this
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2201 ;; is a special case, but a more elegant solution would require
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2202 ;; significant changes in other parts of VC.
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2203 (if (eq (vc-backend old) 'SCCS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2204 (let ((project-dir (vc-sccs-project-dir)))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2205 (if project-dir
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2206 (setq newmaster
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2207 (concat project-dir
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2208 (file-name-nondirectory newmaster))))))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2209 (rename-file oldmaster newmaster)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2210 (if (or (not oldmaster) (file-exists-p old))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2211 (rename-file old new)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2212 ; ?? Renaming a file might change its contents due to keyword expansion.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2213 ; We should really check out a new copy if the old copy was precisely equal
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2214 ; to some checked in version. However, testing for this is tricky....
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2215 (if oldbuf
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2216 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2217 (set-buffer oldbuf)
15227
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
2218 (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
2219 (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
2220 (vc-backend new)
207c2c343394 (vc-rename-file): After renaming, update VC info and modeline.
Richard M. Stallman <rms@gnu.org>
parents: 15036
diff changeset
2221 (vc-mode-line new)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2222 (set-buffer-modified-p nil))))
1243
de79e26e67cf (vc-rename-file): Use OLD, not FILE which is unbound.
Richard M. Stallman <rms@gnu.org>
parents: 1232
diff changeset
2223 ;; This had FILE, I changed it to OLD. -- rms.
de79e26e67cf (vc-rename-file): Use OLD, not FILE which is unbound.
Richard M. Stallman <rms@gnu.org>
parents: 1232
diff changeset
2224 (vc-backend-dispatch old
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2225 (vc-record-rename old new) ;SCCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2226 nil ;RCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2227 nil ;CVS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2228 )
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2229 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2230
927
587a08c3a70b *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 904
diff changeset
2231 ;;;###autoload
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2232 (defun vc-update-change-log (&rest args)
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2233 "Find change log file and add entries from recent RCS/CVS logs.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2234 Normally, find log entries for all registered files in the default
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2235 directory using `rcs2log', which finds CVS logs preferentially.
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2236 The mark is left at the end of the text prepended to the change log.
15989
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2237
1226
573df03a54d8 (vc-update-change-log): Use shell-command, not shell-command-on-region.
Roland McGrath <roland@gnu.org>
parents: 952
diff changeset
2238 With prefix arg of C-u, 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
2239
2813c68432c9 (vc-update-change-log): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 15977
diff changeset
2240 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
2241 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
2242 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
2243
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2244 From a program, any arguments are assumed to be filenames and are
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2245 passed to the `rcs2log' script after massaging to be relative to the
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2246 default directory."
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2247 (interactive
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2248 (cond ((consp current-prefix-arg) ;C-u
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2249 (list buffer-file-name))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2250 (current-prefix-arg ;Numeric argument.
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2251 (let ((files nil)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2252 (buffers (buffer-list))
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2253 file)
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2254 (while buffers
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2255 (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
2256 (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
2257 (setq files (cons file files)))
1227
d07030650283 (vc-checkin-hook): New user hook variable.
Roland McGrath <roland@gnu.org>
parents: 1226
diff changeset
2258 (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
2259 files))
1b954eb0f249 (vc-update-change-log): Ensure that file names inserted into a ChangeLog
Paul Eggert <eggert@twinsun.com>
parents: 3905
diff changeset
2260 (t
15977
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2261 ;; `rcs2log' will find the relevant RCS or CVS files
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2262 ;; relative to the curent directory if none supplied.
abc3b3e7ea88 (vc-update-change-log): Remove code which found RCS files
Richard M. Stallman <rms@gnu.org>
parents: 15787
diff changeset
2263 nil)))
14053
c8c5b83d9691 (vc-update-change-log): Use add-log-full-name and
Karl Heuer <kwzh@gnu.org>
parents: 14040
diff changeset
2264 (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
2265 (changelog (find-change-log))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2266 ;; Presumably not portable to non-Unixy systems, along with rcs2log:
26039
fb6b9c37cdc4 Use make-temp-file.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 25849
diff changeset
2267 (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
2268 (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
2269 (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
2270 temporary-file-directory))))
14855
52f730593064 (vc-update-change-log): Use add-log-full-name and
Richard M. Stallman <rms@gnu.org>
parents: 14734
diff changeset
2271 (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
2272 (user-full-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2273 (user-login-name)
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2274 (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
2275 (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
2276 user-mail-address)))
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2277 (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
2278 (barf-if-buffer-read-only)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2279 (vc-buffer-sync)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2280 (undo-boundary)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2281 (goto-char (point-min))
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2282 (push-mark)
5669887e3692 (vc-update-change-log): Restore previous default-directory
Richard M. Stallman <rms@gnu.org>
parents: 3895
diff changeset
2283 (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
2284 (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
2285 (unwind-protect
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2286 (progn
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2287 (cd odefault)
26685
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2288 (if (eq 0 (apply 'call-process
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2289 (expand-file-name "rcs2log" exec-directory)
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2290 nil
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2291 (list t tempfile) nil
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2292 "-c" changelog
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2293 "-u" (concat (vc-user-login-name)
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2294 "\t" full-name
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2295 "\t" mailing-address)
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2296 (mapcar
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2297 (function
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2298 (lambda (f)
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2299 (file-relative-name
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2300 (if (file-name-absolute-p f)
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2301 f
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2302 (concat odefault f)))))
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2303 args)))
40036067f5cf (vc-update-change-log): Look for rcs2log under
Gerd Moellmann <gerd@gnu.org>
parents: 26039
diff changeset
2304 "done"
17410
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2305 (pop-to-buffer
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2306 (set-buffer (get-buffer-create "*vc*")))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2307 (erase-buffer)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2308 (insert-file tempfile)
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2309 "failed"))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2310 (cd (file-name-directory changelog))
777a31320b0f (vc-update-change-log): Run `rcs2log' in the correct
Richard M. Stallman <rms@gnu.org>
parents: 17274
diff changeset
2311 (delete-file tempfile)))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2312
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2313 ;; vc-annotate functionality (CVS only).
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2314 (defvar vc-annotate-mode-map nil
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2315 "Local keymap used for VC-Annotate mode.")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2316
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2317 (defvar vc-annotate-mode-menu nil
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2318 "Local keymap used for VC-Annotate mode's menu bar menu.")
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2319
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2320 ;; Syntax Table
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2321 (defvar vc-annotate-mode-syntax-table nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2322 "Syntax table used in VC-Annotate mode buffers.")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2323
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2324 ;; 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
2325 ;; temp-buffer-show-function (not possible to pass more than one
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2326 ;; parameter).
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2327 (defvar vc-annotate-ratio nil)
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2328
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2329 (defun vc-annotate-mode-variables ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2330 (if (not vc-annotate-mode-syntax-table)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2331 (progn (setq vc-annotate-mode-syntax-table (make-syntax-table))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2332 (set-syntax-table vc-annotate-mode-syntax-table)))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2333 (if (not vc-annotate-mode-map)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2334 (setq vc-annotate-mode-map (make-sparse-keymap)))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2335 (setq vc-annotate-mode-menu (make-sparse-keymap "Annotate"))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2336 (define-key vc-annotate-mode-map [menu-bar]
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2337 (make-sparse-keymap "VC-Annotate"))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2338 (define-key vc-annotate-mode-map [menu-bar vc-annotate-mode]
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2339 (cons "VC-Annotate" vc-annotate-mode-menu)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2340
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2341 (defun vc-annotate-mode ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2342 "Major mode for buffers displaying output from the CVS `annotate' command.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2343
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2344 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
2345 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
2346 menu items."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2347 (interactive)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2348 (kill-all-local-variables) ; Recommended by RMS.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2349 (vc-annotate-mode-variables) ; This defines various variables.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2350 (use-local-map vc-annotate-mode-map) ; This provides the local keymap.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2351 (set-syntax-table vc-annotate-mode-syntax-table)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2352 (setq major-mode 'vc-annotate-mode) ; This is how `describe-mode'
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2353 ; finds out what to describe.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2354 (setq mode-name "Annotate") ; This goes into the mode line.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2355 (run-hooks 'vc-annotate-mode-hook)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2356 (vc-annotate-add-menu))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2357
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2358 (defun vc-annotate-display-default (&optional event)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2359 "Use the default color spectrum for VC Annotate mode."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2360 (interactive)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2361 (message "Redisplaying annotation...")
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2362 (vc-annotate-display (get-buffer (buffer-name)))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2363 (message "Redisplaying annotation...done"))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2364
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2365 (defun vc-annotate-add-menu ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2366 "Adds the menu 'Annotate' to the menu bar in VC-Annotate mode."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2367 (define-key vc-annotate-mode-menu [default]
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2368 '("Default" . vc-annotate-display-default))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2369 (let ((menu-elements vc-annotate-menu-elements))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2370 (while menu-elements
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2371 (let* ((element (car menu-elements))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2372 (days (round (* element
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2373 (vc-annotate-car-last-cons vc-annotate-color-map)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2374 0.7585))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2375 (setq menu-elements (cdr menu-elements))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2376 (define-key vc-annotate-mode-menu
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2377 (vector days)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2378 (cons (format "Span %d days"
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2379 days)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2380 `(lambda ()
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2381 ,(format "Use colors spanning %d days" days)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2382 (interactive)
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2383 (message "Redisplaying annotation...")
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2384 (vc-annotate-display
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2385 (get-buffer (buffer-name))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2386 (vc-annotate-time-span vc-annotate-color-map ,element))
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2387 (message "Redisplaying annotation...done"))))))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2388
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2389 ;;;###autoload
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2390 (defun vc-annotate (ratio)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2391 "Display the result of the CVS `annotate' command using colors.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2392 New lines are displayed in red, old in blue.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2393 A prefix argument specifies a factor for stretching the time scale.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2394
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2395 `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
2396 mode-specific menu. `vc-annotate-color-map' and
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2397 `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
2398 colors. `vc-annotate-background' specifies the background color."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2399 (interactive "p")
21366
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2400 (vc-ensure-vc-buffer)
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2401 (if (not (eq (vc-backend (buffer-file-name)) 'CVS))
e7b64d0b3b3d (vc-ensure-vc-buffer): New function.
André Spiegel <spiegel@gnu.org>
parents: 21357
diff changeset
2402 (error "Sorry, vc-annotate is only implemented for CVS"))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2403 (message "Annotating...")
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2404 (let ((temp-buffer-name (concat "*cvs annotate " (buffer-name) "*"))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2405 (temp-buffer-show-function 'vc-annotate-display)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2406 (vc-annotate-ratio ratio))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2407 (with-output-to-temp-buffer temp-buffer-name
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2408 (call-process "cvs" nil (get-buffer temp-buffer-name) nil
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2409 "annotate" (file-name-nondirectory (buffer-file-name)))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2410 (message "Annotating... done"))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2411
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2412 (defun vc-annotate-car-last-cons (a-list)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2413 "Return car of last cons in association list A-LIST."
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2414 (if (not (eq nil (cdr a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2415 (vc-annotate-car-last-cons (cdr a-list))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2416 (car (car a-list))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2417
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2418 (defun vc-annotate-time-span (a-list span &optional quantize)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2419 "Return an association list with factor SPAN applied to the time-span
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2420 of association list A-LIST. Optionaly quantize to the factor of
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2421 QUANTIZE."
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2422 ;; Apply span to each car of every cons
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2423 (if (not (eq nil a-list))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2424 (append (list (cons (* (car (car a-list)) span)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2425 (cdr (car a-list))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2426 (vc-annotate-time-span (nthcdr (cond (quantize) ; optional
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2427 (1)) ; Default to cdr
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2428 a-list) span quantize))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2429
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2430 (defun vc-annotate-compcar (threshold a-list)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2431 "Test successive cons cells of association list A-LIST against
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2432 THRESHOLD. Return the first cons cell which car is not less than
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2433 THRESHOLD, nil otherwise"
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2434 (let ((i 1)
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2435 (tmp-cons (car a-list)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2436 (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
2437 (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
2438 (setq i (+ i 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2439 tmp-cons)) ; Return the appropriate value
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2440
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2441
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2442 (defun vc-annotate-display (buffer &optional color-map)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2443 "Do the VC-Annotate display in BUFFER using COLOR-MAP."
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2444
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2445 ;; Handle the case of the global variable vc-annotate-ratio being
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2446 ;; set. This variable is used to pass information from function
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2447 ;; vc-annotate since it is not possible to use another parameter
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2448 ;; (see temp-buffer-show-function).
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2449 (if (and (not color-map) vc-annotate-ratio)
18246
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2450 ;; This will only be true if called from vc-annotate with ratio
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2451 ;; being non-nil.
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2452 (setq color-map (vc-annotate-time-span vc-annotate-color-map
3b4321d0ee7e (vc-annotate-mode-variables): Init vc-annotate-mode-menu
Richard M. Stallman <rms@gnu.org>
parents: 18174
diff changeset
2453 vc-annotate-ratio)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2454
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2455 ;; We need a list of months and their corresponding numbers.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2456 (let* ((local-month-numbers
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2457 '(("Jan" . 1) ("Feb" . 2) ("Mar" . 3) ("Apr" . 4)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2458 ("May" . 5) ("Jun" . 6) ("Jul" . 7) ("Aug" . 8)
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2459 ("Sep" . 9) ("Oct" . 10) ("Nov" . 11) ("Dec" . 12))))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2460 (set-buffer buffer)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2461 (display-buffer buffer)
24139
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2462 (or (eq major-mode 'vc-annotate-mode) ; Turn on vc-annotate-mode if not done
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2463 (vc-annotate-mode))
24139
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2464 ;; Delete old overlays
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2465 (mapcar
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2466 (lambda (overlay)
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2467 (if (overlay-get overlay 'vc-annotation)
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2468 (delete-overlay overlay)))
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2469 (overlays-in (point-min) (point-max)))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2470 (goto-char (point-min)) ; Position at the top of the buffer.
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2471 (while (re-search-forward
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2472 "^\\S-+\\s-+\\S-+\\s-+\\([0-9]+\\)-\\(\\sw+\\)-\\([0-9]+\\)): "
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2473 ;; "^[0-9]+\\(\.[0-9]+\\)*\\s-+(\\sw+\\s-+\\([0-9]+\\)-\\(\\sw+\\)-\\([0-9]+\\)): "
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2474 nil t)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2475
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2476 (let* (;; Unfortunately, order is important. match-string will
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2477 ;; be corrupted by extent functions in XEmacs. Access
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2478 ;; string-matches first.
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2479 (day (string-to-number (match-string 1)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2480 (month (cdr (assoc (match-string 2) local-month-numbers)))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2481 (year-tmp (string-to-number (match-string 3)))
25576
913fac3ab440 (vc-annotate-display): Use < 69 not < 70 to distinguish 20YY from 19YY.
Richard M. Stallman <rms@gnu.org>
parents: 25553
diff changeset
2482 ;; Years 0..68 are 2000..2068.
913fac3ab440 (vc-annotate-display): Use < 69 not < 70 to distinguish 20YY from 19YY.
Richard M. Stallman <rms@gnu.org>
parents: 25553
diff changeset
2483 ;; Years 69..99 are 1969..1999.
913fac3ab440 (vc-annotate-display): Use < 69 not < 70 to distinguish 20YY from 19YY.
Richard M. Stallman <rms@gnu.org>
parents: 25553
diff changeset
2484 (year (+ (cond ((> 69 year-tmp) 2000)
25553
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
2485 ((> 100 year-tmp) 1900)
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
2486 (t 0))
3af0f2f6145c (vc-annotate-display): Treat 2-digit years under 70 as 20YY.
Richard M. Stallman <rms@gnu.org>
parents: 25488
diff changeset
2487 year-tmp))
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2488 (high (- (car (current-time))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2489 (car (encode-time 0 0 0 day month year))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2490 (color (cond ((vc-annotate-compcar high (cond (color-map)
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2491 (vc-annotate-color-map))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2492 ((cons nil vc-annotate-very-old-color))))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2493 ;; substring from index 1 to remove any leading `#' in the name
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2494 (face-name (concat "vc-annotate-face-" (substring (cdr color) 1)))
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2495 ;; Make the face if not done.
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2496 (face (cond ((intern-soft face-name))
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2497 ((let ((tmp-face (make-face (intern face-name))))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2498 (set-face-foreground tmp-face (cdr color))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2499 (if vc-annotate-background
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2500 (set-face-background tmp-face vc-annotate-background))
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2501 tmp-face)))) ; Return the face
24139
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2502 (point (point))
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2503 overlay)
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2504
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2505 (forward-line 1)
24139
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2506 (setq overlay (make-overlay point (point)))
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2507 (overlay-put overlay 'face face)
2b3e32c0fc18 (vc-annotate-display): Delete old overlays. Fix check for major-mode.
André Spiegel <spiegel@gnu.org>
parents: 23980
diff changeset
2508 (overlay-put overlay 'vc-annotation t)))))
20752
826e4167d1dc (vc-annotate-compcar): Iterate instead of recursing.
Richard M. Stallman <rms@gnu.org>
parents: 20661
diff changeset
2509
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
2510
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2511 ;; Collect back-end-dependent stuff here
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2512
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2513 (defun vc-backend-admin (file &optional rev comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2514 ;; Register a file into the version-control system
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2515 ;; Automatically retrieves a read-only version of the file with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2516 ;; keywords expanded if vc-keep-workfiles is non-nil, otherwise
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2517 ;; it deletes the workfile.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2518 (vc-file-clearprops file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2519 (or vc-default-back-end
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2520 (setq vc-default-back-end (if (vc-find-binary "rcs") 'RCS 'SCCS)))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2521 (message "Registering %s..." file)
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2522 (let* ((switches
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2523 (if (stringp vc-register-switches)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2524 (list vc-register-switches)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2525 vc-register-switches))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2526 (project-dir)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2527 (backend
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2528 (cond
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2529 ((file-exists-p (vc-backend-subdirectory-name)) vc-default-back-end)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2530 ((file-exists-p "RCS") 'RCS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2531 ((file-exists-p "CVS") 'CVS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2532 ((file-exists-p "SCCS") 'SCCS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2533 ((setq project-dir (vc-sccs-project-dir)) 'SCCS)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2534 (t vc-default-back-end))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2535 (cond ((eq backend 'SCCS)
21233
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2536 (let ((vc-name
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2537 (if project-dir (concat project-dir
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2538 "s." (file-name-nondirectory file))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2539 (format
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2540 (car (rassq 'SCCS vc-master-templates))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2541 (or (file-name-directory file) "")
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2542 (file-name-nondirectory file)))))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2543 (apply 'vc-do-command nil 0 "admin" nil nil ;; SCCS
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2544 (and rev (concat "-r" rev))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2545 "-fb"
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2546 (concat "-i" file)
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2547 (and comment (concat "-y" comment))
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2548 vc-name
8972762c8ca6 (vc-next-action-on-file): Properly handle the case when user tries to
André Spiegel <spiegel@gnu.org>
parents: 21212
diff changeset
2549 switches))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2550 (delete-file file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2551 (if vc-keep-workfiles
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2552 (vc-do-command nil 0 "get" file 'MASTER)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2553 ((eq backend 'RCS)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2554 (apply 'vc-do-command nil 0 "ci" file 'WORKFILE ;; RCS
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2555 ;; if available, use the secure registering option
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2556 (and (vc-backend-release-p 'RCS "5.6.4") "-i")
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2557 (concat (if vc-keep-workfiles "-u" "-r") rev)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2558 (and comment (concat "-t-" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2559 switches))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2560 ((eq backend 'CVS)
16033
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2561 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE ;; CVS
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2562 "add"
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2563 (and comment (string-match "[^\t\n ]" comment)
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2564 (concat "-m" comment))
244188795475 (vc-register-switches): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15989
diff changeset
2565 switches)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2566 )))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2567 (message "Registering %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2568 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2569
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
2570 (defun vc-backend-checkout (file &optional writable rev workfile)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2571 ;; Retrieve a copy of a saved version into a workfile
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2572 (let ((filename (or workfile file))
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2573 (file-buffer (get-file-buffer file))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2574 switches)
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
2575 (message "Checking out %s..." filename)
10046
4c632e091d88 (vc-backend-checkout): Finish last change.
Roland McGrath <roland@gnu.org>
parents: 10045
diff changeset
2576 (save-excursion
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2577 ;; Change buffers to get local value of vc-checkout-switches.
12714
192f537bca2a (vc-resynch-buffer): New function.
Richard M. Stallman <rms@gnu.org>
parents: 12589
diff changeset
2578 (if file-buffer (set-buffer file-buffer))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2579 (setq switches (if (stringp vc-checkout-switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2580 (list vc-checkout-switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2581 vc-checkout-switches))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2582 ;; Save this buffer's default-directory
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2583 ;; and use save-excursion to make sure it is restored
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2584 ;; in the same buffer it was saved in.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2585 (let ((default-directory default-directory))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2586 (save-excursion
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2587 ;; Adjust the default-directory so that the check-out creates
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2588 ;; the file in the right place.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2589 (setq default-directory (file-name-directory filename))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2590 (vc-backend-dispatch file
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2591 (progn ;; SCCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2592 (and rev (string= rev "") (setq rev nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2593 (if workfile
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2594 ;; Some SCCS implementations allow checking out directly to a
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2595 ;; file using the -G option, but then some don't so use the
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2596 ;; least common denominator approach and use the -p option
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2597 ;; ala RCS.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2598 (let ((vc-modes (logior (file-modes (vc-name file))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2599 (if writable 128 0)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2600 (failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2601 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2602 (progn
25849
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2603 (let ((coding-system-for-read 'no-conversion)
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2604 (coding-system-for-write 'no-conversion))
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2605 (with-temp-file filename
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2606 (apply 'vc-do-command
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2607 (current-buffer) 0 "get" file 'MASTER
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2608 "-s" ;; suppress diagnostic output
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2609 (if writable "-e")
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2610 "-p"
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2611 (and rev
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2612 (concat "-r"
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2613 (vc-lookup-triple file rev)))
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2614 switches)))
25790
7a57f8890220 (vc-backend-checkout): Use with-temp-file to check out into arbitrary
André Spiegel <spiegel@gnu.org>
parents: 25576
diff changeset
2615 (set-file-modes filename
7a57f8890220 (vc-backend-checkout): Use with-temp-file to check out into arbitrary
André Spiegel <spiegel@gnu.org>
parents: 25576
diff changeset
2616 (logior (file-modes (vc-name file))
7a57f8890220 (vc-backend-checkout): Use with-temp-file to check out into arbitrary
André Spiegel <spiegel@gnu.org>
parents: 25576
diff changeset
2617 (if writable 128 0)))
7a57f8890220 (vc-backend-checkout): Use with-temp-file to check out into arbitrary
André Spiegel <spiegel@gnu.org>
parents: 25576
diff changeset
2618 (setq failed nil))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2619 (and failed (file-exists-p filename)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2620 (delete-file filename))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2621 (apply 'vc-do-command nil 0 "get" file 'MASTER ;; SCCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2622 (if writable "-e")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2623 (and rev (concat "-r" (vc-lookup-triple file rev)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2624 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2625 (vc-file-setprop file 'vc-workfile-version nil)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2626 (if workfile ;; RCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2627 ;; RCS doesn't let us check out into arbitrary file names directly.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2628 ;; Use `co -p' and make stdout point to the correct file.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2629 (let ((vc-modes (logior (file-modes (vc-name file))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2630 (if writable 128 0)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2631 (failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2632 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2633 (progn
25849
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2634 (let ((coding-system-for-read 'no-conversion)
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2635 (coding-system-for-write 'no-conversion))
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2636 (with-temp-file filename
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2637 (apply 'vc-do-command
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2638 (current-buffer) 0 "co" file 'MASTER
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2639 "-q" ;; suppress diagnostic output
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2640 (if writable "-l")
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2641 (concat "-p" rev)
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2642 switches)))
25790
7a57f8890220 (vc-backend-checkout): Use with-temp-file to check out into arbitrary
André Spiegel <spiegel@gnu.org>
parents: 25576
diff changeset
2643 (set-file-modes filename
7a57f8890220 (vc-backend-checkout): Use with-temp-file to check out into arbitrary
André Spiegel <spiegel@gnu.org>
parents: 25576
diff changeset
2644 (logior (file-modes (vc-name file))
7a57f8890220 (vc-backend-checkout): Use with-temp-file to check out into arbitrary
André Spiegel <spiegel@gnu.org>
parents: 25576
diff changeset
2645 (if writable 128 0)))
7a57f8890220 (vc-backend-checkout): Use with-temp-file to check out into arbitrary
André Spiegel <spiegel@gnu.org>
parents: 25576
diff changeset
2646 (setq failed nil))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2647 (and failed (file-exists-p filename) (delete-file filename))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2648 (let (new-version)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2649 ;; if we should go to the head of the trunk,
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2650 ;; clear the default branch first
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2651 (and rev (string= rev "")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2652 (vc-do-command nil 0 "rcs" file 'MASTER "-b"))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2653 ;; now do the checkout
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2654 (apply 'vc-do-command
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2655 nil 0 "co" file 'MASTER
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2656 ;; If locking is not strict, force to overwrite
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2657 ;; the writable workfile.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2658 (if (eq (vc-checkout-model file) 'implicit) "-f")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2659 (if writable "-l")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2660 (if rev (concat "-r" rev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2661 ;; if no explicit revision was specified,
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2662 ;; check out that of the working file
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2663 (let ((workrev (vc-workfile-version file)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2664 (if workrev (concat "-r" workrev)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2665 nil)))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2666 switches)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2667 ;; determine the new workfile version
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2668 (save-excursion
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2669 (set-buffer "*vc*")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2670 (goto-char (point-min))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2671 (setq new-version
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2672 (if (re-search-forward "^revision \\([0-9.]+\\).*\n" nil t)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2673 (buffer-substring (match-beginning 1) (match-end 1)))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2674 (vc-file-setprop file 'vc-workfile-version new-version)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2675 ;; if necessary, adjust the default branch
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2676 (and rev (not (string= rev ""))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2677 (vc-do-command nil 0 "rcs" file 'MASTER
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2678 (concat "-b" (if (vc-latest-on-branch-p file)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2679 (if (vc-trunk-p new-version) nil
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2680 (vc-branch-part new-version))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2681 new-version))))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2682 (if workfile ;; CVS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2683 ;; CVS is much like RCS
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2684 (let ((failed t))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2685 (unwind-protect
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2686 (progn
25849
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2687 (let ((coding-system-for-read 'no-conversion)
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2688 (coding-system-for-write 'no-conversion))
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2689 (with-temp-file filename
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2690 (apply 'vc-do-command
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2691 (current-buffer) 0 "cvs" file 'WORKFILE
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2692 "-Q" ;; suppress diagnostic output
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2693 "update"
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2694 (concat "-r" rev)
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2695 "-p"
d24b874488ef (vc-backend-checkout): Use coding system 'no-conversion when doing
André Spiegel <spiegel@gnu.org>
parents: 25790
diff changeset
2696 switches)))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2697 (setq failed nil))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2698 (and failed (file-exists-p filename) (delete-file filename))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2699 ;; default for verbose checkout: clear the sticky tag
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2700 ;; so that the actual update will get the head of the trunk
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2701 (and rev (string= rev "")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2702 (vc-do-command nil 0 "cvs" file 'WORKFILE "update" "-A"))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2703 ;; If a revision was specified, check that out.
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2704 (if rev
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2705 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2706 (and writable (eq (vc-checkout-model file) 'manual) "-w")
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2707 "update"
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2708 (and rev (not (string= rev ""))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2709 (concat "-r" rev))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2710 switches)
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2711 ;; If no revision was specified, call "cvs edit" to make
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2712 ;; the file writeable.
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2713 (and writable (eq (vc-checkout-model file) 'manual)
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2714 (vc-do-command nil 0 "cvs" file 'WORKFILE "edit")))
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2715 (if rev (vc-file-setprop file 'vc-workfile-version nil))))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2716 (cond
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2717 ((not workfile)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2718 (vc-file-clear-masterprops file)
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2719 (if writable
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2720 (vc-file-setprop file 'vc-locking-user (vc-user-login-name)))
14297
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2721 (vc-file-setprop file
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2722 'vc-checkout-time (nth 5 (file-attributes file)))))
ac17ae608afe * vc.el (vc-backend-checkout): Use let to restore default-directory.
Karl Heuer <kwzh@gnu.org>
parents: 14169
diff changeset
2723 (message "Checking out %s...done" filename))))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2724
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2725 (defun vc-backend-logentry-check (file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2726 (vc-backend-dispatch file
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
2727 (if (>= (buffer-size) 512) ;; SCCS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2728 (progn
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2729 (goto-char 512)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2730 (error
3804
d7d674c99039 (vc-rename-file): Remove periods from error messages.
Richard M. Stallman <rms@gnu.org>
parents: 3671
diff changeset
2731 "Log must be less than 512 characters; point is now at pos 512")))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2732 nil ;; RCS
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2733 nil) ;; CVS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2734 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2735
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2736 (defun vc-backend-checkin (file rev comment)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2737 ;; Register changes to FILE as level REV with explanatory COMMENT.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2738 ;; Automatically retrieves a read-only version of the file with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2739 ;; keywords expanded if vc-keep-workfiles is non-nil, otherwise
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2740 ;; it deletes the workfile.
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
2741 ;; Adaptation for RCS branch support: if this is an explicit checkin,
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2742 ;; or if the checkin creates a new branch, set the master file branch
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2743 ;; accordingly.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2744 (message "Checking in %s..." file)
12210
a74a202e9660 (vc-backend-checkin): Provide an explicit string saying
Richard M. Stallman <rms@gnu.org>
parents: 12153
diff changeset
2745 ;; "This log message intentionally left almost blank".
12365
8fecaa78ac4b (vc-backend-admin, vc-backend-checkin): Assume that
Richard M. Stallman <rms@gnu.org>
parents: 12311
diff changeset
2746 ;; RCS 5.7 gripes about white-space-only comments too.
8fecaa78ac4b (vc-backend-admin, vc-backend-checkin): Assume that
Richard M. Stallman <rms@gnu.org>
parents: 12311
diff changeset
2747 (or (and comment (string-match "[^\t\n ]" comment))
8fecaa78ac4b (vc-backend-admin, vc-backend-checkin): Assume that
Richard M. Stallman <rms@gnu.org>
parents: 12311
diff changeset
2748 (setq comment "*** empty log message ***"))
1337
ab589b426055 (vc-backend-checkin): Change buffers to get local value of vc-checkin-switches.
Roland McGrath <roland@gnu.org>
parents: 1336
diff changeset
2749 (save-excursion
ab589b426055 (vc-backend-checkin): Change buffers to get local value of vc-checkin-switches.
Roland McGrath <roland@gnu.org>
parents: 1336
diff changeset
2750 ;; Change buffers to get local value of vc-checkin-switches.
ab589b426055 (vc-backend-checkin): Change buffers to get local value of vc-checkin-switches.
Roland McGrath <roland@gnu.org>
parents: 1336
diff changeset
2751 (set-buffer (or (get-file-buffer file) (current-buffer)))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2752 (let ((switches
13890
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2753 (if (stringp vc-checkin-switches)
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2754 (list vc-checkin-switches)
6e14467a9a9e (vc-backend-checkin): Use vc-checkin-switches.
Erik Naggum <erik@naggum.no>
parents: 13858
diff changeset
2755 vc-checkin-switches)))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2756 ;; Clear the master-properties. Do that here, not at the
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2757 ;; end, because if the check-in fails we want them to get
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2758 ;; re-computed before the next try.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2759 (vc-file-clear-masterprops file)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2760 (vc-backend-dispatch file
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2761 ;; SCCS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2762 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2763 (apply 'vc-do-command nil 0 "delta" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2764 (if rev (concat "-r" rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2765 (concat "-y" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2766 switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2767 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2768 (vc-file-setprop file 'vc-workfile-version nil)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2769 (if vc-keep-workfiles
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2770 (vc-do-command nil 0 "get" file 'MASTER))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2771 )
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2772 ;; RCS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2773 (let ((old-version (vc-workfile-version file)) new-version)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2774 (apply 'vc-do-command nil 0 "ci" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2775 ;; if available, use the secure check-in option
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2776 (and (vc-backend-release-p 'RCS "5.6.4") "-j")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2777 (concat (if vc-keep-workfiles "-u" "-r") rev)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2778 (concat "-m" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2779 switches)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2780 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2781 (vc-file-setprop file 'vc-workfile-version nil)
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2782
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2783 ;; determine the new workfile version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2784 (set-buffer "*vc*")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2785 (goto-char (point-min))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2786 (if (or (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2787 "new revision: \\([0-9.]+\\);" nil t)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2788 (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2789 "reverting to previous revision \\([0-9.]+\\)" nil t))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2790 (progn (setq new-version (buffer-substring (match-beginning 1)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2791 (match-end 1)))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2792 (vc-file-setprop file 'vc-workfile-version new-version)))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
2793
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2794 ;; if we got to a different branch, adjust the default
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2795 ;; branch accordingly
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2796 (cond
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2797 ((and old-version new-version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2798 (not (string= (vc-branch-part old-version)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2799 (vc-branch-part new-version))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2800 (vc-do-command nil 0 "rcs" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2801 (if (vc-trunk-p new-version) "-b"
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2802 (concat "-b" (vc-branch-part new-version))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2803 ;; If this is an old RCS release, we might have
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2804 ;; to remove a remaining lock.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2805 (if (not (vc-backend-release-p 'RCS "5.6.2"))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2806 ;; exit status of 1 is also accepted.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2807 ;; It means that the lock was removed before.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2808 (vc-do-command nil 1 "rcs" file 'MASTER
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2809 (concat "-u" old-version))))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2810 ;; CVS
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2811 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2812 ;; explicit check-in to the trunk requires a
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2813 ;; double check-in (first unexplicit) (CVS-1.3)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2814 (condition-case nil
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2815 (progn
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2816 (if (and rev (vc-trunk-p rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2817 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2818 "ci" "-m" "intermediate"
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2819 switches))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2820 (apply 'vc-do-command nil 0 "cvs" file 'WORKFILE
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2821 "ci" (if rev (concat "-r" rev))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2822 (concat "-m" comment)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2823 switches))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2824 (error (if (eq (vc-cvs-status file) 'needs-merge)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2825 ;; The CVS output will be on top of this message.
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2826 (error "Type C-x 0 C-x C-q to merge in changes")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2827 (error "Check-in failed"))))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2828 ;; determine and store the new workfile version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2829 (set-buffer "*vc*")
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2830 (goto-char (point-min))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2831 (if (re-search-forward
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2832 "^\\(new\\|initial\\) revision: \\([0-9.]+\\)" nil t)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2833 (vc-file-setprop file 'vc-workfile-version
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2834 (buffer-substring (match-beginning 2)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2835 (match-end 2)))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2836 (vc-file-setprop file 'vc-workfile-version nil))
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2837 ;; if this was an explicit check-in, remove the sticky tag
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2838 (if rev
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2839 (vc-do-command nil 0 "cvs" file 'WORKFILE "update" "-A"))
19055
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2840 ;; Forget the checkout model, because we might have assumed
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2841 ;; a wrong one when we found the file. After commit, we can
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2842 ;; tell it from the permissions of the file
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2843 ;; (see vc-checkout-model).
5439070e5d46 (vc-backend-checkin): For CVS, forget the checkout model after commit.
Richard M. Stallman <rms@gnu.org>
parents: 18857
diff changeset
2844 (vc-file-setprop file 'vc-checkout-model nil)
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2845 (vc-file-setprop file 'vc-locking-user 'none)
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2846 (vc-file-setprop file 'vc-checkout-time
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2847 (nth 5 (file-attributes file)))))))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
2848 (message "Checking in %s...done" file))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2849
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2850 (defun vc-backend-revert (file)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2851 ;; Revert file to the version it was based on.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2852 (message "Reverting %s..." file)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2853 (vc-file-clear-masterprops file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2854 (vc-backend-dispatch
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2855 file
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2856 ;; SCCS
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2857 (progn
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2858 (vc-do-command nil 0 "unget" file 'MASTER nil)
21324
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2859 (vc-do-command nil 0 "get" file 'MASTER nil)
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2860 ;; Checking out explicit versions is not supported under SCCS, yet.
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2861 ;; We always "revert" to the latest version; therefore
b0abfde79536 * vc.el (vc-resolve-conflicts): New function.
André Spiegel <spiegel@gnu.org>
parents: 21233
diff changeset
2862 ;; vc-workfile-version is cleared here so that it gets recomputed.
21559
275fad04745d (vc-backend-revert): Fix missing argument for
Andreas Schwab <schwab@suse.de>
parents: 21517
diff changeset
2863 (vc-file-setprop file 'vc-workfile-version nil))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2864 ;; RCS
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2865 (vc-do-command nil 0 "co" file 'MASTER
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2866 "-f" (concat "-u" (vc-workfile-version file)))
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2867 ;; CVS
24595
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2868 (progn
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2869 ;; Check out via standard output (caused by the final argument
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2870 ;; FILE below), so that no sticky tag is set.
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2871 (vc-backend-checkout file nil (vc-workfile-version file) file)
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2872 ;; If "cvs edit" was used to make the file writeable,
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2873 ;; call "cvs unedit" now to undo that.
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2874 (if (eq (vc-checkout-model file) 'manual)
5b4c1048b2da (vc-backend-revert): For CVS files that were made writeable with "cvs
André Spiegel <spiegel@gnu.org>
parents: 24477
diff changeset
2875 (vc-do-command nil 0 "cvs" file 'WORKFILE "unedit"))))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
2876 (vc-file-setprop file 'vc-locking-user 'none)
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2877 (vc-file-setprop file 'vc-checkout-time (nth 5 (file-attributes file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2878 (message "Reverting %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2879 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2880
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2881 (defun vc-backend-steal (file &optional rev)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2882 ;; Steal the lock on the current workfile. Needs RCS 5.6.2 or later for -M.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2883 (message "Stealing lock on %s..." file)
4281
8407cf00af85 (vc-backend-steal): Pass arg omitted in last change.
Richard M. Stallman <rms@gnu.org>
parents: 4228
diff changeset
2884 (vc-backend-dispatch file
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2885 (progn ;SCCS
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2886 (vc-do-command nil 0 "unget" file 'MASTER "-n" (if rev (concat "-r" rev)))
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2887 (vc-do-command nil 0 "get" file 'MASTER "-g" (if rev (concat "-r" rev)))
4228
f1441ca7277e > (vc-backend-revert): Use `co -f' instead of deleting the
Paul Eggert <eggert@twinsun.com>
parents: 4158
diff changeset
2888 )
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2889 (vc-do-command nil 0 "rcs" file 'MASTER ;RCS
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2890 "-M" (concat "-u" rev) (concat "-l" rev))
13852
5f5659a29e3a Fix error message style.
Richard M. Stallman <rms@gnu.org>
parents: 13536
diff changeset
2891 (error "You cannot steal a CVS lock; there are no CVS locks to steal") ;CVS
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2892 )
16743
612fe5713ede (vc-next-action-on-file, vc-update-change-log,
André Spiegel <spiegel@gnu.org>
parents: 16590
diff changeset
2893 (vc-file-setprop file 'vc-locking-user (vc-user-login-name))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2894 (message "Stealing lock on %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2895 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2896
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2897 (defun vc-backend-uncheck (file target)
12872
857663042672 (vc-revert-buffer1): Split part of the function into vc-buffer-context
André Spiegel <spiegel@gnu.org>
parents: 12819
diff changeset
2898 ;; Undo the latest checkin.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2899 (message "Removing last change from %s..." file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2900 (vc-backend-dispatch file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2901 (vc-do-command nil 0 "rmdel" file 'MASTER (concat "-r" target))
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2902 (vc-do-command nil 0 "rcs" file 'MASTER (concat "-o" target))
12279
de2a82180af0 Adapt to the changes in vc-hooks.el, namely, the new
Richard M. Stallman <rms@gnu.org>
parents: 12210
diff changeset
2903 nil ;; this is never reached under CVS
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2904 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2905 (message "Removing last change from %s...done" file)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2906 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2907
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2908 (defun vc-backend-print-log (file)
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2909 ;; Get change log associated with FILE.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2910 (vc-backend-dispatch
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2911 file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2912 (vc-do-command nil 0 "prs" file 'MASTER)
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2913 (vc-do-command nil 0 "rlog" file 'MASTER)
16529
5e1ecf96072f (vc-backend-print-log): Use "cvs log" to get log entries, not "cvs rlog".
Richard M. Stallman <rms@gnu.org>
parents: 16447
diff changeset
2914 (vc-do-command nil 0 "cvs" file 'WORKFILE "log")))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2915
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2916 (defun vc-backend-assign-name (file name)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2917 ;; Assign to a FILE's latest version a given NAME.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2918 (vc-backend-dispatch file
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2919 (vc-add-triple name file (vc-latest-version file)) ;; SCCS
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2920 (vc-do-command nil 0 "rcs" file 'MASTER (concat "-n" name ":")) ;; RCS
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2921 (vc-do-command nil 0 "cvs" file 'WORKFILE "tag" name) ;; CVS
2085
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
2922 )
a5e2213a5c4a Version 5 baseline.
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 2054
diff changeset
2923 )
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2924
5212
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
2925 (defun vc-backend-diff (file &optional oldvers newvers cmp)
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
2926 ;; Get a difference report between two versions of FILE.
f8ba69b02832 (vc-workfile-unchanged-p): Add optional argument
Paul Eggert <eggert@twinsun.com>
parents: 5209
diff changeset
2927 ;; Get only a brief comparison report if CMP, a difference report otherwise.
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2928 (let ((backend (vc-backend file)) options status
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2929 (diff-switches-list (if (listp diff-switches)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2930 diff-switches
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2931 (list diff-switches))))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2932 (cond
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2933 ((eq backend 'SCCS)
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
2934 (setq oldvers (vc-lookup-triple file oldvers))
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2935 (setq newvers (vc-lookup-triple file newvers))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2936 (setq options (append (list (and cmp "--brief") "-q"
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2937 (and oldvers (concat "-r" oldvers))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2938 (and newvers (concat "-r" newvers)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2939 (and (not cmp) diff-switches-list)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2940 (apply 'vc-do-command "*vc-diff*" 1 "vcdiff" file 'MASTER options))
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
2941 ((eq backend 'RCS)
13379
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2942 (if (not oldvers) (setq oldvers (vc-workfile-version file)))
45188809385d (vc-backend-diff): Use new variable vc-rcsdiff-knows-brief.
André Spiegel <spiegel@gnu.org>
parents: 13111
diff changeset
2943 ;; If we know that --brief is not supported, don't try it.
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2944 (setq cmp (and cmp (not (eq vc-rcsdiff-knows-brief 'no))))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2945 (setq options (append (list (and cmp "--brief") "-q"
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2946 (concat "-r" oldvers)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2947 (and newvers (concat "-r" newvers)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2948 (and (not cmp) diff-switches-list)))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2949 (setq status (apply 'vc-do-command "*vc-diff*" 2
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2950 "rcsdiff" file 'WORKFILE options))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2951 ;; If --brief didn't work, do a double-take and remember it
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2952 ;; for the future.
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2953 (if (eq status 2)
28460
8a724c4f9928 (vc-backend-diff): Return the correct status if we had to
Gerd Moellmann <gerd@gnu.org>
parents: 27436
diff changeset
2954 (setq status
8a724c4f9928 (vc-backend-diff): Return the correct status if we had to
Gerd Moellmann <gerd@gnu.org>
parents: 27436
diff changeset
2955 (prog1
8a724c4f9928 (vc-backend-diff): Return the correct status if we had to
Gerd Moellmann <gerd@gnu.org>
parents: 27436
diff changeset
2956 (apply 'vc-do-command "*vc-diff*" 1 "rcsdiff" file 'WORKFILE
8a724c4f9928 (vc-backend-diff): Return the correct status if we had to
Gerd Moellmann <gerd@gnu.org>
parents: 27436
diff changeset
2957 (if cmp (cdr options) options))
8a724c4f9928 (vc-backend-diff): Return the correct status if we had to
Gerd Moellmann <gerd@gnu.org>
parents: 27436
diff changeset
2958 (if cmp (setq vc-rcsdiff-knows-brief 'no))))
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2959 ;; If --brief DID work, remember that, too.
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2960 (and cmp (not vc-rcsdiff-knows-brief)
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2961 (setq vc-rcsdiff-knows-brief 'yes))
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2962 status))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2963 ;; CVS is different.
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2964 ((eq backend 'CVS)
17135
1814adcc2648 (vc-backend-diff): Handle RCS and SCCS separately.
André Spiegel <spiegel@gnu.org>
parents: 17101
diff changeset
2965 (if (string= (vc-workfile-version file) "0")
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2966 ;; This file is added but not yet committed; there is no master file.
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2967 (if (or oldvers newvers)
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2968 (error "No revisions of %s exist" file)
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2969 (if cmp 1 ;; file is added but not committed,
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2970 ;; we regard this as "changed".
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2971 ;; diff it against /dev/null.
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2972 (apply 'vc-do-command
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2973 "*vc-diff*" 1 "diff" file 'WORKFILE
23980
9caafbfd8130 (vc-backend-diff): Use `diff-switches-list' throughout.
Richard M. Stallman <rms@gnu.org>
parents: 23832
diff changeset
2974 (append diff-switches-list '("/dev/null")))))
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
2975 ;; cmp is not yet implemented -- we always do a full diff.
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2976 (apply 'vc-do-command
12589
9aaf593a2be2 (vc-do-command): Added parameter BUFFER (the default,
Richard M. Stallman <rms@gnu.org>
parents: 12566
diff changeset
2977 "*vc-diff*" 1 "cvs" file 'WORKFILE "diff"
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2978 (and oldvers (concat "-r" oldvers))
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2979 (and newvers (concat "-r" newvers))
23980
9caafbfd8130 (vc-backend-diff): Use `diff-switches-list' throughout.
Richard M. Stallman <rms@gnu.org>
parents: 23832
diff changeset
2980 diff-switches-list))))))
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2981
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2982 (defun vc-backend-merge-news (file)
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
2983 ;; Merge in any new changes made to FILE.
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2984 (message "Merging changes into %s..." file)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2985 (prog1
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2986 (vc-backend-dispatch
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2987 file
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2988 (error "vc-backend-merge-news not meaningful for SCCS files") ;SCCS
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2989 (error "vc-backend-merge-news not meaningful for RCS files") ;RCS
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2990 (save-excursion ; CVS
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2991 (vc-file-clear-masterprops file)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2992 (vc-file-setprop file 'vc-workfile-version nil)
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2993 (vc-file-setprop file 'vc-locking-user nil)
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2994 (vc-file-setprop file 'vc-checkout-time nil)
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2995 (vc-do-command nil 0 "cvs" file 'WORKFILE "update")
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2996 ;; Analyze the merge result reported by CVS, and set
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
2997 ;; file properties accordingly.
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2998 (set-buffer (get-buffer "*vc*"))
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
2999 (goto-char (point-min))
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3000 ;; get new workfile version
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3001 (if (re-search-forward (concat "^Merging differences between "
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3002 "[01234567890.]* and "
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3003 "\\([01234567890.]*\\) into")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3004 nil t)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3005 (vc-file-setprop file 'vc-workfile-version (match-string 1)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3006 ;; get file status
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3007 (if (re-search-forward
25406
9ade71ed0686 (vc-backend-merge-news): Fix regexp to also match P marker
Andreas Schwab <schwab@suse.de>
parents: 24903
diff changeset
3008 (concat "^\\(\\([CMUP]\\) \\)?"
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3009 (regexp-quote (file-name-nondirectory file))
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3010 "\\( already contains the differences between \\)?")
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3011 nil t)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3012 (cond
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3013 ;; Merge successful, we are in sync with repository now
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3014 ((or (string= (match-string 2) "U")
23592
43a9efaf1ee2 (vc-backend-merge-news): Check for "P" output.
Dave Love <fx@gnu.org>
parents: 23235
diff changeset
3015 (string= (match-string 2) "P")
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3016 ;; Special case: file contents in sync with
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3017 ;; repository anyhow:
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3018 (match-string 3))
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3019 (vc-file-setprop file 'vc-locking-user 'none)
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3020 (vc-file-setprop file 'vc-checkout-time
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3021 (nth 5 (file-attributes file)))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3022 0) ;; indicate success to the caller
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3023 ;; Merge successful, but our own changes are still in the file
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3024 ((string= (match-string 2) "M")
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3025 (vc-file-setprop file 'vc-locking-user (vc-file-owner file))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3026 (vc-file-setprop file 'vc-checkout-time 0)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3027 0) ;; indicate success to the caller
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3028 ;; Conflicts detected!
22905
9cbc361c1a50 (vc-backend-merge-news): Account for `already contains the
André Spiegel <spiegel@gnu.org>
parents: 22721
diff changeset
3029 ((string= (match-string 2) "C")
18851
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3030 (vc-file-setprop file 'vc-locking-user (vc-file-owner file))
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3031 (vc-file-setprop file 'vc-checkout-time 0)
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3032 1) ;; signal the error to the caller
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3033 )
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3034 (pop-to-buffer "*vc*")
bee41cc3fd48 (vc-diff): If file is unchanged, ask for the version
André Spiegel <spiegel@gnu.org>
parents: 18265
diff changeset
3035 (error "Couldn't analyze cvs update result"))))
12885
5c1941d38daa (vc-next-action-on-file): Changed doc string, CVS case.
André Spiegel <spiegel@gnu.org>
parents: 12876
diff changeset
3036 (message "Merging changes into %s...done" file)))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3037
21368
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3038 (defun vc-backend-merge (file first-version &optional second-version)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3039 ;; Merge the changes between FIRST-VERSION and SECOND-VERSION into
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3040 ;; the current working copy of FILE. It is assumed that FILE is
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3041 ;; locked and writable (vc-merge ensures this).
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3042 (vc-backend-dispatch file
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3043 ;; SCCS
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3044 (error "Sorry, merging is not implemented for SCCS")
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3045 ;; RCS
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3046 (vc-do-command nil 1 "rcsmerge" file 'MASTER
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3047 "-kk" ;; ignore keyword conflicts
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3048 (concat "-r" first-version)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3049 (if second-version (concat "-r" second-version)))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3050 ;; CVS
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3051 (progn
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3052 (vc-do-command nil 0 "cvs" file 'WORKFILE
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3053 "update" "-kk"
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3054 (concat "-j" first-version)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3055 (concat "-j" second-version))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3056 (save-excursion
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3057 (set-buffer (get-buffer "*vc*"))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3058 (goto-char (point-min))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3059 (if (re-search-forward "conflicts during merge" nil t)
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3060 1 ;; signal error
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3061 0 ;; signal success
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3062 )))))
37b978fc46cb (vc-merge, vc-backend-merge): New functions.
André Spiegel <spiegel@gnu.org>
parents: 21366
diff changeset
3063
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3064 (defun vc-check-headers ()
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3065 "Check if the current file has any headers in it."
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3066 (interactive)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3067 (save-excursion
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3068 (goto-char (point-min))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3069 (vc-backend-dispatch buffer-file-name
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3070 (re-search-forward "%[MIRLBSDHTEGUYFPQCZWA]%" nil t) ;; SCCS
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3071 (re-search-forward "\\$[A-Za-z\300-\326\330-\366\370-\377]+\\(: [\t -#%-\176\240-\377]*\\)?\\$" nil t) ;; RCS
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
3072 'RCS ;; CVS works like RCS in this regard.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3073 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3074 ))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3075
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3076 ;; Back-end-dependent stuff ends here.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3077
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3078 ;; Set up key bindings for use while editing log messages
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3079
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
3080 (defun vc-log-mode (&optional file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3081 "Minor mode for driving version-control tools.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3082 These bindings are added to the global keymap when you enter this mode:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3083 \\[vc-next-action] perform next logical version-control operation on current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3084 \\[vc-register] register current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3085 \\[vc-toggle-read-only] like next-action, but won't register files
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3086 \\[vc-insert-headers] insert version-control headers in current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3087 \\[vc-print-log] display change history of current file
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3088 \\[vc-revert-buffer] revert buffer to latest version
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3089 \\[vc-cancel-version] undo latest checkin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3090 \\[vc-diff] show diffs between file versions
4725
126cf4bdfd35 (vc-version-other-window): New function.
Paul Eggert <eggert@twinsun.com>
parents: 4684
diff changeset
3091 \\[vc-version-other-window] visit old version in another window
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3092 \\[vc-directory] show all files locked by any user in or below .
18174
238e30645d07 (diff-switches): defvar deleted.
Richard M. Stallman <rms@gnu.org>
parents: 17911
diff changeset
3093 \\[vc-annotate] colorful display of the cvs annotate command
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3094 \\[vc-update-change-log] add change log entry from recent checkins
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3095
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3096 While you are entering a change log message for a version, the following
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3097 additional bindings will be in effect.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3098
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3099 \\[vc-finish-logentry] proceed with check in, ending log message entry
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3100
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3101 Whenever you do a checkin, your log comment is added to a ring of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3102 saved comments. These can be recalled as follows:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3103
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3104 \\[vc-next-comment] replace region with next message in comment ring
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3105 \\[vc-previous-comment] replace region with previous message in comment ring
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
3106 \\[vc-comment-search-reverse] search backward for regexp in the comment ring
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
3107 \\[vc-comment-search-forward] search backward for regexp in the comment ring
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3108
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3109 Entry to the change-log submode calls the value of text-mode-hook, then
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3110 the value of vc-log-mode-hook.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3111
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3112 Global user options:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3113 vc-initial-comment If non-nil, require user to enter a change
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3114 comment upon first checkin of the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3115
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3116 vc-keep-workfiles Non-nil value prevents workfiles from being
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3117 deleted when changes are checked in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3118
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3119 vc-suppress-confirm Suppresses some confirmation prompts,
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3120 notably for reversions.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3121
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
3122 vc-header-alist Which keywords to insert when adding headers
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3123 with \\[vc-insert-headers]. Defaults to
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
3124 '(\"\%\W\%\") under SCCS, '(\"\$Id\$\") under
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
3125 RCS and CVS.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3126
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3127 vc-static-header-alist By default, version headers inserted in C files
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3128 get stuffed in a static string area so that
9249
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
3129 ident(RCS/CVS) or what(SCCS) can see them in
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
3130 the compiled object code. You can override
909ae53a446d (vc-backend-checkin): When CVS checks in a file, it is
Richard M. Stallman <rms@gnu.org>
parents: 9216
diff changeset
3131 this by setting this variable to nil, or change
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3132 the header template by changing it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3133
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3134 vc-command-messages if non-nil, display run messages from the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3135 actual version-control utilities (this is
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3136 intended primarily for people hacking vc
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3137 itself).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3138 "
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3139 (interactive)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3140 (set-syntax-table text-mode-syntax-table)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3141 (use-local-map vc-log-entry-mode)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3142 (setq local-abbrev-table text-mode-abbrev-table)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3143 (setq major-mode 'vc-log-mode)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3144 (setq mode-name "VC-Log")
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3145 (make-local-variable 'vc-log-file)
17101
436e2bd4efcc (vc-log-mode): New optional arg FILE. Set vc-log-file here.
Karl Heuer <kwzh@gnu.org>
parents: 16993
diff changeset
3146 (setq vc-log-file file)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3147 (make-local-variable 'vc-log-version)
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
3148 (make-local-variable 'vc-comment-ring-index)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3149 (set-buffer-modified-p nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3150 (setq buffer-file-name nil)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3151 (run-hooks 'text-mode-hook 'vc-log-mode-hook)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3152 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3153
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3154 ;; Initialization code, to be done just once at load-time
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3155 (if vc-log-entry-mode
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3156 nil
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3157 (setq vc-log-entry-mode (make-sparse-keymap))
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3158 (define-key vc-log-entry-mode "\M-n" 'vc-next-comment)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3159 (define-key vc-log-entry-mode "\M-p" 'vc-previous-comment)
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
3160 (define-key vc-log-entry-mode "\M-r" 'vc-comment-search-reverse)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3161 (define-key vc-log-entry-mode "\M-s" 'vc-comment-search-forward)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3162 (define-key vc-log-entry-mode "\C-c\C-c" 'vc-finish-logentry)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3163 )
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3164
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3165 ;;; These things should probably be generally available
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3166
13012
ac84d1c8c770 (vc-dired-mode): Now a major mode derived from dired-mode.
André Spiegel <spiegel@gnu.org>
parents: 12968
diff changeset
3167 (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
3168 "Walk recursively through DIRNAME.
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
3169 Invoke FUNC f ARGS on each non-directory 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
3170 (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
3171 (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
3172
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3173 (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
3174 (if (not (file-directory-p file))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3175 (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
3176 (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
3177 (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
3178 (mapcar
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3179 (function
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3180 (lambda (f) (or
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3181 (string-equal f ".")
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3182 (string-equal f "..")
10537
380605821cc9 (vc-do-command): Arrange for the default-directory variable
Richard M. Stallman <rms@gnu.org>
parents: 10475
diff changeset
3183 (member f vc-directory-exclusion-list)
2054
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3184 (let ((dirf (concat dir f)))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3185 (or
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3186 (file-symlink-p dirf) ;; Avoid possible loops
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3187 (vc-file-tree-walk-internal dirf func args))))))
341337259785 (vc-update-change-log): Check that ChangeLog is writable
Paul Eggert <eggert@twinsun.com>
parents: 2041
diff changeset
3188 (directory-files dir)))))
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3189
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3190 (provide 'vc)
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3191
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3192 ;;; DEVELOPER'S NOTES ON CONCURRENCY PROBLEMS IN THIS CODE
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3193 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3194 ;;; These may be useful to anyone who has to debug or extend the package.
11597
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
3195 ;;; (Note that this information corresponds to versions 5.x. Some of it
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
3196 ;;; might have been invalidated by the additions to support branching
d6d53a54da18 (vc-backend-checkout): Pass vc-checkout-switches arg
Richard M. Stallman <rms@gnu.org>
parents: 11080
diff changeset
3197 ;;; and RCS keyword lookup. AS, 1995/03/24)
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3198 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3199 ;;; A fundamental problem in VC is that there are time windows between
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3200 ;;; vc-next-action's computations of the file's version-control state and
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3201 ;;; the actions that change it. This is a window open to lossage in a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3202 ;;; multi-user environment; someone else could nip in and change the state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3203 ;;; of the master during it.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3204 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3205 ;;; The performance problem is that rlog/prs calls are very expensive; we want
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3206 ;;; to avoid them as much as possible.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3207 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3208 ;;; ANALYSIS:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3209 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3210 ;;; The performance problem, it turns out, simplifies in practice to the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3211 ;;; problem of making vc-locking-user fast. The two other functions that call
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3212 ;;; prs/rlog will not be so commonly used that the slowdown is a problem; one
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3213 ;;; makes snapshots, the other deletes the calling user's last change in the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3214 ;;; master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3215 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3216 ;;; The race condition implies that we have to either (a) lock the master
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3217 ;;; during the entire execution of vc-next-action, or (b) detect and
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3218 ;;; recover from errors resulting from dispatch on an out-of-date state.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3219 ;;;
14040
187735b53d52 Comment fixes.
Karl Heuer <kwzh@gnu.org>
parents: 13934
diff changeset
3220 ;;; Alternative (a) appears to be infeasible. The problem is that we can't
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3221 ;;; guarantee that the lock will ever be removed. Suppose a user starts a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3222 ;;; checkin, the change message buffer pops up, and the user, having wandered
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3223 ;;; off to do something else, simply forgets about it?
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3224 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3225 ;;; Alternative (b), on the other hand, works well with a cheap way to speed up
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3226 ;;; vc-locking-user. Usually, if a file is registered, we can read its locked/
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3227 ;;; unlocked state and its current owner from its permissions.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3228 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3229 ;;; This shortcut will fail if someone has manually changed the workfile's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3230 ;;; permissions; also if developers are munging the workfile in several
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3231 ;;; directories, with symlinks to a master (in this latter case, the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3232 ;;; permissions shortcut will fail to detect a lock asserted from another
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3233 ;;; directory).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3234 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3235 ;;; Note that these cases correspond exactly to the errors which could happen
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3236 ;;; because of a competing checkin/checkout race in between two instances of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3237 ;;; vc-next-action.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3238 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3239 ;;; For VC's purposes, a workfile/master pair may have the following states:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3240 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3241 ;;; A. Unregistered. There is a workfile, there is no master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3242 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3243 ;;; B. Registered and not locked by anyone.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3244 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3245 ;;; C. Locked by calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3246 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3247 ;;; D. Locked by the calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3248 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3249 ;;; E. Locked by someone other than the calling user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3250 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3251 ;;; This makes for 25 states and 20 error conditions. Here's the matrix:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3252 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3253 ;;; VC's idea of state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3254 ;;; |
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3255 ;;; V Actual state RCS action SCCS action Effect
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3256 ;;; A B C D E
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3257 ;;; A . 1 2 3 4 ci -u -t- admin -fb -i<file> initial admin
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3258 ;;; B 5 . 6 7 8 co -l get -e checkout
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3259 ;;; C 9 10 . 11 12 co -u unget; get revert
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3260 ;;; D 13 14 15 . 16 ci -u -m<comment> delta -y<comment>; get checkin
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3261 ;;; E 17 18 19 20 . rcs -u -M -l unget -n ; get -g steal lock
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3262 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3263 ;;; All commands take the master file name as a last argument (not shown).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3264 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3265 ;;; In the discussion below, a "self-race" is a pathological situation in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3266 ;;; which VC operations are being attempted simultaneously by two or more
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3267 ;;; Emacsen running under the same username.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3268 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3269 ;;; The vc-next-action code has the following windows:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3270 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3271 ;;; Window P:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3272 ;;; Between the check for existence of a master file and the call to
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3273 ;;; admin/checkin in vc-buffer-admin (apparent state A). This window may
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3274 ;;; never close if the initial-comment feature is on.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3275 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3276 ;;; Window Q:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3277 ;;; Between the call to vc-workfile-unchanged-p in and the immediately
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3278 ;;; following revert (apparent state C).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3279 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3280 ;;; Window R:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3281 ;;; Between the call to vc-workfile-unchanged-p in and the following
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3282 ;;; checkin (apparent state D). This window may never close.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3283 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3284 ;;; Window S:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3285 ;;; Between the unlock and the immediately following checkout during a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3286 ;;; revert operation (apparent state C). Included in window Q.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3287 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3288 ;;; Window T:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3289 ;;; Between vc-locking-user and the following checkout (apparent state B).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3290 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3291 ;;; Window U:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3292 ;;; Between vc-locking-user and the following revert (apparent state C).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3293 ;;; Includes windows Q and S.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3294 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3295 ;;; Window V:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3296 ;;; Between vc-locking-user and the following checkin (apparent state
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3297 ;;; D). This window may never be closed if the user fails to complete the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3298 ;;; checkin message. Includes window R.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3299 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3300 ;;; Window W:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3301 ;;; Between vc-locking-user and the following steal-lock (apparent
2750
6f340eabf13f Improve doc strings and prompt strings.
Richard M. Stallman <rms@gnu.org>
parents: 2745
diff changeset
3302 ;;; state E). This window may never close if the user fails to complete
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3303 ;;; the steal-lock message. Includes window X.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3304 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3305 ;;; Window X:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3306 ;;; Between the unlock and the immediately following re-lock during a
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3307 ;;; steal-lock operation (apparent state E). This window may never cloce
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3308 ;;; if the user fails to complete the steal-lock message.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3309 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3310 ;;; Errors:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3311 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3312 ;;; Apparent state A ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3313 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3314 ;;; 1. File looked unregistered but is actually registered and not locked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3315 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3316 ;;; Potential cause: someone else's admin during window P, with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3317 ;;; caller's admin happening before their checkout.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3318 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3319 ;;; RCS: Prior to version 5.6.4, ci fails with message
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3320 ;;; "no lock set by <user>". From 5.6.4 onwards, VC uses the new
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3321 ;;; ci -i option and the message is "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3322 ;;; SCCS: admin will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3323 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3324 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3325 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3326 ;;; 2. File looked unregistered but is actually locked by caller, unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3327 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3328 ;;; Potential cause: self-race during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3329 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3330 ;;; RCS: Prior to version 5.6.4, reverts the file to the last saved
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3331 ;;; version and unlocks it. From 5.6.4 onwards, VC uses the new
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3332 ;;; ci -i option, failing with message "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3333 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3334 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3335 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3336 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3337 ;;; 3. File looked unregistered but is actually locked by caller, changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3338 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3339 ;;; Potential cause: self-race during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3340 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3341 ;;; RCS: Prior to version 5.6.4, VC registers the caller's workfile as
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3342 ;;; a delta with a null change comment (the -t- switch will be
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3343 ;;; ignored). From 5.6.4 onwards, VC uses the new ci -i option,
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3344 ;;; failing with message "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3345 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3346 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3347 ;;; 4. File looked unregistered but is locked by someone else.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3348 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3349 ;;; Potential cause: someone else's admin during window P, with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3350 ;;; caller's admin happening *after* their checkout.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3351 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3352 ;;; RCS: Prior to version 5.6.4, ci fails with a
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3353 ;;; "no lock set by <user>" message. From 5.6.4 onwards,
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3354 ;;; VC uses the new ci -i option, failing with message
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3355 ;;; "<file>,v: already exists".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3356 ;;; SCCS: will fail with error (ad19).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3357 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3358 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3359 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3360 ;;; Apparent state B ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3361 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3362 ;;; 5. File looked registered and not locked, but is actually unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3363 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3364 ;;; Potential cause: master file got nuked during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3365 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3366 ;;; RCS: will fail with "RCS/<file>: No such file or directory"
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3367 ;;; SCCS: will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3368 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3369 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3370 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3371 ;;; 6. File looked registered and not locked, but is actually locked by the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3372 ;;; calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3373 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3374 ;;; Potential cause: self-race during window T.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3375 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3376 ;;; RCS: in the same directory as the previous workfile, co -l will fail
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3377 ;;; with "co error: writable foo exists; checkout aborted". In any other
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3378 ;;; directory, checkout will succeed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3379 ;;; SCCS: will fail with ge17.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3380 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3381 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3382 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3383 ;;; 7. File looked registered and not locked, but is actually locked by the
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3384 ;;; calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3385 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3386 ;;; As case 6.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3387 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3388 ;;; 8. File looked registered and not locked, but is actually locked by another
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3389 ;;; user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3390 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3391 ;;; Potential cause: someone else checks it out during window T.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3392 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3393 ;;; RCS: co error: revision 1.3 already locked by <user>
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3394 ;;; SCCS: fails with ge4 (in directory) or ut7 (outside it).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3395 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3396 ;;; We can let these errors be passed up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3397 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3398 ;;; Apparent state C ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3399 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3400 ;;; 9. File looks locked by calling user and unchanged, but is unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3401 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3402 ;;; As case 5.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3403 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3404 ;;; 10. File looks locked by calling user and unchanged, but is actually not
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3405 ;;; locked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3406 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3407 ;;; Potential cause: a self-race in window U, or by the revert's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3408 ;;; landing during window X of some other user's steal-lock or window S
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3409 ;;; of another user's revert.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3410 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3411 ;;; RCS: succeeds, refreshing the file from the identical version in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3412 ;;; the master.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3413 ;;; SCCS: fails with error ut4 (p file nonexistent).
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3414 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3415 ;;; Either of these consequences is acceptable.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3416 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3417 ;;; 11. File is locked by calling user. It looks unchanged, but is actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3418 ;;; changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3419 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3420 ;;; Potential cause: the file would have to be touched by a self-race
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3421 ;;; during window Q.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3422 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3423 ;;; The revert will succeed, removing whatever changes came with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3424 ;;; the touch. It is theoretically possible that work could be lost.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3425 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3426 ;;; 12. File looks like it's locked by the calling user and unchanged, but
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3427 ;;; it's actually locked by someone else.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3428 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3429 ;;; Potential cause: a steal-lock in window V.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3430 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3431 ;;; RCS: co error: revision <rev> locked by <user>; use co -r or rcs -u
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3432 ;;; SCCS: fails with error un2
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3433 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3434 ;;; We can pass these errors up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3435 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3436 ;;; Apparent state D ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3437 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3438 ;;; 13. File looks like it's locked by the calling user and changed, but it's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3439 ;;; actually unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3440 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3441 ;;; Potential cause: master file got nuked during window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3442 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3443 ;;; RCS: Prior to version 5.6.4, checks in the user's version as an
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3444 ;;; initial delta. From 5.6.4 onwards, VC uses the new ci -j
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3445 ;;; option, failing with message "no such file or directory".
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3446 ;;; SCCS: will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3447 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3448 ;;; This case is kind of nasty. Under RCS prior to version 5.6.4,
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3449 ;;; VC may fail to detect the loss of previous version information.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3450 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3451 ;;; 14. File looks like it's locked by the calling user and changed, but it's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3452 ;;; actually unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3453 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3454 ;;; Potential cause: self-race in window V, or the checkin happening
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3455 ;;; during the window X of someone else's steal-lock or window S of
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3456 ;;; someone else's revert.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3457 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3458 ;;; RCS: ci will fail with "no lock set by <user>".
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3459 ;;; SCCS: delta will fail with error ut4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3460 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3461 ;;; 15. File looks like it's locked by the calling user and changed, but it's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3462 ;;; actually locked by the calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3463 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3464 ;;; Potential cause: another self-race --- a whole checkin/checkout
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3465 ;;; sequence by the calling user would have to land in window R.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3466 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3467 ;;; SCCS: checks in a redundant delta and leaves the file unlocked as usual.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3468 ;;; RCS: reverts to the file state as of the second user's checkin, leaving
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3469 ;;; the file unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3470 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3471 ;;; It is theoretically possible that work could be lost under RCS.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3472 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3473 ;;; 16. File looks like it's locked by the calling user and changed, but it's
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3474 ;;; actually locked by a different user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3475 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3476 ;;; RCS: ci error: no lock set by <user>
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3477 ;;; SCCS: unget will fail with error un2
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3478 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3479 ;;; We can pass these errors up to the user.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3480 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3481 ;;; Apparent state E ---
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3482 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3483 ;;; 17. File looks like it's locked by some other user, but it's actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3484 ;;; unregistered.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3485 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3486 ;;; As case 13.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3487 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3488 ;;; 18. File looks like it's locked by some other user, but it's actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3489 ;;; unlocked.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3490 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3491 ;;; Potential cause: someone released a lock during window W.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3492 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3493 ;;; RCS: The calling user will get the lock on the file.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3494 ;;; SCCS: unget -n will fail with cm4.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3495 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3496 ;;; Either of these consequences will be OK.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3497 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3498 ;;; 19. File looks like it's locked by some other user, but it's actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3499 ;;; locked by the calling user and unchanged.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3500 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3501 ;;; Potential cause: the other user relinquishing a lock followed by
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3502 ;;; a self-race, both in window W.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3503 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3504 ;;; Under both RCS and SCCS, both unlock and lock will succeed, making
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3505 ;;; the sequence a no-op.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3506 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3507 ;;; 20. File looks like it's locked by some other user, but it's actually
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3508 ;;; locked by the calling user and changed.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3509 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3510 ;;; As case 19.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3511 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3512 ;;; PROBLEM CASES:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3513 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3514 ;;; In order of decreasing severity:
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3515 ;;;
12943
10d0f42db2da (vc-directory): Kill existing vc-dired buffers for this directory.
André Spiegel <spiegel@gnu.org>
parents: 12926
diff changeset
3516 ;;; Cases 11 and 15 are the only ones that potentially lose work.
904
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3517 ;;; They would require a self-race for this to happen.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3518 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3519 ;;; Case 13 in RCS loses information about previous deltas, retaining
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3520 ;;; only the information in the current workfile. This can only happen
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3521 ;;; if the master file gets nuked in window P.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3522 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3523 ;;; Case 3 in RCS and case 15 under SCCS insert a redundant delta with
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3524 ;;; no change comment in the master. This would require a self-race in
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3525 ;;; window P or R respectively.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3526 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3527 ;;; Cases 2, 10, 19 and 20 do extra work, but make no changes.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3528 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3529 ;;; Unfortunately, it appears to me that no recovery is possible in these
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3530 ;;; cases. They don't yield error messages, so there's no way to tell that
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3531 ;;; a race condition has occurred.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3532 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3533 ;;; All other cases don't change either the workfile or the master, and
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3534 ;;; trigger command errors which the user will see.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3535 ;;;
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3536 ;;; Thus, there is no explicit recovery code.
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3537
4a1ac370d57a Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
3538 ;;; vc.el ends here