From bedf8ea55ee2ea522cca82b1529968ebabf8743e Mon Sep 17 00:00:00 2001 From: axel Date: Fri, 3 Nov 2006 09:55:48 +1000 Subject: [PATCH] Add support for completing using contents of tar archives darcs-hash:20061102235548-ac50b-ec4a3b206c73f8fc44cc715b2a95fe6fef2d53c0.gz --- share/completions/tar.fish | 4 +++ share/functions/__fish_complete_tar.fish | 35 ++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 share/functions/__fish_complete_tar.fish diff --git a/share/completions/tar.fish b/share/completions/tar.fish index 27f02c2c6..b81885937 100644 --- a/share/completions/tar.fish +++ b/share/completions/tar.fish @@ -1,3 +1,7 @@ + +# Peek inside of archives and list all files +complete -c tar -a "(__fish_complete_tar)" + complete -c tar -s A -l catenate -d (N_ "Append archive to archive") complete -c tar -l concatenate -d (N_ "Append archive to archive") complete -c tar -s c -l create -d (N_ "Create archive") diff --git a/share/functions/__fish_complete_tar.fish b/share/functions/__fish_complete_tar.fish new file mode 100644 index 000000000..f19d6727f --- /dev/null +++ b/share/functions/__fish_complete_tar.fish @@ -0,0 +1,35 @@ + +function __fish_complete_tar -d "Peek inside of archives and list all files" + + set -l cmd (commandline -poc) + set -e cmd[1] + for i in $cmd + switch $i + case '-*' + continue + + case '*.tar.bz' '*.tar.bz2' '*.tbz' '*.tbz2' + if test -f $i + set -l file_list (tar -jt <$i) + printf (_ "%s\tArchived file\n") $file_list + end + return + + case '*.tar.gz' '*.tgz' + if test -f $i + set -l file_list (tar -it <$i) + printf (_ "%s\tArchived file\n") $file_list + end + return + + case '*.tar' + if test -f $i + set -l file_list (tar -t <$i) + printf (_ "%s\tArchived file\n") $file_list + end + return + end + end +end + +