2000-03-11 03:51:31 +00:00
|
|
|
|
;;; pcvs-defs.el --- variable definitions for PCL-CVS
|
|
|
|
|
|
2004-10-11 14:58:54 +00:00
|
|
|
|
;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
|
2010-01-13 08:35:10 +00:00
|
|
|
|
;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
|
2008-04-24 05:46:50 +00:00
|
|
|
|
;; Free Software Foundation, Inc.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
2006-04-30 15:49:08 +00:00
|
|
|
|
;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
|
2000-03-11 03:51:31 +00:00
|
|
|
|
;; Keywords: pcl-cvs
|
|
|
|
|
|
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
|
2008-05-06 08:06:51 +00:00
|
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
2000-03-11 03:51:31 +00:00
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 08:06:51 +00:00
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
;; (at your option) any later version.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
|
|
|
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
2008-05-06 08:06:51 +00:00
|
|
|
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;; Code:
|
|
|
|
|
|
|
|
|
|
(eval-when-compile (require 'cl))
|
|
|
|
|
(require 'pcvs-util)
|
|
|
|
|
|
|
|
|
|
;;;; -------------------------------------------------------
|
|
|
|
|
;;;; START OF THINGS TO CHECK WHEN INSTALLING
|
|
|
|
|
|
|
|
|
|
(defvar cvs-program "cvs"
|
|
|
|
|
"*Name or full path of the cvs executable.")
|
|
|
|
|
|
|
|
|
|
(defvar cvs-version
|
2005-09-14 16:19:18 +00:00
|
|
|
|
;; With the divergence of the CVSNT codebase and version numbers, this is
|
|
|
|
|
;; not really good any more.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
(ignore-errors
|
|
|
|
|
(with-temp-buffer
|
2002-06-22 20:24:42 +00:00
|
|
|
|
(call-process cvs-program nil t nil "-v")
|
2000-03-11 03:51:31 +00:00
|
|
|
|
(goto-char (point-min))
|
2005-09-14 16:19:18 +00:00
|
|
|
|
(when (re-search-forward "(CVS\\(NT\\)?) \\([0-9]+\\)\\.\\([0-9]+\\)"
|
|
|
|
|
nil t)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
(cons (string-to-number (match-string 1))
|
|
|
|
|
(string-to-number (match-string 2))))))
|
|
|
|
|
"*Version of `cvs' installed on your system.
|
|
|
|
|
It must be in the (MAJOR . MINOR) format.")
|
|
|
|
|
|
|
|
|
|
;; FIXME: this is only used by cvs-mode-diff-backup
|
|
|
|
|
(defvar cvs-diff-program (or (and (boundp 'diff-command) diff-command) "diff")
|
|
|
|
|
"*Name or full path of the best diff program you've got.
|
|
|
|
|
NOTE: there are some nasty bugs in the context diff variants of some vendor
|
|
|
|
|
versions, such as the one in SunOS-4.")
|
|
|
|
|
|
|
|
|
|
;;;; END OF THINGS TO CHECK WHEN INSTALLING
|
|
|
|
|
;;;; --------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
;;;;
|
|
|
|
|
;;;; User configuration variables:
|
|
|
|
|
;;;;
|
|
|
|
|
;;;; NOTE: these should be set in your ~/.emacs (or site-lisp/default.el) file.
|
|
|
|
|
;;;;
|
|
|
|
|
|
|
|
|
|
(defgroup pcl-cvs nil
|
|
|
|
|
"Special support for the CVS versioning system."
|
2000-06-13 19:06:07 +00:00
|
|
|
|
:version "21.1"
|
2000-03-11 03:51:31 +00:00
|
|
|
|
:group 'tools
|
|
|
|
|
:prefix "cvs-")
|
|
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
;; cvsrc options
|
|
|
|
|
;;
|
|
|
|
|
|
2008-10-19 10:10:44 +00:00
|
|
|
|
(defcustom cvs-cvsrc-file (convert-standard-filename "~/.cvsrc")
|
2000-03-11 03:51:31 +00:00
|
|
|
|
"Path to your cvsrc file."
|
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(file))
|
|
|
|
|
|
|
|
|
|
(defvar cvs-shared-start 4
|
|
|
|
|
"Index of the first shared flag.
|
|
|
|
|
If set to 4, for instance, a numeric argument smaller than 4 will
|
|
|
|
|
select a non-shared flag, while a numeric argument greater than 3
|
|
|
|
|
will select a shared-flag.")
|
|
|
|
|
|
|
|
|
|
(defvar cvs-shared-flags (make-list cvs-shared-start nil)
|
|
|
|
|
"List of flags whose settings is shared among several commands.")
|
|
|
|
|
|
|
|
|
|
(defvar cvs-cvsroot nil
|
|
|
|
|
"*Specifies where the (current) cvs master repository is.
|
|
|
|
|
Overrides the environment variable $CVSROOT by sending \" -d dir\" to
|
|
|
|
|
all CVS commands. This switch is useful if you have multiple CVS
|
|
|
|
|
repositories. It can be set interactively with \\[cvs-change-cvsroot.]
|
|
|
|
|
There is no need to set this if $CVSROOT is set to a correct value.")
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-auto-remove-handled nil
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"If up-to-date files should be acknowledged automatically.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
If T, they will be removed from the *cvs* buffer after every command.
|
|
|
|
|
If DELAYED, they will be removed from the *cvs* buffer before every command.
|
|
|
|
|
If STATUS, they will only be removed after a `cvs-mode-status' command.
|
|
|
|
|
Else, they will never be automatically removed from the *cvs* buffer."
|
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(choice (const nil) (const status) (const delayed) (const t)))
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-auto-remove-directories 'handled
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"If ALL, directory entries will never be shown.
|
2002-06-29 19:52:51 +00:00
|
|
|
|
If HANDLED, only non-handled directories will be shown.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
If EMPTY, only non-empty directories will be shown."
|
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(choice (const :tag "No" nil) (const all) (const handled) (const empty)))
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-auto-revert t
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"Non-nil if changed files should automatically be reverted."
|
2000-03-11 03:51:31 +00:00
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(boolean))
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-sort-ignore-file t
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"Non-nil if `cvs-mode-ignore' should sort the .cvsignore automatically."
|
2000-03-11 03:51:31 +00:00
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(boolean))
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-force-dir-tag t
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"If non-nil, tagging can only be applied to directories.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
Tagging should generally be applied a directory at a time, but sometimes it is
|
|
|
|
|
useful to be able to tag a single file. The normal way to do that is to use
|
|
|
|
|
`cvs-mode-force-command' so as to temporarily override the restrictions,"
|
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(boolean))
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-default-ignore-marks nil
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"Non-nil if cvs mode commands should ignore any marked files.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
Normally they run on the files that are marked (with `cvs-mode-mark'),
|
|
|
|
|
or the file under the cursor if no files are marked. If this variable
|
|
|
|
|
is set to a non-nil value they will by default run on the file on the
|
2000-06-11 22:35:19 +00:00
|
|
|
|
current line. See also `cvs-invert-ignore-marks'"
|
2000-03-11 03:51:31 +00:00
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(boolean))
|
|
|
|
|
|
2003-02-05 23:12:41 +00:00
|
|
|
|
(defvar cvs-diff-ignore-marks t)
|
|
|
|
|
(make-obsolete-variable 'cvs-diff-ignore-marks
|
2008-04-18 10:31:27 +00:00
|
|
|
|
'cvs-invert-ignore-marks
|
|
|
|
|
"21.1")
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
|
|
|
|
(defcustom cvs-invert-ignore-marks
|
|
|
|
|
(let ((l ()))
|
|
|
|
|
(unless (equal cvs-diff-ignore-marks cvs-default-ignore-marks)
|
|
|
|
|
(push "diff" l))
|
|
|
|
|
(when (and cvs-force-dir-tag (not cvs-default-ignore-marks))
|
|
|
|
|
(push "tag" l))
|
|
|
|
|
l)
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"List of cvs commands that invert the default ignore-mark behavior.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
Commands in this set will use the opposite default from the one set
|
|
|
|
|
in `cvs-default-ignore-marks'."
|
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(set (const "diff")
|
|
|
|
|
(const "tag")
|
|
|
|
|
(const "ignore")))
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-confirm-removals t
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"Ask for confirmation before removing files.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
Non-nil means that PCL-CVS will ask confirmation before removing files
|
|
|
|
|
except for files whose content can readily be recovered from the repository.
|
2000-11-06 06:56:03 +00:00
|
|
|
|
A value of `list' means that the list of files to be deleted will be
|
2000-03-11 03:51:31 +00:00
|
|
|
|
displayed when asking for confirmation."
|
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(choice (const list)
|
|
|
|
|
(const t)
|
|
|
|
|
(const nil)))
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-add-default-message nil
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"Default message to use when adding files.
|
2001-12-20 18:59:32 +00:00
|
|
|
|
If set to nil, `cvs-mode-add' will always prompt for a message."
|
2000-03-11 03:51:31 +00:00
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(choice (const :tag "Prompt" nil)
|
|
|
|
|
(string)))
|
|
|
|
|
|
2003-02-05 23:12:41 +00:00
|
|
|
|
(defvar cvs-diff-buffer-name "*cvs-diff*")
|
|
|
|
|
(make-obsolete-variable 'cvs-diff-buffer-name
|
2008-04-18 10:31:27 +00:00
|
|
|
|
'cvs-buffer-name-alist
|
|
|
|
|
"21.1")
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
2000-06-11 22:35:19 +00:00
|
|
|
|
(defcustom cvs-find-file-and-jump nil
|
2000-03-11 03:51:31 +00:00
|
|
|
|
"Jump to the modified area when finding a file.
|
|
|
|
|
If non-nil, `cvs-mode-file-file' will place the cursor at the beginning of
|
|
|
|
|
the modified area. If the file is not locally modified, this will obviously
|
|
|
|
|
have no effect."
|
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(boolean))
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-buffer-name-alist
|
|
|
|
|
'(("diff" cvs-diff-buffer-name diff-mode)
|
|
|
|
|
("status" "*cvs-info*" cvs-status-mode)
|
2001-03-07 00:18:27 +00:00
|
|
|
|
("tree" "*cvs-info*" cvs-status-mode)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
("message" "*cvs-commit*" nil log-edit)
|
|
|
|
|
("log" "*cvs-info*" log-view-mode))
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"Buffer name and mode to be used for each command.
|
2000-03-11 03:51:31 +00:00
|
|
|
|
This is a list of elements of the form
|
|
|
|
|
|
|
|
|
|
(CMD BUFNAME MODE &optional POSTPROC)
|
|
|
|
|
|
|
|
|
|
CMD is the name of the command.
|
|
|
|
|
BUFNAME is an expression that should evaluate to a string used as
|
|
|
|
|
a buffer name. It can use the variable CMD if it wants to.
|
|
|
|
|
MODE is the command to use to setup the buffer.
|
|
|
|
|
POSTPROC is a function that should be executed when the command terminates
|
|
|
|
|
|
|
|
|
|
The CMD used for `cvs-mode-commit' is \"message\". For that special
|
|
|
|
|
case, POSTPROC is called just after MODE with special arguments."
|
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(repeat
|
|
|
|
|
(list (choice (const "diff")
|
|
|
|
|
(const "status")
|
|
|
|
|
(const "tree")
|
|
|
|
|
(const "message")
|
|
|
|
|
(const "log")
|
|
|
|
|
(string))
|
|
|
|
|
(choice (const "*vc-diff*")
|
|
|
|
|
(const "*cvs-info*")
|
|
|
|
|
(const "*cvs-commit*")
|
|
|
|
|
(const (expand-file-name "*cvs-commit*"))
|
|
|
|
|
(const (format "*cvs-%s*" cmd))
|
|
|
|
|
(const (expand-file-name (format "*cvs-%s*" cmd)))
|
|
|
|
|
(sexp :value "my-cvs-info-buffer")
|
|
|
|
|
(const nil))
|
|
|
|
|
(choice (function-item diff-mode)
|
|
|
|
|
(function-item cvs-edit-mode)
|
|
|
|
|
(function-item cvs-status-mode)
|
|
|
|
|
function
|
|
|
|
|
(const nil))
|
|
|
|
|
(set :inline t
|
|
|
|
|
(choice (function-item cvs-status-cvstrees)
|
|
|
|
|
(function-item cvs-status-trees)
|
|
|
|
|
function)))))
|
|
|
|
|
|
|
|
|
|
(defvar cvs-buffer-name '(expand-file-name "*cvs*" dir) ;; "*cvs*"
|
|
|
|
|
"Name of the cvs buffer.
|
|
|
|
|
This expression will be evaluated in an environment where DIR is set to
|
|
|
|
|
the directory name of the cvs buffer.")
|
|
|
|
|
|
2006-07-07 15:39:53 +00:00
|
|
|
|
(defvar cvs-temp-buffer-name
|
|
|
|
|
;; Was '(expand-file-name " *cvs-tmp*" dir), but that causes them to
|
|
|
|
|
;; become non-hidden if uniquification is done `forward'.
|
|
|
|
|
" *cvs-tmp*"
|
2000-03-11 03:51:31 +00:00
|
|
|
|
"*Name of the cvs temporary buffer.
|
|
|
|
|
Output from cvs is placed here for asynchronous commands.")
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-idiff-imerge-handlers
|
|
|
|
|
(if (fboundp 'ediff)
|
|
|
|
|
'(cvs-ediff-diff . cvs-ediff-merge)
|
|
|
|
|
'(cvs-emerge-diff . cvs-emerge-merge))
|
2006-09-12 15:43:20 +00:00
|
|
|
|
"Pair of functions to be used for resp. diff'ing and merg'ing interactively."
|
2000-03-11 03:51:31 +00:00
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(choice (const :tag "Ediff" (cvs-ediff-diff . cvs-ediff-merge))
|
|
|
|
|
(const :tag "Emerge" (cvs-emerge-diff . cvs-emerge-merge))))
|
|
|
|
|
|
|
|
|
|
(defvar cvs-mode-hook nil
|
|
|
|
|
"Run after `cvs-mode' was setup.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;
|
|
|
|
|
;;;; Internal variables, used in the process buffer.
|
|
|
|
|
;;;;
|
|
|
|
|
|
|
|
|
|
(defvar cvs-postprocess nil
|
|
|
|
|
"(Buffer local) what to do once the process exits.")
|
|
|
|
|
|
|
|
|
|
;;;;
|
|
|
|
|
;;;; Internal variables for the *cvs* buffer.
|
|
|
|
|
;;;;
|
|
|
|
|
|
|
|
|
|
(defcustom cvs-reuse-cvs-buffer 'subdir
|
|
|
|
|
"When to reuse an existing cvs buffer.
|
|
|
|
|
Alternatives are:
|
|
|
|
|
CURRENT: just reuse the current buffer if it is a cvs buffer
|
|
|
|
|
SAMEDIR: reuse any cvs buffer displaying the same directory
|
|
|
|
|
SUBDIR: or reuse any cvs buffer displaying any sub- or super- directory
|
|
|
|
|
ALWAYS: reuse any cvs buffer."
|
|
|
|
|
:group 'pcl-cvs
|
|
|
|
|
:type '(choice (const always) (const subdir) (const samedir) (const current)))
|
|
|
|
|
|
|
|
|
|
(defvar cvs-temp-buffer nil
|
|
|
|
|
"(Buffer local) The temporary buffer associated with this *cvs* buffer.")
|
|
|
|
|
|
|
|
|
|
(defvar cvs-lock-file nil
|
|
|
|
|
"Full path to a lock file that CVS is waiting for (or was waiting for).
|
|
|
|
|
This variable is buffer local and only used in the *cvs* buffer.")
|
|
|
|
|
|
|
|
|
|
(defvar cvs-lock-file-regexp "^#cvs\\.\\([trw]fl\\.[-.a-z0-9]+\\|lock\\)\\'"
|
|
|
|
|
"Regexp matching the possible names of locks in the CVS repository.")
|
|
|
|
|
|
|
|
|
|
(defconst cvs-cursor-column 22
|
|
|
|
|
"Column to position cursor in in `cvs-mode'.")
|
|
|
|
|
|
|
|
|
|
;;;;
|
|
|
|
|
;;;; Global internal variables
|
|
|
|
|
;;;;
|
|
|
|
|
|
|
|
|
|
(defconst cvs-vendor-branch "1.1.1"
|
|
|
|
|
"The default branch used by CVS for vendor code.")
|
|
|
|
|
|
|
|
|
|
(easy-mmode-defmap cvs-mode-diff-map
|
2000-12-10 21:17:14 +00:00
|
|
|
|
'(("E" "imerge" . cvs-mode-imerge)
|
|
|
|
|
("=" . cvs-mode-diff)
|
|
|
|
|
("e" "idiff" . cvs-mode-idiff)
|
|
|
|
|
("2" "other" . cvs-mode-idiff-other)
|
|
|
|
|
("d" "diff" . cvs-mode-diff)
|
|
|
|
|
("b" "backup" . cvs-mode-diff-backup)
|
|
|
|
|
("h" "head" . cvs-mode-diff-head)
|
2004-07-02 04:34:50 +00:00
|
|
|
|
("r" "repository" . cvs-mode-diff-repository)
|
2004-06-10 08:29:12 +00:00
|
|
|
|
("y" "yesterday" . cvs-mode-diff-yesterday)
|
2000-12-10 21:17:14 +00:00
|
|
|
|
("v" "vendor" . cvs-mode-diff-vendor))
|
|
|
|
|
"Keymap for diff-related operations in `cvs-mode'."
|
|
|
|
|
:name "Diff")
|
2001-05-18 16:59:52 +00:00
|
|
|
|
;; This is necessary to allow correct handling of \\[cvs-mode-diff-map]
|
2000-06-11 22:35:19 +00:00
|
|
|
|
;; in substitute-command-keys.
|
|
|
|
|
(fset 'cvs-mode-diff-map cvs-mode-diff-map)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
|
|
|
|
(easy-mmode-defmap cvs-mode-map
|
|
|
|
|
;;(define-prefix-command 'cvs-mode-map-diff-prefix)
|
|
|
|
|
;;(define-prefix-command 'cvs-mode-map-control-c-prefix)
|
2008-04-24 05:46:50 +00:00
|
|
|
|
'(;; various
|
2001-05-11 20:50:37 +00:00
|
|
|
|
;; (undo . cvs-mode-undo)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
("?" . cvs-help)
|
|
|
|
|
("h" . cvs-help)
|
|
|
|
|
("q" . cvs-bury-buffer)
|
2001-05-18 16:59:52 +00:00
|
|
|
|
("z" . kill-this-buffer)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
("F" . cvs-mode-set-flags)
|
2002-11-12 21:04:48 +00:00
|
|
|
|
;; ("\M-f" . cvs-mode-force-command)
|
2002-06-29 19:52:51 +00:00
|
|
|
|
("!" . cvs-mode-force-command)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
("\C-c\C-c" . cvs-mode-kill-process)
|
|
|
|
|
;; marking
|
|
|
|
|
("m" . cvs-mode-mark)
|
|
|
|
|
("M" . cvs-mode-mark-all-files)
|
2001-04-13 15:20:33 +00:00
|
|
|
|
("S" . cvs-mode-mark-on-state)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
("u" . cvs-mode-unmark)
|
|
|
|
|
("\C-?". cvs-mode-unmark-up)
|
|
|
|
|
("%" . cvs-mode-mark-matching-files)
|
|
|
|
|
("T" . cvs-mode-toggle-marks)
|
|
|
|
|
("\M-\C-?" . cvs-mode-unmark-all-files)
|
|
|
|
|
;; navigation keys
|
|
|
|
|
(" " . cvs-mode-next-line)
|
|
|
|
|
("n" . cvs-mode-next-line)
|
|
|
|
|
("p" . cvs-mode-previous-line)
|
2007-09-22 23:27:53 +00:00
|
|
|
|
("\t" . cvs-mode-next-line)
|
|
|
|
|
([backtab] . cvs-mode-previous-line)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
;; M- keys are usually those that operate on modules
|
|
|
|
|
;;("\M-C". cvs-mode-rcs2log) ; i.e. "Create a ChangeLog"
|
|
|
|
|
;;("\M-t". cvs-rtag)
|
|
|
|
|
;;("\M-l". cvs-rlog)
|
|
|
|
|
("\M-c". cvs-checkout)
|
|
|
|
|
("\M-e". cvs-examine)
|
|
|
|
|
("g" . cvs-mode-revert-buffer)
|
|
|
|
|
("\M-u". cvs-update)
|
|
|
|
|
("\M-s". cvs-status)
|
|
|
|
|
;; diff commands
|
|
|
|
|
("=" . cvs-mode-diff)
|
2000-06-11 22:35:19 +00:00
|
|
|
|
("d" . cvs-mode-diff-map)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
;; keys that operate on individual files
|
2001-10-31 17:39:07 +00:00
|
|
|
|
("\C-k" . cvs-mode-acknowledge)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
("A" . cvs-mode-add-change-log-entry-other-window)
|
|
|
|
|
;;("B" . cvs-mode-byte-compile-files)
|
|
|
|
|
("C" . cvs-mode-commit-setup)
|
|
|
|
|
("O" . cvs-mode-update)
|
|
|
|
|
("U" . cvs-mode-undo)
|
|
|
|
|
("I" . cvs-mode-insert)
|
|
|
|
|
("a" . cvs-mode-add)
|
|
|
|
|
("b" . cvs-set-branch-prefix)
|
|
|
|
|
("B" . cvs-set-secondary-branch-prefix)
|
|
|
|
|
("c" . cvs-mode-commit)
|
|
|
|
|
("e" . cvs-mode-examine)
|
|
|
|
|
("f" . cvs-mode-find-file)
|
2001-10-31 17:39:07 +00:00
|
|
|
|
("\C-m" . cvs-mode-find-file)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
("i" . cvs-mode-ignore)
|
|
|
|
|
("l" . cvs-mode-log)
|
|
|
|
|
("o" . cvs-mode-find-file-other-window)
|
|
|
|
|
("r" . cvs-mode-remove)
|
|
|
|
|
("s" . cvs-mode-status)
|
|
|
|
|
("t" . cvs-mode-tag)
|
2004-10-15 23:35:58 +00:00
|
|
|
|
("v" . cvs-mode-view-file)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
("x" . cvs-mode-remove-handled)
|
|
|
|
|
;; cvstree bindings
|
|
|
|
|
("+" . cvs-mode-tree)
|
|
|
|
|
;; mouse bindings
|
2000-06-11 22:35:19 +00:00
|
|
|
|
([mouse-2] . cvs-mode-find-file)
|
2004-12-17 15:17:35 +00:00
|
|
|
|
([follow-link] . (lambda (pos)
|
2005-06-10 09:13:25 +00:00
|
|
|
|
(if (eq (get-char-property pos 'face) 'cvs-filename) t)))
|
2000-03-11 03:51:31 +00:00
|
|
|
|
([(down-mouse-3)] . cvs-menu)
|
2001-04-13 15:20:33 +00:00
|
|
|
|
;; dired-like bindings
|
|
|
|
|
("\C-o" . cvs-mode-display-file)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
;; Emacs-21 toolbar
|
|
|
|
|
;;([tool-bar item1] . (menu-item "Examine" cvs-examine :image (image :file "/usr/share/icons/xpaint.xpm" :type xpm)))
|
|
|
|
|
;;([tool-bar item2] . (menu-item "Update" cvs-update :image (image :file "/usr/share/icons/mail1.xpm" :type xpm)))
|
|
|
|
|
)
|
|
|
|
|
"Keymap for `cvs-mode'."
|
2008-04-24 05:46:50 +00:00
|
|
|
|
:dense t
|
|
|
|
|
:suppress t)
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
|
|
|
|
(fset 'cvs-mode-map cvs-mode-map)
|
|
|
|
|
|
2000-12-08 16:58:37 +00:00
|
|
|
|
(easy-menu-define cvs-menu cvs-mode-map "Menu used in `cvs-mode'."
|
|
|
|
|
'("CVS"
|
2008-01-21 23:10:32 +00:00
|
|
|
|
["Open file" cvs-mode-find-file t]
|
|
|
|
|
["Open in other window" cvs-mode-find-file-other-window t]
|
2001-04-13 15:20:33 +00:00
|
|
|
|
["Display in other window" cvs-mode-display-file t]
|
2000-12-08 16:58:37 +00:00
|
|
|
|
["Interactive merge" cvs-mode-imerge t]
|
|
|
|
|
("View diff"
|
|
|
|
|
["Interactive diff" cvs-mode-idiff t]
|
|
|
|
|
["Current diff" cvs-mode-diff t]
|
|
|
|
|
["Diff with head" cvs-mode-diff-head t]
|
|
|
|
|
["Diff with vendor" cvs-mode-diff-vendor t]
|
2008-01-21 23:10:32 +00:00
|
|
|
|
["Diff against yesterday" cvs-mode-diff-yesterday t]
|
2000-12-08 16:58:37 +00:00
|
|
|
|
["Diff with backup" cvs-mode-diff-backup t])
|
|
|
|
|
["View log" cvs-mode-log t]
|
|
|
|
|
["View status" cvs-mode-status t]
|
|
|
|
|
["View tag tree" cvs-mode-tree t]
|
|
|
|
|
"----"
|
|
|
|
|
["Insert" cvs-mode-insert]
|
|
|
|
|
["Update" cvs-mode-update (cvs-enabledp 'update)]
|
|
|
|
|
["Re-examine" cvs-mode-examine t]
|
|
|
|
|
["Commit" cvs-mode-commit-setup (cvs-enabledp 'commit)]
|
2004-02-11 20:01:12 +00:00
|
|
|
|
["Tag" cvs-mode-tag (cvs-enabledp (when cvs-force-dir-tag 'tag))]
|
2000-12-08 16:58:37 +00:00
|
|
|
|
["Undo changes" cvs-mode-undo (cvs-enabledp 'undo)]
|
|
|
|
|
["Add" cvs-mode-add (cvs-enabledp 'add)]
|
|
|
|
|
["Remove" cvs-mode-remove (cvs-enabledp 'remove)]
|
|
|
|
|
["Ignore" cvs-mode-ignore (cvs-enabledp 'ignore)]
|
|
|
|
|
["Add ChangeLog" cvs-mode-add-change-log-entry-other-window t]
|
|
|
|
|
"----"
|
2005-06-21 13:39:27 +00:00
|
|
|
|
["Mark" cvs-mode-mark t]
|
2000-12-08 16:58:37 +00:00
|
|
|
|
["Mark all" cvs-mode-mark-all-files t]
|
2001-04-13 15:20:33 +00:00
|
|
|
|
["Mark by regexp..." cvs-mode-mark-matching-files t]
|
|
|
|
|
["Mark by state..." cvs-mode-mark-on-state t]
|
2005-06-21 13:39:27 +00:00
|
|
|
|
["Unmark" cvs-mode-unmark t]
|
2000-12-08 16:58:37 +00:00
|
|
|
|
["Unmark all" cvs-mode-unmark-all-files t]
|
|
|
|
|
["Hide handled" cvs-mode-remove-handled t]
|
|
|
|
|
"----"
|
2008-01-21 23:10:32 +00:00
|
|
|
|
["PCL-CVS Manual" (lambda () (interactive)
|
|
|
|
|
(info "(pcl-cvs)Top")) t]
|
|
|
|
|
"----"
|
2000-12-08 16:58:37 +00:00
|
|
|
|
["Quit" cvs-mode-quit t]))
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
2001-05-18 16:59:52 +00:00
|
|
|
|
;;;;
|
2000-03-11 03:51:31 +00:00
|
|
|
|
;;;; CVS-Minor mode
|
2001-05-18 16:59:52 +00:00
|
|
|
|
;;;;
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
|
|
|
|
(defcustom cvs-minor-mode-prefix "\C-xc"
|
|
|
|
|
"Prefix key for the `cvs-mode' bindings in `cvs-minor-mode'."
|
|
|
|
|
:group 'pcl-cvs)
|
|
|
|
|
|
|
|
|
|
(easy-mmode-defmap cvs-minor-mode-map
|
2002-11-12 21:04:48 +00:00
|
|
|
|
`((,cvs-minor-mode-prefix . cvs-mode-map)
|
|
|
|
|
("e" . (menu-item nil cvs-mode-edit-log
|
|
|
|
|
:filter (lambda (x) (if (derived-mode-p 'log-view-mode) x)))))
|
2000-12-10 21:17:14 +00:00
|
|
|
|
"Keymap for `cvs-minor-mode', used in buffers related to PCL-CVS.")
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
|
|
|
|
(defvar cvs-buffer nil
|
|
|
|
|
"(Buffer local) The *cvs* buffer associated with this buffer.")
|
|
|
|
|
(put 'cvs-buffer 'permanent-local t)
|
|
|
|
|
;;(make-variable-buffer-local 'cvs-buffer)
|
|
|
|
|
|
|
|
|
|
(defvar cvs-minor-wrap-function nil
|
|
|
|
|
"Function to call when switching to the *cvs* buffer.
|
|
|
|
|
Takes two arguments:
|
|
|
|
|
- a *cvs* buffer.
|
|
|
|
|
- a zero-arg function which is guaranteed not to switch buffer.
|
|
|
|
|
It is expected to call the function.")
|
|
|
|
|
;;(make-variable-buffer-local 'cvs-minor-wrap-function)
|
|
|
|
|
|
|
|
|
|
(defvar cvs-minor-current-files)
|
|
|
|
|
;;"Current files in a `cvs-minor-mode' buffer."
|
|
|
|
|
;; This should stay `void' because we want to be able to tell the difference
|
|
|
|
|
;; between an empty list and no list at all.
|
|
|
|
|
|
|
|
|
|
(defconst cvs-pcl-cvs-dirchange-re "^pcl-cvs: descending directory \\(.*\\)$")
|
|
|
|
|
|
2001-05-18 16:59:52 +00:00
|
|
|
|
;;;;
|
2000-03-22 02:57:23 +00:00
|
|
|
|
;;;; autoload the global menu
|
2001-05-18 16:59:52 +00:00
|
|
|
|
;;;;
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
2000-03-22 02:57:23 +00:00
|
|
|
|
;;;###autoload
|
|
|
|
|
(defvar cvs-global-menu
|
|
|
|
|
(let ((m (make-sparse-keymap "PCL-CVS")))
|
|
|
|
|
(define-key m [status]
|
2009-10-23 05:15:26 +00:00
|
|
|
|
`(menu-item ,(purecopy "Directory Status") cvs-status
|
|
|
|
|
:help ,(purecopy "A more verbose status of a workarea")))
|
2000-03-22 02:57:23 +00:00
|
|
|
|
(define-key m [checkout]
|
2009-10-23 05:15:26 +00:00
|
|
|
|
`(menu-item ,(purecopy "Checkout Module") cvs-checkout
|
|
|
|
|
:help ,(purecopy "Check out a module from the repository")))
|
2000-03-22 02:57:23 +00:00
|
|
|
|
(define-key m [update]
|
2009-10-23 05:15:26 +00:00
|
|
|
|
`(menu-item ,(purecopy "Update Directory") cvs-update
|
|
|
|
|
:help ,(purecopy "Fetch updates from the repository")))
|
2000-03-22 02:57:23 +00:00
|
|
|
|
(define-key m [examine]
|
2009-10-23 05:15:26 +00:00
|
|
|
|
`(menu-item ,(purecopy "Examine Directory") cvs-examine
|
|
|
|
|
:help ,(purecopy "Examine the current state of a workarea")))
|
2003-06-16 20:21:42 +00:00
|
|
|
|
(fset 'cvs-global-menu m)))
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;; cvs-1.10 and above can take file arguments in other directories
|
|
|
|
|
;; while others need to be executed once per directory
|
|
|
|
|
(defvar cvs-execute-single-dir
|
2005-09-14 16:19:18 +00:00
|
|
|
|
(if (or (null cvs-version)
|
|
|
|
|
(or (>= (cdr cvs-version) 10) (> (car cvs-version) 1)))
|
|
|
|
|
;; Supposedly some recent versions of CVS output some directory info
|
|
|
|
|
;; as they recurse downthe tree, but it's not good enough in the case
|
|
|
|
|
;; where we run "cvs status foo bar/foo".
|
2000-03-11 03:51:31 +00:00
|
|
|
|
'("status")
|
|
|
|
|
t)
|
|
|
|
|
"Whether cvs commands should be executed a directory at a time.
|
|
|
|
|
If a list, specifies for which commands the single-dir mode should be used.
|
|
|
|
|
If T, single-dir mode should be used for all operations.
|
|
|
|
|
|
|
|
|
|
CVS versions before 1.10 did not allow passing them arguments in different
|
|
|
|
|
directories, so pcl-cvs checks what version you're using to determine
|
|
|
|
|
whether to use the new feature or not.
|
|
|
|
|
Sadly, even with a new cvs executable, if you connect to an older cvs server
|
|
|
|
|
\(typically a cvs-1.9 on the server), the old restriction applies. In such
|
|
|
|
|
a case the sanity check made by pcl-cvs fails and you will have to manually
|
2001-12-20 18:59:32 +00:00
|
|
|
|
set this variable to t (until the cvs server is upgraded).
|
2000-03-11 03:51:31 +00:00
|
|
|
|
When the above problem occurs, pcl-cvs should (hopefully) catch cvs' error
|
2005-09-14 16:19:18 +00:00
|
|
|
|
message and replace it with a message telling you to change this variable.")
|
2000-03-11 03:51:31 +00:00
|
|
|
|
|
|
|
|
|
;;
|
|
|
|
|
(provide 'pcvs-defs)
|
|
|
|
|
|
2004-10-11 14:58:54 +00:00
|
|
|
|
;; arch-tag: c7c701d0-d1d4-4aa9-a302-007bb03aca5e
|
2001-07-16 07:46:48 +00:00
|
|
|
|
;;; pcvs-defs.el ends here
|