]> code.delx.au - gnu-emacs/blobdiff - lisp/vc/pcvs-info.el
Update copyright year to 2015
[gnu-emacs] / lisp / vc / pcvs-info.el
index 1ae924ff1770059e9f919e0cca676fc340225fd0..4af1e73a3582ff20d0cf825fc3d1e997cb2d5559 100644 (file)
@@ -1,8 +1,6 @@
 ;;; pcvs-info.el --- internal representation of a fileinfo entry
 
-;; Copyright (C) 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-;;   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
-;;   Free Software Foundation, Inc.
+;; Copyright (C) 1991-2015 Free Software Foundation, Inc.
 
 ;; Author: Stefan Monnier <monnier@iro.umontreal.ca>
 ;; Keywords: pcl-cvs
@@ -33,7 +31,7 @@
 
 ;;; Code:
 
-(eval-when-compile (require 'cl))
+(eval-when-compile (require 'cl-lib))
 (require 'pcvs-util)
 ;;(require 'pcvs-defs)
 
@@ -126,7 +124,7 @@ to confuse some users sometimes."
 (define-obsolete-face-alias 'cvs-marked-face 'cvs-marked "22.1")
 
 (defface cvs-msg
-  '((t (:slant italic)))
+  '((t :slant italic))
   "PCL-CVS face used to highlight CVS messages."
   :group 'pcl-cvs)
 (define-obsolete-face-alias 'cvs-msg-face 'cvs-msg "22.1")
@@ -144,11 +142,11 @@ to confuse some users sometimes."
 
 (easy-mmode-defmap cvs-status-map
   '(([(mouse-2)] . cvs-mode-toggle-mark))
-  "Local keymap for text properties of status")
+  "Local keymap for text properties of status.")
 
 ;; Constructor:
 
-(defstruct (cvs-fileinfo
+(cl-defstruct (cvs-fileinfo
            (:constructor nil)
            (:copier nil)
            (:constructor -cvs-create-fileinfo (type dir file full-log
@@ -276,10 +274,10 @@ to confuse some users sometimes."
                  (string= file (file-name-nondirectory file)))
             (setq check 'type)         (symbolp type)
             (setq check 'consistency)
-            (case type
-              (DIRCHANGE (and (null subtype) (string= "." file)))
-              ((NEED-UPDATE ADDED MISSING DEAD MODIFIED MESSAGE UP-TO-DATE
-                            REMOVED NEED-MERGE CONFLICT UNKNOWN MESSAGE)
+            (pcase type
+              (`DIRCHANGE (and (null subtype) (string= "." file)))
+              ((or `NEED-UPDATE `ADDED `MISSING `DEAD `MODIFIED `MESSAGE
+                    `UP-TO-DATE `REMOVED `NEED-MERGE `CONFLICT `UNKNOWN)
                t)))
        fi
       (error "Invalid :%s in cvs-fileinfo %s" check fi))))
@@ -303,8 +301,8 @@ to confuse some users sometimes."
     (DEAD              )
     (MESSAGE))
   "Fileinfo state descriptions for pcl-cvs.
-This is an assoc list.  Each element consists of (STATE . FUNS)
-- STATE (described in `cvs-create-fileinfo') is the key
+This is an assoc list.  Each element consists of (STATE . FUNS):
+- STATE (described in `cvs-create-fileinfo') is the key.
 - FUNS is the list of applicable operations.
   The first one (if any) should be the \"default\" action.
 Most of the actions have the obvious meaning.
@@ -327,27 +325,27 @@ FI-OR-TYPE can either be a symbol (a fileinfo-type) or a fileinfo."
 (defun cvs-add-face (str face &optional keymap &rest props)
   (when keymap
     (when (keymapp keymap)
-      (setq props (list* 'keymap keymap props)))
-    (setq props (list* 'mouse-face 'highlight props)))
-  (add-text-properties 0 (length str) (list* 'font-lock-face face props) str)
+      (setq props `(keymap ,keymap ,@props)))
+    (setq props `(mouse-face highlight ,@props)))
+  (add-text-properties 0 (length str) `(font-lock-face ,face ,@props) str)
   str)
 
 (defun cvs-fileinfo-pp (fileinfo)
   "Pretty print FILEINFO.  Insert a printed representation in current buffer.
-For use by the cookie package."
+For use by the ewoc package."
   (cvs-check-fileinfo fileinfo)
   (let ((type (cvs-fileinfo->type fileinfo))
        (subtype (cvs-fileinfo->subtype fileinfo)))
     (insert
-     (case type
-       (DIRCHANGE (concat "In directory "
-                         (cvs-add-face (cvs-fileinfo->full-name fileinfo)
-                                       'cvs-header t 'cvs-goal-column t)
-                         ":"))
-       (MESSAGE
+     (pcase type
+       (`DIRCHANGE (concat "In directory "
+                           (cvs-add-face (cvs-fileinfo->full-name fileinfo)
+                                         'cvs-header t 'cvs-goal-column t)
+                           ":"))
+       (`MESSAGE
        (cvs-add-face (format "Message: %s" (cvs-fileinfo->full-log fileinfo))
                      'cvs-msg))
-       (t
+       (_
        (let* ((status (if (cvs-fileinfo->marked fileinfo)
                           (cvs-add-face "*" 'cvs-marked)
                         " "))
@@ -356,11 +354,11 @@ For use by the cookie package."
               (base (or (cvs-fileinfo->base-rev fileinfo) ""))
               (head (cvs-fileinfo->head-rev fileinfo))
               (type
-               (let ((str (case type
+               (let ((str (pcase type
                             ;;(MOD-CONFLICT "Not Removed")
-                            (DEAD        "")
-                            (t (capitalize (symbol-name type)))))
-                     (face (let ((sym (intern
+                            (`DEAD       "")
+                            (_ (capitalize (symbol-name type)))))
+                     (face (let ((sym (intern-soft
                                        (concat "cvs-fi-"
                                                (downcase (symbol-name type))
                                                "-face"))))
@@ -418,7 +416,7 @@ fileinfo will appear first, followed by all files (alphabetically)."
 
 (defun cvs-fileinfo-from-entries (dir &optional all)
   "List of fileinfos for DIR, extracted from CVS/Entries.
-Unless ALL is optional, returns only the files that are not up-to-date.
+Unless ALL is non-nil, returns only the files that are not up-to-date.
 DIR can also be a file."
   (let* ((singlefile
          (cond
@@ -486,5 +484,4 @@ DIR can also be a file."
 
 (provide 'pcvs-info)
 
-;; arch-tag: d85dde07-bdc2-400a-882f-92f398c7b0ba
 ;;; pcvs-info.el ends here