Function: pcomplete/tar
pcomplete/tar is an autoloaded and byte-compiled function defined in
pcmpl-gnu.el.gz.
Signature
(pcomplete/tar)
Documentation
Completion for the GNU tar utility.
Source Code
;; Defined in /usr/src/emacs/lisp/pcmpl-gnu.el.gz
;;;###autoload
(defun pcomplete/tar ()
"Completion for the GNU tar utility."
;; options that end in an equal sign will want further completion...
(let (saw-option complete-within)
(while (pcomplete-match "^-" 0)
(setq saw-option t)
(if (pcomplete-match "^--" 0)
(if (pcomplete-match "^--\\([^= \t\n\f]*\\)\\'" 0)
;; FIXME: Extract this list from "tar --help".
(pcomplete-here*
'("--absolute-names"
"--after-date="
"--append"
"--atime-preserve"
"--backup"
"--block-number"
"--blocking-factor="
"--catenate"
"--checkpoint"
"--compare"
"--compress"
"--concatenate"
"--confirmation"
"--create"
"--delete"
"--dereference"
"--diff"
"--directory="
"--exclude="
"--exclude-from="
"--extract"
"--file="
"--files-from="
"--force-local"
"--get"
"--group="
"--gzip"
"--help"
"--ignore-failed-read"
"--ignore-zeros"
"--incremental"
"--info-script="
"--interactive"
"--keep-old-files"
"--label="
"--list"
"--listed-incremental"
"--mode="
"--modification-time"
"--multi-volume"
"--new-volume-script="
"--newer="
"--newer-mtime"
"--no-recursion"
"--null"
"--numeric-owner"
"--old-archive"
"--one-file-system"
"--owner="
"--portability"
"--posix"
"--preserve"
"--preserve-order"
"--preserve-permissions"
"--read-full-records"
"--record-size="
"--recursive-unlink"
"--remove-files"
"--rsh-command="
"--same-order"
"--same-owner"
"--same-permissions"
"--sparse"
"--starting-file="
"--suffix="
"--tape-length="
"--to-stdout"
"--totals"
"--uncompress"
"--ungzip"
"--unlink-first"
"--update"
"--use-compress-program="
"--verbose"
"--verify"
"--version"
"--volno-file=")))
(pcomplete-opt "01234567ABCFGKLMNOPRSTUVWXZbcdfghiklmoprstuvwxz"))
(cond
((pcomplete-match "\\`-\\'" 0)
(pcomplete-here*))
((pcomplete-match "\\`--after-date=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--backup=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--blocking-factor=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--directory=\\(.*\\)" 0)
(pcomplete-here* (pcomplete-dirs)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--exclude-from=\\(.*\\)" 0)
(pcomplete-here* (pcomplete-entries)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--exclude=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--\\(extract\\|list\\)\\'" 0)
(setq complete-within t))
((pcomplete-match "\\`--file=\\(.*\\)" 0)
(pcomplete-here* (pcomplete-dirs-or-entries pcmpl-gnu-tarfile-regexp)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--files-from=\\(.*\\)" 0)
(pcomplete-here* (pcomplete-entries)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--group=\\(.*\\)" 0)
(pcomplete-here* (pcmpl-unix-group-names)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--info-script=\\(.*\\)" 0)
(pcomplete-here* (pcomplete-entries)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--label=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--mode=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--new-volume-script=\\(.*\\)" 0)
(pcomplete-here* (pcomplete-entries)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--newer=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--owner=\\(.*\\)" 0)
(pcomplete-here* (pcmpl-unix-user-names)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--record-size=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--rsh-command=\\(.*\\)" 0)
(pcomplete-here* (funcall pcomplete-command-completion-function)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--starting-file=\\(.*\\)" 0)
(pcomplete-here* (pcomplete-entries)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--suffix=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--tape-length=" 0)
(pcomplete-here*))
((pcomplete-match "\\`--use-compress-program=\\(.*\\)" 0)
(pcomplete-here* (funcall pcomplete-command-completion-function)
(pcomplete-match-string 1 0)))
((pcomplete-match "\\`--volno-file=\\(.*\\)" 0)
(pcomplete-here* (pcomplete-entries)
(pcomplete-match-string 1 0)))))
(unless saw-option
(pcomplete-here
(mapcar #'char-to-string
(string-to-list
"01234567ABCFGIKLMNOPRSTUVWXZbcdfghiklmoprstuvwxz")))
(if (pcomplete-match "[xt]" 'first 1)
(setq complete-within t)))
(pcomplete-here (pcomplete-dirs-or-entries pcmpl-gnu-tarfile-regexp))
(while (pcomplete-here
(if (and complete-within
(let* ((fa (file-attributes (pcomplete-arg 1)))
(size (file-attribute-size fa)))
(and (numberp size)
(or (null large-file-warning-threshold)
(< size large-file-warning-threshold)))))
(let ((file (pcomplete-arg 1)))
(completion-table-dynamic
(lambda (_string)
(pcmpl-gnu-with-file-buffer
file (mapcar #'tar-header-name tar-parse-info)))))
(pcomplete-entries))
nil #'identity))))