Mercurial > emacs
comparison lisp/pcvs-defs.el @ 28088:b442dfc3cef0
*** empty log message ***
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Sat, 11 Mar 2000 03:51:31 +0000 |
parents | |
children | 4fe904444640 |
comparison
equal
deleted
inserted
replaced
28087:9ca294cf76c7 | 28088:b442dfc3cef0 |
---|---|
1 ;;; pcvs-defs.el --- variable definitions for PCL-CVS | |
2 | |
3 ;; Copyright (C) 1991-2000 Free Software Foundation, Inc. | |
4 | |
5 ;; Author: Stefan Monnier <monnier@cs.yale.edu> | |
6 ;; Keywords: pcl-cvs | |
7 ;; Version: $Name: $ | |
8 ;; Revision: $Id: pcl-cvs-defs.el,v 1.27 2000/03/03 20:58:09 monnier Exp $ | |
9 | |
10 ;; This file is part of GNU Emacs. | |
11 | |
12 ;; GNU Emacs is free software; you can redistribute it and/or modify | |
13 ;; it under the terms of the GNU General Public License as published by | |
14 ;; the Free Software Foundation; either version 2, or (at your option) | |
15 ;; any later version. | |
16 | |
17 ;; GNU Emacs is distributed in the hope that it will be useful, | |
18 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of | |
19 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
20 ;; GNU General Public License for more details. | |
21 | |
22 ;; You should have received a copy of the GNU General Public License | |
23 ;; along with GNU Emacs; see the file COPYING. If not, write to the | |
24 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
25 ;; Boston, MA 02111-1307, USA. | |
26 | |
27 ;;; Commentary: | |
28 | |
29 | |
30 ;;; Code: | |
31 | |
32 (defconst pcl-cvs-version "$Name: $") | |
33 | |
34 (eval-when-compile (require 'cl)) | |
35 (require 'pcvs-util) | |
36 | |
37 ;;;; ------------------------------------------------------- | |
38 ;;;; START OF THINGS TO CHECK WHEN INSTALLING | |
39 | |
40 (defvar cvs-program "cvs" | |
41 "*Name or full path of the cvs executable.") | |
42 | |
43 (defvar cvs-version | |
44 (ignore-errors | |
45 (with-temp-buffer | |
46 (call-process "cvs" nil t nil "-v") | |
47 (goto-char (point-min)) | |
48 (when (re-search-forward "(CVS) \\([0-9]+\\)\\.\\([0-9]+\\)" nil t) | |
49 (cons (string-to-number (match-string 1)) | |
50 (string-to-number (match-string 2)))))) | |
51 "*Version of `cvs' installed on your system. | |
52 It must be in the (MAJOR . MINOR) format.") | |
53 | |
54 ;; FIXME: this is only used by cvs-mode-diff-backup | |
55 (defvar cvs-diff-program (or (and (boundp 'diff-command) diff-command) "diff") | |
56 "*Name or full path of the best diff program you've got. | |
57 NOTE: there are some nasty bugs in the context diff variants of some vendor | |
58 versions, such as the one in SunOS-4.") | |
59 | |
60 ;;;; END OF THINGS TO CHECK WHEN INSTALLING | |
61 ;;;; -------------------------------------------------------- | |
62 | |
63 ;;;; | |
64 ;;;; User configuration variables: | |
65 ;;;; | |
66 ;;;; NOTE: these should be set in your ~/.emacs (or site-lisp/default.el) file. | |
67 ;;;; | |
68 | |
69 (defgroup pcl-cvs nil | |
70 "Special support for the CVS versioning system." | |
71 :group 'tools | |
72 :prefix "cvs-") | |
73 | |
74 ;; | |
75 ;; cvsrc options | |
76 ;; | |
77 | |
78 (defcustom cvs-cvsrc-file "~/.cvsrc" | |
79 "Path to your cvsrc file." | |
80 :group 'pcl-cvs | |
81 :type '(file)) | |
82 | |
83 (defvar cvs-shared-start 4 | |
84 "Index of the first shared flag. | |
85 If set to 4, for instance, a numeric argument smaller than 4 will | |
86 select a non-shared flag, while a numeric argument greater than 3 | |
87 will select a shared-flag.") | |
88 | |
89 (defvar cvs-shared-flags (make-list cvs-shared-start nil) | |
90 "List of flags whose settings is shared among several commands.") | |
91 | |
92 (defvar cvs-cvsroot nil | |
93 "*Specifies where the (current) cvs master repository is. | |
94 Overrides the environment variable $CVSROOT by sending \" -d dir\" to | |
95 all CVS commands. This switch is useful if you have multiple CVS | |
96 repositories. It can be set interactively with \\[cvs-change-cvsroot.] | |
97 There is no need to set this if $CVSROOT is set to a correct value.") | |
98 | |
99 (defcustom cvs-auto-remove-handled nil | |
100 "*If up-to-date files should be acknowledged automatically. | |
101 If T, they will be removed from the *cvs* buffer after every command. | |
102 If DELAYED, they will be removed from the *cvs* buffer before every command. | |
103 If STATUS, they will only be removed after a `cvs-mode-status' command. | |
104 Else, they will never be automatically removed from the *cvs* buffer." | |
105 :group 'pcl-cvs | |
106 :type '(choice (const nil) (const status) (const delayed) (const t))) | |
107 | |
108 (defcustom cvs-auto-remove-directories 'handled | |
109 "*If ALL, directory entries will never be shown. | |
110 If HANLDED, only non-handled directories will be shown. | |
111 If EMPTY, only non-empty directories will be shown." | |
112 :group 'pcl-cvs | |
113 :type '(choice (const :tag "No" nil) (const all) (const handled) (const empty))) | |
114 | |
115 (defcustom cvs-auto-revert t | |
116 "*Non-nil if changed files should automatically be reverted." | |
117 :group 'pcl-cvs | |
118 :type '(boolean)) | |
119 | |
120 (defcustom cvs-sort-ignore-file t | |
121 "*Non-nil if `cvs-mode-ignore' should sort the .cvsignore automatically." | |
122 :group 'pcl-cvs | |
123 :type '(boolean)) | |
124 | |
125 (defcustom cvs-force-dir-tag t | |
126 "*If non-nil, tagging can only be applied to directories. | |
127 Tagging should generally be applied a directory at a time, but sometimes it is | |
128 useful to be able to tag a single file. The normal way to do that is to use | |
129 `cvs-mode-force-command' so as to temporarily override the restrictions," | |
130 :group 'pcl-cvs | |
131 :type '(boolean)) | |
132 | |
133 (defcustom cvs-default-ignore-marks nil | |
134 "*Non-nil if cvs mode commands should ignore any marked files. | |
135 Normally they run on the files that are marked (with `cvs-mode-mark'), | |
136 or the file under the cursor if no files are marked. If this variable | |
137 is set to a non-nil value they will by default run on the file on the | |
138 current line. See also `cvs-ignore-marks'" | |
139 :group 'pcl-cvs | |
140 :type '(boolean)) | |
141 | |
142 (defvar cvs-diff-ignore-marks t | |
143 "Obsolete variable: use cvs-ignore-marks instead.") | |
144 | |
145 (defcustom cvs-invert-ignore-marks | |
146 (let ((l ())) | |
147 (unless (equal cvs-diff-ignore-marks cvs-default-ignore-marks) | |
148 (push "diff" l)) | |
149 (when (and cvs-force-dir-tag (not cvs-default-ignore-marks)) | |
150 (push "tag" l)) | |
151 l) | |
152 "*List of cvs commands that invert the default ignore-mark behavior. | |
153 Commands in this set will use the opposite default from the one set | |
154 in `cvs-default-ignore-marks'." | |
155 :group 'pcl-cvs | |
156 :type '(set (const "diff") | |
157 (const "tag") | |
158 (const "ignore"))) | |
159 | |
160 (defcustom cvs-confirm-removals t | |
161 "*Ask for confirmation before removing files. | |
162 Non-nil means that PCL-CVS will ask confirmation before removing files | |
163 except for files whose content can readily be recovered from the repository. | |
164 A value of LIST means that the list of files to be deleted will be | |
165 displayed when asking for confirmation." | |
166 :group 'pcl-cvs | |
167 :type '(choice (const list) | |
168 (const t) | |
169 (const nil))) | |
170 | |
171 (defcustom cvs-add-default-message nil | |
172 "*Default message to use when adding files. | |
173 If set to NIL, `cvs-mode-add' will always prompt for a message." | |
174 :group 'pcl-cvs | |
175 :type '(choice (const :tag "Prompt" nil) | |
176 (string))) | |
177 | |
178 (defvar cvs-diff-buffer-name "*cvs-diff*" | |
179 "Obsolete variable: use `cvs-buffer-name-alist' instead.") | |
180 | |
181 (defcustom cvs-find-file-and-jump t | |
182 "Jump to the modified area when finding a file. | |
183 If non-nil, `cvs-mode-file-file' will place the cursor at the beginning of | |
184 the modified area. If the file is not locally modified, this will obviously | |
185 have no effect." | |
186 :group 'pcl-cvs | |
187 :type '(boolean)) | |
188 | |
189 (defcustom cvs-buffer-name-alist | |
190 '(("diff" cvs-diff-buffer-name diff-mode) | |
191 ("status" "*cvs-info*" cvs-status-mode) | |
192 ("tree" (format "*cvs-%s*" cmd) cvs-status-mode) | |
193 ("message" "*cvs-commit*" nil log-edit) | |
194 ("log" "*cvs-info*" log-view-mode)) | |
195 "*Buffer name and mode to be used for each command. | |
196 This is a list of elements of the form | |
197 | |
198 (CMD BUFNAME MODE &optional POSTPROC) | |
199 | |
200 CMD is the name of the command. | |
201 BUFNAME is an expression that should evaluate to a string used as | |
202 a buffer name. It can use the variable CMD if it wants to. | |
203 MODE is the command to use to setup the buffer. | |
204 POSTPROC is a function that should be executed when the command terminates | |
205 | |
206 The CMD used for `cvs-mode-commit' is \"message\". For that special | |
207 case, POSTPROC is called just after MODE with special arguments." | |
208 :group 'pcl-cvs | |
209 :type '(repeat | |
210 (list (choice (const "diff") | |
211 (const "status") | |
212 (const "tree") | |
213 (const "message") | |
214 (const "log") | |
215 (string)) | |
216 (choice (const "*vc-diff*") | |
217 (const "*cvs-info*") | |
218 (const "*cvs-commit*") | |
219 (const (expand-file-name "*cvs-commit*")) | |
220 (const (format "*cvs-%s*" cmd)) | |
221 (const (expand-file-name (format "*cvs-%s*" cmd))) | |
222 (sexp :value "my-cvs-info-buffer") | |
223 (const nil)) | |
224 (choice (function-item diff-mode) | |
225 (function-item cvs-edit-mode) | |
226 (function-item cvs-status-mode) | |
227 function | |
228 (const nil)) | |
229 (set :inline t | |
230 (choice (function-item cvs-status-cvstrees) | |
231 (function-item cvs-status-trees) | |
232 function))))) | |
233 | |
234 (defvar cvs-buffer-name '(expand-file-name "*cvs*" dir) ;; "*cvs*" | |
235 "Name of the cvs buffer. | |
236 This expression will be evaluated in an environment where DIR is set to | |
237 the directory name of the cvs buffer.") | |
238 | |
239 (defvar cvs-temp-buffer-name '(expand-file-name " *cvs-tmp*" dir) | |
240 "*Name of the cvs temporary buffer. | |
241 Output from cvs is placed here for asynchronous commands.") | |
242 | |
243 (defcustom cvs-idiff-imerge-handlers | |
244 (if (fboundp 'ediff) | |
245 '(cvs-ediff-diff . cvs-ediff-merge) | |
246 '(cvs-emerge-diff . cvs-emerge-merge)) | |
247 "*Pair of functions to be used for resp. diff'ing and merg'ing interactively." | |
248 :group 'pcl-cvs | |
249 :type '(choice (const :tag "Ediff" (cvs-ediff-diff . cvs-ediff-merge)) | |
250 (const :tag "Emerge" (cvs-emerge-diff . cvs-emerge-merge)))) | |
251 | |
252 (defvar pcl-cvs-load-hook nil | |
253 "Run after loading pcl-cvs.") | |
254 | |
255 (defvar cvs-mode-hook nil | |
256 "Run after `cvs-mode' was setup.") | |
257 | |
258 | |
259 ;;;; | |
260 ;;;; Internal variables, used in the process buffer. | |
261 ;;;; | |
262 | |
263 (defvar cvs-postprocess nil | |
264 "(Buffer local) what to do once the process exits.") | |
265 | |
266 ;;;; | |
267 ;;;; Internal variables for the *cvs* buffer. | |
268 ;;;; | |
269 | |
270 (defcustom cvs-reuse-cvs-buffer 'subdir | |
271 "When to reuse an existing cvs buffer. | |
272 Alternatives are: | |
273 CURRENT: just reuse the current buffer if it is a cvs buffer | |
274 SAMEDIR: reuse any cvs buffer displaying the same directory | |
275 SUBDIR: or reuse any cvs buffer displaying any sub- or super- directory | |
276 ALWAYS: reuse any cvs buffer." | |
277 :group 'pcl-cvs | |
278 :type '(choice (const always) (const subdir) (const samedir) (const current))) | |
279 | |
280 (defvar cvs-temp-buffer nil | |
281 "(Buffer local) The temporary buffer associated with this *cvs* buffer.") | |
282 | |
283 (defvar cvs-lock-file nil | |
284 "Full path to a lock file that CVS is waiting for (or was waiting for). | |
285 This variable is buffer local and only used in the *cvs* buffer.") | |
286 | |
287 (defvar cvs-lock-file-regexp "^#cvs\\.\\([trw]fl\\.[-.a-z0-9]+\\|lock\\)\\'" | |
288 "Regexp matching the possible names of locks in the CVS repository.") | |
289 | |
290 (defconst cvs-cursor-column 22 | |
291 "Column to position cursor in in `cvs-mode'.") | |
292 | |
293 ;;;; | |
294 ;;;; Global internal variables | |
295 ;;;; | |
296 | |
297 (defconst cvs-startup-message | |
298 (concat "PCL-CVS release " pcl-cvs-version) | |
299 "*Startup message for CVS.") | |
300 | |
301 (defconst cvs-vendor-branch "1.1.1" | |
302 "The default branch used by CVS for vendor code.") | |
303 | |
304 (defvar cvs-menu | |
305 '("CVS" | |
306 ["Open File.." cvs-mode-find-file t] | |
307 [" ..Other Window" cvs-mode-find-file-other-window t] | |
308 ["Interactive Merge" cvs-mode-imerge t] | |
309 ["Interactive Diff" cvs-mode-idiff t] | |
310 ["View Diff" cvs-mode-diff (cvs-enabledp 'diff)] | |
311 ["Diff with Vendor" cvs-mode-diff-vendor t] | |
312 ["Diff with Backup" cvs-mode-diff-backup t] | |
313 ["View Log" cvs-mode-log t] | |
314 ["View Status" cvs-mode-status t] | |
315 "----" | |
316 ["Update" cvs-mode-update (cvs-enabledp 'update)] | |
317 ["Re-Examine" cvs-mode-examine t] | |
318 ["Commit" cvs-mode-commit-setup (cvs-enabledp 'commit)] | |
319 ["Undo Changes" cvs-mode-undo (cvs-enabledp 'undo)] | |
320 ["Add" cvs-mode-add (cvs-enabledp 'add)] | |
321 ["Remove" cvs-mode-remove (cvs-enabledp 'remove)] | |
322 ["Ignore" cvs-mode-ignore (cvs-enabledp 'ignore)] | |
323 ["Add ChangeLog" cvs-mode-add-change-log-entry-other-window t] | |
324 "----" | |
325 ["Mark All" cvs-mode-mark-all-files t] | |
326 ["Unmark All" cvs-mode-unmark-all-files t] | |
327 ["Hide Handled" cvs-mode-remove-handled t] | |
328 "----" | |
329 ;; ["Update Directory" cvs-update t] | |
330 ;; ["Examine Directory" cvs-examine t] | |
331 ;; ["Status Directory" cvs-status t] | |
332 ;; ["Checkout Module" cvs-checkout t] | |
333 ;; "----" | |
334 ["Quit" cvs-mode-quit t] | |
335 )) | |
336 | |
337 (easy-mmode-defmap cvs-mode-diff-map | |
338 '(("=" . cvs-mode-diff) | |
339 ("b" . cvs-mode-diff-backup) | |
340 ("2" . cvs-mode-idiff-other) | |
341 ("h" . cvs-mode-diff-head) | |
342 ("v" . cvs-mode-diff-vendor) | |
343 ("?" . cvs-mode-diff-help) | |
344 ("e" . cvs-mode-idiff) | |
345 ("E" . cvs-mode-imerge)) | |
346 "Keymap for diff-related operations in `cvs-mode'.") | |
347 | |
348 (easy-mmode-defmap cvs-mode-map | |
349 ;;(define-prefix-command 'cvs-mode-map-diff-prefix) | |
350 ;;(define-prefix-command 'cvs-mode-map-control-c-prefix) | |
351 `(;; simulate `suppress-keymap' | |
352 (self-insert-command . undefined) | |
353 (("0" "1" "2" "3" "4" "5" "6" "7" "8" "9") . digit-argument) | |
354 ("-" . negative-argument) | |
355 ;; various | |
356 (undo . cvs-mode-undo) | |
357 ("?" . cvs-help) | |
358 ("h" . cvs-help) | |
359 ("q" . cvs-bury-buffer) | |
360 ;;("Q" . kill-buffer) | |
361 ("F" . cvs-mode-set-flags) | |
362 ("\M-f" . cvs-mode-force-command) | |
363 ("\C-c\C-c" . cvs-mode-kill-process) | |
364 ;; marking | |
365 ("m" . cvs-mode-mark) | |
366 ("M" . cvs-mode-mark-all-files) | |
367 ("u" . cvs-mode-unmark) | |
368 ("\C-?". cvs-mode-unmark-up) | |
369 ("%" . cvs-mode-mark-matching-files) | |
370 ("T" . cvs-mode-toggle-marks) | |
371 ("\M-\C-?" . cvs-mode-unmark-all-files) | |
372 ;; navigation keys | |
373 (" " . cvs-mode-next-line) | |
374 ("n" . cvs-mode-next-line) | |
375 ("p" . cvs-mode-previous-line) | |
376 ;; M- keys are usually those that operate on modules | |
377 ;;("\M-C". cvs-mode-rcs2log) ; i.e. "Create a ChangeLog" | |
378 ;;("\M-t". cvs-rtag) | |
379 ;;("\M-l". cvs-rlog) | |
380 ("\M-c". cvs-checkout) | |
381 ("\M-e". cvs-examine) | |
382 ("g" . cvs-mode-revert-buffer) | |
383 ("\M-u". cvs-update) | |
384 ("\M-s". cvs-status) | |
385 ;; diff commands | |
386 ("=" . cvs-mode-diff) | |
387 ("d" . ,cvs-mode-diff-map) | |
388 ;; keys that operate on individual files | |
389 ("\C-k". cvs-mode-acknowledge) | |
390 ("A" . cvs-mode-add-change-log-entry-other-window) | |
391 ;;("B" . cvs-mode-byte-compile-files) | |
392 ("C" . cvs-mode-commit-setup) | |
393 ("O" . cvs-mode-update) | |
394 ("U" . cvs-mode-undo) | |
395 ("I" . cvs-mode-insert) | |
396 ("a" . cvs-mode-add) | |
397 ("b" . cvs-set-branch-prefix) | |
398 ("B" . cvs-set-secondary-branch-prefix) | |
399 ("c" . cvs-mode-commit) | |
400 ("e" . cvs-mode-examine) | |
401 ("f" . cvs-mode-find-file) | |
402 ("i" . cvs-mode-ignore) | |
403 ("l" . cvs-mode-log) | |
404 ("o" . cvs-mode-find-file-other-window) | |
405 ("r" . cvs-mode-remove) | |
406 ("s" . cvs-mode-status) | |
407 ("t" . cvs-mode-tag) | |
408 ;;("v" . cvs-mode-diff-vendor) | |
409 ("x" . cvs-mode-remove-handled) | |
410 ;; cvstree bindings | |
411 ("+" . cvs-mode-tree) | |
412 ;; mouse bindings | |
413 ([(down-mouse-3)] . cvs-menu) | |
414 ;; Emacs-21 toolbar | |
415 ;;([tool-bar item1] . (menu-item "Examine" cvs-examine :image (image :file "/usr/share/icons/xpaint.xpm" :type xpm))) | |
416 ;;([tool-bar item2] . (menu-item "Update" cvs-update :image (image :file "/usr/share/icons/mail1.xpm" :type xpm))) | |
417 ) | |
418 "Keymap for `cvs-mode'." | |
419 :dense t) | |
420 | |
421 (fset 'cvs-mode-map cvs-mode-map) | |
422 | |
423 ;; add the cvs-menu to the map so it's added whenever we are in cvs-mode | |
424 (when (ignore-errors (require 'easymenu)) | |
425 (easy-menu-define cvs-menu-map | |
426 cvs-mode-map | |
427 "Menu used in cvs-mode." | |
428 cvs-menu)) | |
429 | |
430 ;;;; | |
431 ;;;; CVS-Minor mode | |
432 ;;;; | |
433 | |
434 (defcustom cvs-minor-mode-prefix "\C-xc" | |
435 "Prefix key for the `cvs-mode' bindings in `cvs-minor-mode'." | |
436 :group 'pcl-cvs) | |
437 | |
438 (easy-mmode-defmap cvs-minor-mode-map | |
439 `((,cvs-minor-mode-prefix . cvs-mode-map)) | |
440 "Keymap for `cvs-minor-mode', used in buffers related to pcl-cvs.") | |
441 | |
442 (defvar cvs-buffer nil | |
443 "(Buffer local) The *cvs* buffer associated with this buffer.") | |
444 (put 'cvs-buffer 'permanent-local t) | |
445 ;;(make-variable-buffer-local 'cvs-buffer) | |
446 | |
447 (defvar cvs-minor-wrap-function nil | |
448 "Function to call when switching to the *cvs* buffer. | |
449 Takes two arguments: | |
450 - a *cvs* buffer. | |
451 - a zero-arg function which is guaranteed not to switch buffer. | |
452 It is expected to call the function.") | |
453 ;;(make-variable-buffer-local 'cvs-minor-wrap-function) | |
454 | |
455 (defvar cvs-minor-current-files) | |
456 ;;"Current files in a `cvs-minor-mode' buffer." | |
457 ;; This should stay `void' because we want to be able to tell the difference | |
458 ;; between an empty list and no list at all. | |
459 | |
460 (defconst cvs-pcl-cvs-dirchange-re "^pcl-cvs: descending directory \\(.*\\)$") | |
461 | |
462 ;;;; | |
463 ;;;; | |
464 ;;;; | |
465 | |
466 ;;;###autoload | |
467 (if (progn (condition-case () (require 'easymenu) (error nil)) | |
468 (fboundp 'easy-menu-add-item)) | |
469 (easy-menu-add-item nil '("tools") | |
470 '("PCL CVS" | |
471 ["Update Directory" cvs-update t] | |
472 ["Examine Directory" cvs-examine t] | |
473 ["Status Directory" cvs-status t] | |
474 ["Checkout Module" cvs-checkout t]) "vc")) | |
475 | |
476 | |
477 ;; cvs-1.10 and above can take file arguments in other directories | |
478 ;; while others need to be executed once per directory | |
479 (defvar cvs-execute-single-dir | |
480 (if (and (consp cvs-version) | |
481 (or (>= (cdr cvs-version) 10) (> (car cvs-version) 1))) | |
482 '("status") | |
483 t) | |
484 "Whether cvs commands should be executed a directory at a time. | |
485 If a list, specifies for which commands the single-dir mode should be used. | |
486 If T, single-dir mode should be used for all operations. | |
487 | |
488 CVS versions before 1.10 did not allow passing them arguments in different | |
489 directories, so pcl-cvs checks what version you're using to determine | |
490 whether to use the new feature or not. | |
491 Sadly, even with a new cvs executable, if you connect to an older cvs server | |
492 \(typically a cvs-1.9 on the server), the old restriction applies. In such | |
493 a case the sanity check made by pcl-cvs fails and you will have to manually | |
494 set this variable to T (until the cvs server is upgraded). | |
495 When the above problem occurs, pcl-cvs should (hopefully) catch cvs' error | |
496 message and replace it with a message tell you to change this variable.") | |
497 | |
498 ;; | |
499 (provide 'pcvs-defs) | |
500 | |
501 ;;; pcl-cvs-defs.el ends here |