]> code.delx.au - gnu-emacs/blobdiff - lisp/pcmpl-cvs.el
Update docs for `customize-mode'
[gnu-emacs] / lisp / pcmpl-cvs.el
index 54ab07e6e85a6ef9611e27fd8ddfab9e857597d5..5cccded69895a2246436ba43054dbba752490695 100644 (file)
@@ -1,15 +1,16 @@
 ;;; pcmpl-cvs.el --- functions for dealing with cvs completions
 
-;; Copyright (C) 1999, 2000, 2002 Free Software Foundation
+;; Copyright (C) 1999-2016 Free Software Foundation, Inc.
 
 ;; Author: John Wiegley <johnw@gnu.org>
+;; Package: pcomplete
 
 ;; 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
@@ -17,9 +18,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., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -39,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) "")))
@@ -161,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