X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/138e1bd0aca8f84785412bacb21a872aaea02ad3..b0c9a334c2f0eb881eff47f590997e746cc3bdb3:/lisp/pcvs-defs.el diff --git a/lisp/pcvs-defs.el b/lisp/pcvs-defs.el index 0ab2b6b72b..3be6cbd918 100644 --- a/lisp/pcvs-defs.el +++ b/lisp/pcvs-defs.el @@ -1,11 +1,10 @@ ;;; pcvs-defs.el --- variable definitions for PCL-CVS -;; Copyright (C) 1991-2000 Free Software Foundation, Inc. +;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, +;; 2000, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ;; Author: Stefan Monnier ;; Keywords: pcl-cvs -;; Version: $Name: $ -;; Revision: $Id: pcvs-defs.el,v 1.5 2000/06/13 19:06:07 fx Exp $ ;; This file is part of GNU Emacs. @@ -21,16 +20,14 @@ ;; 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: ;;; Code: -(defconst pcl-cvs-version "$Name: $") - (eval-when-compile (require 'cl)) (require 'pcvs-util) @@ -43,7 +40,7 @@ (defvar cvs-version (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) (cons (string-to-number (match-string 1)) @@ -108,7 +105,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))) @@ -140,8 +137,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 ())) @@ -171,13 +169,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. @@ -190,7 +189,7 @@ have no effect." (defcustom cvs-buffer-name-alist '(("diff" cvs-diff-buffer-name diff-mode) ("status" "*cvs-info*" cvs-status-mode) - ("tree" (format "*cvs-%s*" cmd) cvs-status-mode) + ("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. @@ -250,9 +249,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.") @@ -298,69 +294,44 @@ This variable is buffer local and only used in the *cvs* buffer.") (defconst cvs-vendor-branch "1.1.1" "The default branch used by CVS for vendor code.") -(defvar cvs-menu - '("CVS" - ["Open file.." cvs-mode-find-file t] - [" ..other window" cvs-mode-find-file-other-window t] - ["Interactive merge" cvs-mode-imerge t] - ["Interactive diff" cvs-mode-idiff t] - ["View diff" cvs-mode-diff (cvs-enabledp 'diff)] - ["Diff with vendor" cvs-mode-diff-vendor t] - ["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)] - ["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 all" cvs-mode-mark-all-files t] - ["Unmark all" cvs-mode-unmark-all-files t] - ["Hide handled" cvs-mode-remove-handled t] - "----" - ["Quit" cvs-mode-quit t] - )) - (easy-mmode-defmap cvs-mode-diff-map - '(("=" . cvs-mode-diff) - ("b" . cvs-mode-diff-backup) - ("2" . cvs-mode-idiff-other) - ("h" . cvs-mode-diff-head) - ("v" . cvs-mode-diff-vendor) - ("?" . cvs-mode-diff-help) - ("e" . cvs-mode-idiff) - ("E" . cvs-mode-imerge)) - "Keymap for diff-related operations in `cvs-mode'.") -;; This is necessary to allow correct handling of \\[cvs-mode-diff-map] + '(("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) + ("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] ;; 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) ("M" . cvs-mode-mark-all-files) + ("S" . cvs-mode-mark-on-state) ("u" . cvs-mode-unmark) ("\C-?". cvs-mode-unmark-up) ("%" . cvs-mode-mark-matching-files) @@ -383,7 +354,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) @@ -396,19 +367,24 @@ 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) ;; 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))) @@ -418,24 +394,56 @@ This variable is buffer local and only used in the *cvs* buffer.") (fset 'cvs-mode-map cvs-mode-map) -;; add the cvs-menu to the map so it's added whenever we are in cvs-mode -(when (ignore-errors (require 'easymenu)) - (easy-menu-define cvs-menu-map - cvs-mode-map - "Menu used in cvs-mode." - cvs-menu)) +(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] + ["Display in other window" cvs-mode-display-file t] + ["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] + ["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)] + ["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)) - "Keymap for `cvs-minor-mode', used in buffers related to pcl-cvs.") + `((,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 "(Buffer local) The *cvs* buffer associated with this buffer.") @@ -457,9 +465,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 @@ -476,7 +484,7 @@ 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 @@ -496,11 +504,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.") ;; (provide 'pcvs-defs) -;;; pcl-cvs-defs.el ends here +;; arch-tag: c7c701d0-d1d4-4aa9-a302-007bb03aca5e +;;; pcvs-defs.el ends here