X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/28037ecf6a6c08777ffc15628d7841e41de25376..65f21967e400fa7e565b15df63a55ab0ee4ec876:/lisp/pcvs-defs.el diff --git a/lisp/pcvs-defs.el b/lisp/pcvs-defs.el index 00b534a837..8f7de91326 100644 --- a/lisp/pcvs-defs.el +++ b/lisp/pcvs-defs.el @@ -1,10 +1,10 @@ ;;; pcvs-defs.el --- variable definitions for PCL-CVS -;; Copyright (C) 1991, 92, 93, 94, 95, 96, 97, 98, 99, 2000 Free Software Foundation, Inc. +;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +;; 2000, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: pcl-cvs -;; Revision: $Id: pcvs-defs.el,v 1.11 2001/03/07 00:18:27 monnier Exp $ ;; This file is part of GNU Emacs. @@ -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" nil t nil "-v") + (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. @@ -105,7 +108,7 @@ Else, they will never be automatically removed from the *cvs* buffer." (defcustom cvs-auto-remove-directories 'handled "*If ALL, directory entries will never be shown. -If HANLDED, only non-handled directories will 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))) @@ -137,8 +140,9 @@ current line. See also `cvs-invert-ignore-marks'" :group 'pcl-cvs :type '(boolean)) -(defvar cvs-diff-ignore-marks t - "Obsolete: use `cvs-invert-ignore-marks' instead.") +(defvar cvs-diff-ignore-marks t) +(make-obsolete-variable 'cvs-diff-ignore-marks + 'cvs-invert-ignore-marks) (defcustom cvs-invert-ignore-marks (let ((l ())) @@ -168,13 +172,14 @@ displayed when asking for confirmation." (defcustom cvs-add-default-message nil "*Default message to use when adding files. -If set to NIL, `cvs-mode-add' will always prompt for a message." +If set to nil, `cvs-mode-add' will always prompt for a message." :group 'pcl-cvs :type '(choice (const :tag "Prompt" nil) (string))) -(defvar cvs-diff-buffer-name "*cvs-diff*" - "Obsolete variable: use `cvs-buffer-name-alist' instead.") +(defvar cvs-diff-buffer-name "*cvs-diff*") +(make-obsolete-variable 'cvs-diff-buffer-name + 'cvs-buffer-name-alist) (defcustom cvs-find-file-and-jump nil "Jump to the modified area when finding a file. @@ -247,9 +252,6 @@ Output from cvs is placed here for asynchronous commands.") :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.") @@ -303,28 +305,31 @@ 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") -;; This is necessary to allow correct handling of \\[cvs-mode-diff-map] +;; This is necessary to allow correct handling of \\[cvs-mode-diff-map] ;; in substitute-command-keys. (fset 'cvs-mode-diff-map cvs-mode-diff-map) (easy-mmode-defmap cvs-mode-map ;;(define-prefix-command 'cvs-mode-map-diff-prefix) ;;(define-prefix-command 'cvs-mode-map-control-c-prefix) - `(;; simulate `suppress-keymap' + '(;; simulate `suppress-keymap' (self-insert-command . undefined) (("0" "1" "2" "3" "4" "5" "6" "7" "8" "9") . digit-argument) ("-" . negative-argument) ;; various - (undo . cvs-mode-undo) + ;; (undo . cvs-mode-undo) ("?" . cvs-help) ("h" . cvs-help) ("q" . cvs-bury-buffer) - ;;("Q" . kill-buffer) + ("z" . kill-this-buffer) ("F" . cvs-mode-set-flags) - ("\M-f" . cvs-mode-force-command) + ;; ("\M-f" . cvs-mode-force-command) + ("!" . cvs-mode-force-command) ("\C-c\C-c" . cvs-mode-kill-process) ;; marking ("m" . cvs-mode-mark) @@ -352,7 +357,7 @@ This variable is buffer local and only used in the *cvs* buffer.") ("=" . cvs-mode-diff) ("d" . cvs-mode-diff-map) ;; keys that operate on individual files - ("\C-k". cvs-mode-acknowledge) + ("\C-k" . cvs-mode-acknowledge) ("A" . cvs-mode-add-change-log-entry-other-window) ;;("B" . cvs-mode-byte-compile-files) ("C" . cvs-mode-commit-setup) @@ -365,18 +370,21 @@ This variable is buffer local and only used in the *cvs* buffer.") ("c" . cvs-mode-commit) ("e" . cvs-mode-examine) ("f" . cvs-mode-find-file) + ("\C-m" . cvs-mode-find-file) ("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) - ;;("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) @@ -409,30 +417,35 @@ This variable is buffer local and only used in the *cvs* buffer.") ["Update" cvs-mode-update (cvs-enabledp 'update)] ["Re-examine" cvs-mode-examine t] ["Commit" cvs-mode-commit-setup (cvs-enabledp 'commit)] + ["Tag" cvs-mode-tag (cvs-enabledp (when cvs-force-dir-tag 'tag))] ["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] "----" + ["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] "----" ["Quit" cvs-mode-quit t])) -;;;; +;;;; ;;;; CVS-Minor mode -;;;; +;;;; (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 - `((,cvs-minor-mode-prefix . cvs-mode-map)) + `((,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))))) "Keymap for `cvs-minor-mode', used in buffers related to PCL-CVS.") (defvar cvs-buffer nil @@ -455,9 +468,9 @@ It is expected to call the function.") (defconst cvs-pcl-cvs-dirchange-re "^pcl-cvs: descending directory \\(.*\\)$") -;;;; +;;;; ;;;; autoload the global menu -;;;; +;;;; ;;;###autoload (defvar cvs-global-menu @@ -474,14 +487,17 @@ It is expected to call the function.") (define-key m [examine] '(menu-item "Examine Directory" cvs-examine :help "Examine the current state of a workarea")) - m)) + (fset 'cvs-global-menu m))) ;; 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. @@ -494,11 +510,12 @@ 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 -set this variable to T (until the cvs server is upgraded). +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) -;;; pcl-cvs-defs.el ends here +;; arch-tag: c7c701d0-d1d4-4aa9-a302-007bb03aca5e +;;; pcvs-defs.el ends here