elvish_config/lib/moi/completion/arc.elv
2020-03-13 15:03:36 +01:00

49 lines
912 B
Plaintext

use moi/util/condition
use moi/util/file
commands = [
help
archive
unarchive
extract
ls
]
extensions = [ tar bz2 zip gz lz4 sz xz zst rar ]
fn -comp-commands { explode $commands }
fn -comp-archive-files [m]{
local:type = (condition:set (eq $m '') prefix deep-prefix)
file:match-extensions &type=$type $m $@extensions
}
fn -comp-inline-files [archive]{
try {
e:arc ls $archive | eawk [_ @argv]{ put $argv[-1] }
} except e {
nop
}
}
fn complete [@argv]{
local:c = (count $argv)
local:cmd = $argv[1]
if (== $c 2) {
-comp-commands
} elif (== $c 3) {
if (not (has-value [help archive] $cmd)) {
-comp-archive-files $argv[-1]
}
} else {
if (eq $cmd archive) {
edit:complete-filename $@argv
} elif (eq $cmd extract) {
local:archive = $argv[2]
-comp-inline-files $archive
}
}
}
edit:completion:arg-completer[arc] = $complete~