X-Git-Url: https://git.hcoop.net/bpt/emacs.git/blobdiff_plain/5fe502289c1f087547ffce6d1e7d310d899bffc0..739d627a477191703f57ca4cfbd1bf8dc25625f9:/lisp/pcvs-defs.el diff --git a/lisp/pcvs-defs.el b/lisp/pcvs-defs.el index dadb194abb..a4e7fde0f5 100644 --- a/lisp/pcvs-defs.el +++ b/lisp/pcvs-defs.el @@ -1,16 +1,16 @@ ;;; pcvs-defs.el --- variable definitions for PCL-CVS -;; Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000, 03, 2004 -;; Free Software Foundation, Inc. +;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +;; 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -;; Author: Stefan Monnier +;; Author: Stefan Monnier ;; Keywords: pcl-cvs ;; This file is part of GNU Emacs. ;; GNU Emacs is free software; you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) +;; the Free Software Foundation; either version 3, or (at your option) ;; any later version. ;; GNU Emacs is distributed in the hope that it will be useful, @@ -20,8 +20,8 @@ ;; You should have received a copy of the GNU General Public License ;; along with GNU Emacs; see the file COPYING. If not, write to the -;; Free Software Foundation, Inc., 59 Temple Place - Suite 330, -;; Boston, MA 02111-1307, USA. +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. ;;; Commentary: @@ -38,11 +38,14 @@ "*Name or full path of the cvs executable.") (defvar cvs-version + ;; With the divergence of the CVSNT codebase and version numbers, this is + ;; not really good any more. (ignore-errors (with-temp-buffer (call-process cvs-program nil t nil "-v") (goto-char (point-min)) - (when (re-search-forward "(CVS) \\([0-9]+\\)\\.\\([0-9]+\\)" nil t) + (when (re-search-forward "(CVS\\(NT\\)?) \\([0-9]+\\)\\.\\([0-9]+\\)" + nil t) (cons (string-to-number (match-string 1)) (string-to-number (match-string 2)))))) "*Version of `cvs' installed on your system. @@ -95,7 +98,7 @@ 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 - "*If up-to-date files should be acknowledged automatically. + "If up-to-date files should be acknowledged automatically. 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. @@ -104,24 +107,24 @@ Else, they will never be automatically removed from the *cvs* buffer." :type '(choice (const nil) (const status) (const delayed) (const t))) (defcustom cvs-auto-remove-directories 'handled - "*If ALL, directory entries will never be shown. + "If ALL, directory entries will never be shown. If HANDLED, only non-handled directories will be shown. 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 - "*Non-nil if changed files should automatically be reverted." + "Non-nil if changed files should automatically be reverted." :group 'pcl-cvs :type '(boolean)) (defcustom cvs-sort-ignore-file t - "*Non-nil if `cvs-mode-ignore' should sort the .cvsignore automatically." + "Non-nil if `cvs-mode-ignore' should sort the .cvsignore automatically." :group 'pcl-cvs :type '(boolean)) (defcustom cvs-force-dir-tag t - "*If non-nil, tagging can only be applied to directories. + "If non-nil, tagging can only be applied to directories. 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," @@ -129,7 +132,7 @@ useful to be able to tag a single file. The normal way to do that is to use :type '(boolean)) (defcustom cvs-default-ignore-marks nil - "*Non-nil if cvs mode commands should ignore any marked files. + "Non-nil if cvs mode commands should ignore any marked files. 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 @@ -148,7 +151,7 @@ current line. See also `cvs-invert-ignore-marks'" (when (and cvs-force-dir-tag (not cvs-default-ignore-marks)) (push "tag" l)) l) - "*List of cvs commands that invert the default ignore-mark behavior. + "List of cvs commands that invert the default ignore-mark behavior. Commands in this set will use the opposite default from the one set in `cvs-default-ignore-marks'." :group 'pcl-cvs @@ -157,7 +160,7 @@ in `cvs-default-ignore-marks'." (const "ignore"))) (defcustom cvs-confirm-removals t - "*Ask for confirmation before removing files. + "Ask for confirmation before removing files. Non-nil means that PCL-CVS will ask confirmation before removing files except for files whose content can readily be recovered from the repository. A value of `list' means that the list of files to be deleted will be @@ -168,7 +171,7 @@ displayed when asking for confirmation." (const nil))) (defcustom cvs-add-default-message nil - "*Default message to use when adding files. + "Default message to use when adding files. If set to nil, `cvs-mode-add' will always prompt for a message." :group 'pcl-cvs :type '(choice (const :tag "Prompt" nil) @@ -192,7 +195,7 @@ have no effect." ("tree" "*cvs-info*" cvs-status-mode) ("message" "*cvs-commit*" nil log-edit) ("log" "*cvs-info*" log-view-mode)) - "*Buffer name and mode to be used for each command. + "Buffer name and mode to be used for each command. This is a list of elements of the form (CMD BUFNAME MODE &optional POSTPROC) @@ -236,7 +239,10 @@ The CMD used for `cvs-mode-commit' is \"message\". For that special This expression will be evaluated in an environment where DIR is set to the directory name of the cvs buffer.") -(defvar cvs-temp-buffer-name '(expand-file-name " *cvs-tmp*" dir) +(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*" "*Name of the cvs temporary buffer. Output from cvs is placed here for asynchronous commands.") @@ -244,14 +250,11 @@ Output from cvs is placed here for asynchronous commands.") (if (fboundp 'ediff) '(cvs-ediff-diff . cvs-ediff-merge) '(cvs-emerge-diff . cvs-emerge-merge)) - "*Pair of functions to be used for resp. diff'ing and merg'ing interactively." + "Pair of functions to be used for resp. diff'ing and merg'ing interactively." :group 'pcl-cvs :type '(choice (const :tag "Ediff" (cvs-ediff-diff . cvs-ediff-merge)) (const :tag "Emerge" (cvs-emerge-diff . cvs-emerge-merge)))) -(defvar pcl-cvs-load-hook nil - "Run after loading pcl-cvs.") - (defvar cvs-mode-hook nil "Run after `cvs-mode' was setup.") @@ -305,6 +308,8 @@ This variable is buffer local and only used in the *cvs* buffer.") ("d" "diff" . cvs-mode-diff) ("b" "backup" . cvs-mode-diff-backup) ("h" "head" . cvs-mode-diff-head) + ("r" "repository" . cvs-mode-diff-repository) + ("y" "yesterday" . cvs-mode-diff-yesterday) ("v" "vendor" . cvs-mode-diff-vendor)) "Keymap for diff-related operations in `cvs-mode'." :name "Diff") @@ -342,6 +347,8 @@ This variable is buffer local and only used in the *cvs* buffer.") (" " . cvs-mode-next-line) ("n" . cvs-mode-next-line) ("p" . cvs-mode-previous-line) + ("\t" . cvs-mode-next-line) + ([backtab] . cvs-mode-previous-line) ;; M- keys are usually those that operate on modules ;;("\M-C". cvs-mode-rcs2log) ; i.e. "Create a ChangeLog" ;;("\M-t". cvs-rtag) @@ -375,12 +382,14 @@ This variable is buffer local and only used in the *cvs* buffer.") ("r" . cvs-mode-remove) ("s" . cvs-mode-status) ("t" . cvs-mode-tag) - ;;("v" . cvs-mode-diff-vendor) + ("v" . cvs-mode-view-file) ("x" . cvs-mode-remove-handled) ;; cvstree bindings ("+" . cvs-mode-tree) ;; mouse bindings ([mouse-2] . cvs-mode-find-file) + ([follow-link] . (lambda (pos) + (if (eq (get-char-property pos 'face) 'cvs-filename) t))) ([(down-mouse-3)] . cvs-menu) ;; dired-like bindings ("\C-o" . cvs-mode-display-file) @@ -395,8 +404,8 @@ This variable is buffer local and only used in the *cvs* buffer.") (easy-menu-define cvs-menu cvs-mode-map "Menu used in `cvs-mode'." '("CVS" - ["Open file.." cvs-mode-find-file t] - [" ..other window" cvs-mode-find-file-other-window t] + ["Open file" cvs-mode-find-file t] + ["Open in other window" cvs-mode-find-file-other-window t] ["Display in other window" cvs-mode-display-file t] ["Interactive merge" cvs-mode-imerge t] ("View diff" @@ -404,6 +413,7 @@ This variable is buffer local and only used in the *cvs* buffer.") ["Current diff" cvs-mode-diff t] ["Diff with head" cvs-mode-diff-head t] ["Diff with vendor" cvs-mode-diff-vendor t] + ["Diff against yesterday" cvs-mode-diff-yesterday t] ["Diff with backup" cvs-mode-diff-backup t]) ["View log" cvs-mode-log t] ["View status" cvs-mode-status t] @@ -420,12 +430,17 @@ This variable is buffer local and only used in the *cvs* buffer.") ["Ignore" cvs-mode-ignore (cvs-enabledp 'ignore)] ["Add ChangeLog" cvs-mode-add-change-log-entry-other-window t] "----" + ["Mark" cvs-mode-mark t] ["Mark all" cvs-mode-mark-all-files t] ["Mark by regexp..." cvs-mode-mark-matching-files t] ["Mark by state..." cvs-mode-mark-on-state t] + ["Unmark" cvs-mode-unmark t] ["Unmark all" cvs-mode-unmark-all-files t] ["Hide handled" cvs-mode-remove-handled t] "----" + ["PCL-CVS Manual" (lambda () (interactive) + (info "(pcl-cvs)Top")) t] + "----" ["Quit" cvs-mode-quit t])) ;;;; @@ -487,8 +502,11 @@ It is expected to call the function.") ;; 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 - (if (and (consp cvs-version) - (or (>= (cdr cvs-version) 10) (> (car cvs-version) 1))) + (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". '("status") t) "Whether cvs commands should be executed a directory at a time. @@ -503,10 +521,10 @@ Sadly, even with a new cvs executable, if you connect to an older cvs server a case the sanity check made by pcl-cvs fails and you will have to manually set this variable to t (until the cvs server is upgraded). When the above problem occurs, pcl-cvs should (hopefully) catch cvs' error -message and replace it with a message tell you to change this variable.") +message and replace it with a message telling you to change this variable.") ;; (provide 'pcvs-defs) -;;; arch-tag: c7c701d0-d1d4-4aa9-a302-007bb03aca5e +;; arch-tag: c7c701d0-d1d4-4aa9-a302-007bb03aca5e ;;; pcvs-defs.el ends here