]> code.delx.au - gnu-emacs/blobdiff - lisp/pcmpl-cvs.el
Include versioned preloaded libraries in `package--builtin-versions'
[gnu-emacs] / lisp / pcmpl-cvs.el
index 49522ea9da8ade6ca917ca424657d28cf9df62b3..5cccded69895a2246436ba43054dbba752490695 100644 (file)
@@ -1,9 +1,9 @@
 ;;; pcmpl-cvs.el --- functions for dealing with cvs completions
 
-;; Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004,
-;;   2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+;; Copyright (C) 1999-2016 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
+;; Package: pcomplete
 
 ;; This file is part of GNU Emacs.
 
@@ -38,7 +38,7 @@
 ;; User Variables:
 
 (defcustom pcmpl-cvs-binary (or (executable-find "cvs") "cvs")
-  "The full path of the 'cvs' binary."
+  "The full path of the `cvs' binary."
   :type 'file
   :group 'pcmpl-cvs)
 
                    "j(pcmpl-cvs-tags '(?U ?P))"
                    "I(pcmpl-cvs-entries '(??))W?"))
           (while (pcomplete-here (pcmpl-cvs-entries '(?U ?P)))))
+         ((pcomplete-test "status")
+          (setq pcomplete-help "(cvs)File status")
+          (pcomplete-opt "vlR")
+          (while (pcomplete-here (pcmpl-cvs-entries))))
          (t
           (while (pcomplete-here (pcmpl-cvs-entries)))))))
 
 (defun pcmpl-cvs-entries (&optional opers)
   "Return the Entries for the current directory.
 If OPERS is a list of characters, return entries for which that
-operation character applies, as displayed by 'cvs -n update'."
+operation character applies, as displayed by `cvs -n update'."
   (let* ((arg (pcomplete-arg))
         (dir (file-name-as-directory
               (or (file-name-directory arg) "")))
@@ -160,29 +164,29 @@ operation character applies, as displayed by 'cvs -n update'."
        (with-temp-buffer
          (and dir (cd dir))
          (call-process pcmpl-cvs-binary nil t nil
-                       "-q" "-n" "-f" "update"); "-l")
+                       "-q" "-n" "-f" "update") ; "-l")
          (goto-char (point-min))
          (while (re-search-forward "^\\(.\\) \\(.+\\)$" nil t)
            (if (memq (string-to-char (match-string 1)) opers)
                (setq entries (cons (match-string 2) entries)))))
-      (with-temp-buffer
-       (insert-file-contents (concat dir "CVS/Entries"))
-       (goto-char (point-min))
-       (while (not (eobp))
-         (let* ((line (buffer-substring (line-beginning-position)
-                                        (line-end-position)))
-                (fields (split-string line "/"))
-                text)
-           (if (eq (aref line 0) ?/)
-               (setq fields (cons "" fields)))
-           (setq text (nth 1 fields))
-           (when text
-             (if (string= (nth 0 fields) "D")
-                 (setq text (file-name-as-directory text)))
-             (setq entries (cons text entries))))
-         (forward-line))))
+      (when (file-exists-p (expand-file-name "CVS/Entries" dir))
+        (with-temp-buffer
+          (insert-file-contents (expand-file-name "CVS/Entries" dir))
+          (goto-char (point-min))
+          (while (not (eobp))
+            ;; Normal file: /NAME   -> "" "NAME"
+            ;; Directory  : D/NAME  -> "D" "NAME"
+            (let* ((fields (split-string (buffer-substring
+                                          (line-beginning-position)
+                                          (line-end-position))
+                                         "/"))
+                   (text (nth 1 fields)))
+              (when text
+                (if (string= (nth 0 fields) "D")
+                    (setq text (file-name-as-directory text)))
+                (setq entries (cons text entries))))
+            (forward-line)))))
     (setq pcomplete-stub nondir)
     (pcomplete-uniqify-list entries)))
 
-;; arch-tag: d2aeac43-4bf5-4509-a496-74b863c6642b
 ;;; pcmpl-cvs.el ends here