aboutsummaryrefslogtreecommitdiffhomepage
path: root/share
diff options
context:
space:
mode:
authorGravatar axel <axel@liljencrantz.se>2006-11-03 09:55:48 +1000
committerGravatar axel <axel@liljencrantz.se>2006-11-03 09:55:48 +1000
commitbedf8ea55ee2ea522cca82b1529968ebabf8743e (patch)
treeb431ba8994825d4d93a5cb37b1b27a0d3ec80e5b /share
parentd8f1c0abcd7758b28d43c25ed03ac001bbfaec31 (diff)
Add support for completing using contents of tar archives
darcs-hash:20061102235548-ac50b-ec4a3b206c73f8fc44cc715b2a95fe6fef2d53c0.gz
Diffstat (limited to 'share')
-rw-r--r--share/completions/tar.fish4
-rw-r--r--share/functions/__fish_complete_tar.fish35
2 files changed, 39 insertions, 0 deletions
diff --git a/share/completions/tar.fish b/share/completions/tar.fish
index 27f02c2c..b8188593 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 00000000..f19d6727
--- /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
+
+