X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/a9faac5c6333bcbfb30a00debf3de7a44e430e49..96bd07a3226700156fa7d5ec20e9bd6550c95057:/lisp/pcmpl-cvs.el diff --git a/lisp/pcmpl-cvs.el b/lisp/pcmpl-cvs.el index b12c7170eb..5cccded698 100644 --- a/lisp/pcmpl-cvs.el +++ b/lisp/pcmpl-cvs.el @@ -1,7 +1,6 @@ ;;; 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 ;; Package: pcomplete @@ -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) @@ -108,6 +107,10 @@ "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))))))) @@ -151,7 +154,7 @@ (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,27 +164,28 @@ 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)))