X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/be8e0e977a411c16f5d2f3ccf28b4818dab2d88d..2b96868715a33d5c1bfbd03e961a222076398722:/lisp/cvs-status.el diff --git a/lisp/cvs-status.el b/lisp/cvs-status.el index 528ab74e50..1d3c0d4ca8 100644 --- a/lisp/cvs-status.el +++ b/lisp/cvs-status.el @@ -1,16 +1,17 @@ -;;; cvs-status.el --- major mode for browsing `cvs status' output +;;; cvs-status.el --- major mode for browsing `cvs status' output -*- coding: utf-8 -*- -;; Copyright (C) 1999, 2000, 03, 2004 Free Software Foundation, Inc. +;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, +;; 2005, 2006, 2007, 2008 Free Software Foundation, Inc. -;; Author: Stefan Monnier +;; Author: Stefan Monnier ;; Keywords: pcl-cvs cvs status tree tools ;; This file is part of GNU Emacs. -;; GNU Emacs is free software; you can redistribute it and/or modify +;; 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) -;; any later version. +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. ;; GNU Emacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of @@ -18,9 +19,7 @@ ;; GNU General Public License for more details. ;; 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. +;; along with GNU Emacs. If not, see . ;;; Commentary: @@ -48,7 +47,8 @@ ("\M-n" . cvs-status-next) ("\M-p" . cvs-status-prev) ("t" . cvs-status-cvstrees) - ("T" . cvs-status-trees)) + ("T" . cvs-status-trees) + (">" . cvs-mode-checkout)) "CVS-Status' keymap." :group 'cvs-status :inherit 'cvs-mode-map) @@ -71,8 +71,8 @@ (defconst cvs-status-font-lock-keywords `((,cvs-status-entry-leader-re - (1 'cvs-filename-face) - (2 'cvs-need-action-face)) + (1 'cvs-filename) + (2 'cvs-need-action)) (,cvs-status-tags-leader-re (,cvs-status-rev-re (save-excursion (re-search-forward "^\n" nil 'move) (point)) @@ -87,7 +87,7 @@ (defconst cvs-status-font-lock-defaults '(cvs-status-font-lock-keywords t nil nil nil (font-lock-multiline . t))) - +(defvar cvs-minor-wrap-function) (put 'cvs-status-mode 'mode-class 'special) ;;;###autoload (define-derived-mode cvs-status-mode fundamental-mode "CVS-Status" @@ -106,7 +106,8 @@ (let* ((file (match-string 1)) (cvsdir (and (re-search-backward cvs-status-dir-re nil t) (match-string 1))) - (pcldir (and (re-search-backward cvs-pcl-cvs-dirchange-re nil t) + (pcldir (and (if (boundp 'cvs-pcl-cvs-dirchange-re) + (re-search-backward cvs-pcl-cvs-dirchange-re nil t)) (match-string 1))) (dir "")) (let ((default-directory "")) @@ -277,10 +278,10 @@ BEWARE: because of stability issues, this is not a symetric operation." (cvs-tree-merge (cdr tree1) (cdr tree2)))))) ((> l1 l2) (cvs-tree-merge - (list (cons (cvs-tag-make (cvs-butlast vl1)) tree1)) tree2)) + (list (cons (cvs-tag-make (butlast vl1)) tree1)) tree2)) ((< l1 l2) (cvs-tree-merge - tree1 (list (cons (cvs-tag-make (cvs-butlast vl2)) tree2))))))))) + tree1 (list (cons (cvs-tag-make (butlast vl2)) tree2))))))))) (defun cvs-tag-make-tag (tag) (let ((vl (mapcar 'string-to-number (split-string (nth 2 tag) "\\.")))) @@ -293,7 +294,7 @@ BEWARE: because of stability issues, this is not a symetric operation." (lambda (tag) (let ((tag (cvs-tag-make-tag tag))) (list (if (not (eq (cvs-tag->type tag) 'branch)) tag - (list (cvs-tag-make (cvs-butlast (cvs-tag->vlist tag))) + (list (cvs-tag-make (butlast (cvs-tag->vlist tag))) tag))))) tags))) (while (cdr tags) @@ -384,23 +385,45 @@ the list is a three-string list TAG, KIND, REV." ;;;; CVSTree-style trees ;;;; -(defvar cvs-tree-use-jisx0208 - (and (char-displayable-p (make-char 'japanese-jisx0208 40 44)) t) +(defvar cvs-tree-use-jisx0208 nil) ;Old compat var. +(defvar cvs-tree-use-charset + (cond + (cvs-tree-use-jisx0208 'jisx0208) + ((char-displayable-p ?━) 'unicode) + ((char-displayable-p (make-char 'japanese-jisx0208 40 44)) 'jisx0208)) "*Non-nil if we should use the graphical glyphs from `japanese-jisx0208'. Otherwise, default to ASCII chars like +, - and |.") (defconst cvs-tree-char-space - (if cvs-tree-use-jisx0208 (make-char 'japanese-jisx0208 33 33) " ")) + (case cvs-tree-use-charset + (jisx0208 (make-char 'japanese-jisx0208 33 33)) + (unicode " ") + (t " "))) (defconst cvs-tree-char-hbar - (if cvs-tree-use-jisx0208 (make-char 'japanese-jisx0208 40 44) "--")) + (case cvs-tree-use-charset + (jisx0208 (make-char 'japanese-jisx0208 40 44)) + (unicode "━") + (t "--"))) (defconst cvs-tree-char-vbar - (if cvs-tree-use-jisx0208 (make-char 'japanese-jisx0208 40 45) "| ")) + (case cvs-tree-use-charset + (jisx0208 (make-char 'japanese-jisx0208 40 45)) + (unicode "┃") + (t "| "))) (defconst cvs-tree-char-branch - (if cvs-tree-use-jisx0208 (make-char 'japanese-jisx0208 40 50) "+-")) + (case cvs-tree-use-charset + (jisx0208 (make-char 'japanese-jisx0208 40 50)) + (unicode "┣") + (t "+-"))) (defconst cvs-tree-char-eob ;end of branch - (if cvs-tree-use-jisx0208 (make-char 'japanese-jisx0208 40 49) "`-")) + (case cvs-tree-use-charset + (jisx0208 (make-char 'japanese-jisx0208 40 49)) + (unicode "┗") + (t "`-"))) (defconst cvs-tree-char-bob ;beginning of branch - (if cvs-tree-use-jisx0208 (make-char 'japanese-jisx0208 40 51) "+-")) + (case cvs-tree-use-charset + (jisx0208 (make-char 'japanese-jisx0208 40 51)) + (unicode "┳") + (t "+-"))) (defun cvs-tag-lessp (tag1 tag2) (eq (cvs-tag-compare tag1 tag2) 'more2)) @@ -411,7 +434,7 @@ Otherwise, default to ASCII chars like +, - and |.") "Look for a list of tags, and replace it with a tree. Optional prefix ARG chooses between two representations." (interactive "P") - (when (and cvs-tree-use-jisx0208 + (when (and cvs-tree-use-charset (not enable-multibyte-characters)) ;; We need to convert the buffer from unibyte to multibyte ;; since we'll use multibyte chars for the tree. @@ -513,5 +536,5 @@ Optional prefix ARG chooses between two representations." (provide 'cvs-status) -;;; arch-tag: db8b5094-d02a-473e-a476-544e89ff5ad0 +;; arch-tag: db8b5094-d02a-473e-a476-544e89ff5ad0 ;;; cvs-status.el ends here