Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
[PATCH]: Completion: Add/update various functions
- X-seq: zsh-workers 43897
- From: dana <dana@xxxxxxx>
- To: Zsh workers <zsh-workers@xxxxxxx>
- Subject: [PATCH]: Completion: Add/update various functions
- Date: Sat, 15 Dec 2018 18:20:11 -0600
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=dana-is.20150623.gappssmtp.com; s=20150623; h=from:content-transfer-encoding:mime-version:subject:message-id:date :to; bh=kXIHdVY38ioU/WK4wnDqZSFaHtQFdv1Zg4iF4g9vK6g=; b=xeLWZKFCjlewFNbyxE0s+rXwHYEHm+JaDsWKBLQ+edsHKR4BX7VwQmQDmhhvLORtVq bAHIlJIOgWF2NF0Woh06G12G9a+wyH0gzStkxoPm2+s2JYU7fS+VE/QLw0m3qJkCfEXh qbOAgGkCL1PybpBCsvpKtciQy4nMOlQMbtkInf1lJ0aOXG+Xz3Vx4/Ll421yAPfH2FQT tSzPMGD4Tw0LbfhSQDiIgdV4QqkFw+VT/uWpNvzxRfNGOMrCOKrt6zejVQJiMUT+x/hv OmQxCykPY+r5o7UAXuq+yKCTN/Yrz6Kk5Qi/14H5PSyEGiea55YmW9K7jqajrZhLfxkc ahNw==
- List-help: <mailto:zsh-workers-help@zsh.org>
- List-id: Zsh Workers List <zsh-workers.zsh.org>
- List-post: <mailto:zsh-workers@zsh.org>
- List-unsubscribe: <mailto:zsh-workers-unsubscribe@zsh.org>
- Mailing-list: contact zsh-workers-help@xxxxxxx; run by ezmlm
Some miscellaneous, straight-forward completion updates:
* Changed: tail (support -q/-v on NetBSD)
* New: asciidoctor
* New: asciinema
* New: host (required also changing _hosts compdefs)
* New: mkfifo
* New: mknod
* New: shred
* New: tty
* New: visudo
* New: xcode-select
dana
diff --git a/Completion/Darwin/Command/_xcode-select b/Completion/Darwin/Command/_xcode-select
new file mode 100644
index 000000000..a24b1a6f2
--- /dev/null
+++ b/Completion/Darwin/Command/_xcode-select
@@ -0,0 +1,10 @@
+#compdef xcode-select
+
+# No -s, no -o+ form options
+_arguments : \
+ '(-)'{-h,--help}'[display help information]' \
+ '(-)'{-v,--version}'[display version information]' \
+ '(-)--install[install command-line developer tools]' \
+ '(-)'{-p,--print-path}'[display path of active developer directory]' \
+ '(-)'{-r,--reset}'[reset to default developer directory]' \
+ '(-)'{-s,--switch}'[specify path of active developer directory]:developer directory:_files -/'
diff --git a/Completion/Unix/Command/_asciidoctor b/Completion/Unix/Command/_asciidoctor
new file mode 100644
index 000000000..3839c7ed3
--- /dev/null
+++ b/Completion/Unix/Command/_asciidoctor
@@ -0,0 +1,42 @@
+#compdef asciidoctor
+
+# Notes:
+# - We don't offer -v for verbose, even though that works in some cases
+# - @todo We don't complete arguments to -E and -r. Unclear how they work.
+# Should we offer gem names from `gem list`...?
+
+_arguments -s -S : \
+ '(: * -)'{-h+,--help=}'[display help information]::help topic:((
+ manpage\:"dump man page"
+ ))' \
+ '(: * -)'{-V,--version}'[display version information]' \
+ '(-q -v --quiet --verbose)'{-q,--quiet}'[reduce output verbosity]' \
+ '(-q -v --quiet --verbose)'{-v,--verbose}'[increase output verbosity]' \
+ '*'{-a+,--attribute=}'[set/unset specified document attribute]:document attribute' \
+ '(-b --backend)'{-b+,--backend=}'[specify backend output format]:backend:(
+ docbook docbook45 docbook5 html html5 manpage
+ )' \
+ '(-B --base-dir)'{-B+,--base-dir=}'[specify document base directory]:base directory:_files -/' \
+ '(-d --doctype)'{-d+,--doctype=}'[specify document type]:document type:(
+ article book inline manpage
+ )' \
+ '(-D --destination-dir)'{-D+,--destination-dir=}'[specify destination directory]:destination directory:_files -/' \
+ '(-e --eruby)'{-e+,--eruby=}'[specify eRuby implementation]:eRuby implementation:(erb erubis)' \
+ '(-E --template-engine)'{-E+,--template-engine=}'[specify template engine]:template engine' \
+ '--failure-level=[specify minimum logging level to trigger non-zero exit]:failure logging level [FATAL]:(
+ WARNING ERROR FATAL
+ )' \
+ '*'{-I+,--load-path=}'[add specified directory to load path]:extension directory:_files -/' \
+ '(-n --section-numbers)'{-n,--section-numbers}'[auto-number section titles]' \
+ '(-o --out-file)'{-o+,--out-file=}'[specify output file]:output file:_files' \
+ '(-R --source-directory)'{-R+,--source-dir=}'[specify source directory]:source directory:_files -/' \
+ '*'{-r+,--require=}'[require specified library]:Ruby library' \
+ '(-s --no-header-footer)'{-s,--no-header-footer}'[suppress document header/footer]' \
+ '(-S --safe --safe-mode)'{-S+,--safe-mode=}'[specify safe-mode level]:safe-mode level [unsafe]:(
+ unsafe safe server secure
+ )' \
+ '(-S --safe-mode)--safe[set safe-mode level to safe]' \
+ '(-t --timings)'{-t,--timings}'[display timing information]' \
+ '*'{-T+,--template-dir=}'[specify template directory]:template directory:_files -/' \
+ '--trace[include backtrace information on errors]' \
+ '*:source file:_files'
diff --git a/Completion/Unix/Command/_asciinema b/Completion/Unix/Command/_asciinema
new file mode 100644
index 000000000..8e94f0d1e
--- /dev/null
+++ b/Completion/Unix/Command/_asciinema
@@ -0,0 +1,59 @@
+#compdef asciinema
+
+local ret=1
+local -a context line state state_descr help
+local -A opt_args
+
+help=( '(: * -)'{-h,--help}'[display help information]' )
+
+_arguments -A '-*' \
+ $help \
+ '(: * -)--version[display version information]' \
+ '1:command:((
+ auth\:"link install ID with asciinema.org account"
+ cat\:"dump full output of recorded session"
+ play\:"play back recorded session"
+ rec\:"record session"
+ upload\:"upload recorded session"
+ ))' \
+ '*:: :->next' \
+&& ret=0
+
+[[ $state == next ]] &&
+case $words[1] in
+ auth)
+ _arguments -s -S : $help && ret=0
+ ;;
+ cat|upload)
+ _arguments -s -S : $help '1::recording file:_files' && ret=0
+ ;;
+ play)
+ _arguments -s -S : \
+ $help \
+ '(-i --idle-time-limit)'{-i+,--idle-time-limit=}'[specify max idle time]:max idle time (seconds)' \
+ '(-s --speed)'{-s+,--speed=}'[specify playback speed]:speed factor' \
+ '1: :->files-urls' \
+ && ret=0
+ [[ $state == files-urls ]] &&
+ _alternative 'files:recording file:_files' 'urls: :_urls' &&
+ ret=0
+ ;;
+ rec)
+ _arguments -s -S : \
+ $help \
+ '(--overwrite)--append[append to existing recording]' \
+ '(-c --command)'{-c+,--command=}'[specify command to record]: :_path_commands' \
+ '(-e --env)'{-e+,--env=}'[specify environment variables to capture]:environment variable:_sequence _parameters -g "*export*"' \
+ '(-i --idle-time-limit)'{-i+,--idle-time-limit=}'[specify max idle time]:max idle time (seconds)' \
+ '(-q -y --quiet --yes)'{-q,--quiet}'[suppress notices/warnings (implies -y)]' \
+ '--raw[save raw stdout output, without timing or other metadata]' \
+ '--stdin[enable stdin (keyboard) recording]' \
+ '(-t --title)'{-t+,--title=}'[specify title of recording]:title' \
+ '(--append)--overwrite[overwrite existing recording]' \
+ '(-y --yes)'{-y,--yes}'[bypass confirmation prompts]' \
+ '1::recording file:_files' \
+ && ret=0
+ ;;
+esac
+
+return ret
diff --git a/Completion/Unix/Command/_host b/Completion/Unix/Command/_host
new file mode 100644
index 000000000..e1174d46c
--- /dev/null
+++ b/Completion/Unix/Command/_host
@@ -0,0 +1,23 @@
+#compdef host
+
+# Note: This command is closely related to (and shares some options with) dig
+_arguments -s -S -A '-*' : \
+ '(: * -)-V[display version information]' \
+ '(-6)-4[use IPv4 only]' \
+ '(-4)-6[use IPv6 only]' \
+ '(-v -t)-a[query for all record types or (with -l) list all zone records]' \
+ '(-d -v)'{-d,-v}'[increase output verbosity]' \
+ '-c+[specify query class]:query class:compadd -M "m\:{a-z}={A-Z}" - CH CS HS IN' \
+ '-C[check SOA consistency]' \
+ '-l[list zone records]' \
+ '-N+[specify number of dots required to consider host name absolute]:number of dots' \
+ '-r[query non-recursively (clear RD bit)]' \
+ '-R+[specify number of retries for UDP queries]:number of retries [1]' \
+ '-s[do not try next name server after SERVFAIL]' \
+ '-t+[specify query type]: :_dns_types' \
+ '-T[query via TCP]' \
+ '*-m+[specify memory-usage debug flag]:debug flag:(record usage trace)' \
+ '(-W)-w[disable query timeout (wait forever)]' \
+ '(-w)-W+[specify query timeout]:query timeout (seconds) [5 (UDP), 10 (TCP)]' \
+ '1: :_hosts' \
+ '2::DNS server:_hosts'
diff --git a/Completion/Unix/Command/_mkfifo b/Completion/Unix/Command/_mkfifo
new file mode 100644
index 000000000..4f1d8c87e
--- /dev/null
+++ b/Completion/Unix/Command/_mkfifo
@@ -0,0 +1,20 @@
+#compdef mkfifo gmkfifo
+
+local -a aopts args
+
+if _pick_variant gnu='Free Soft' unix --version; then
+ args=(
+ '(: * -)--help[display help information]'
+ '(: * -)--version[display version information]'
+ '(-m --mode)'{-m+,--mode=}'[specify file mode]: :_file_modes'
+ )
+ [[ $OSTYPE == linux* ]] && args+=(
+ '(--context)-Z[set SELinux security context to default]'
+ '(-Z)--context=-[like -Z, or specify SELinux security context]:SELinux security context'
+ )
+else
+ aopts=( -A '-*' )
+ args=( '-m+[specify file mode]: :_file_modes' )
+fi
+
+_arguments -s -S $aopts : '*:FIFO:_files' $args
diff --git a/Completion/Unix/Command/_mknod b/Completion/Unix/Command/_mknod
new file mode 100644
index 000000000..902f49b9f
--- /dev/null
+++ b/Completion/Unix/Command/_mknod
@@ -0,0 +1,45 @@
+#compdef mknod gmknod
+
+# - @todo Major/minor device numbers could be completed using /proc/devices on
+# Linux and e.g. `stat -f %Hr /dev/*` on BSD/Darwin
+# - @todo Device numbers should not be completed given p or w types
+
+local -a aopts args
+
+if _pick_variant gnu='Free Soft' $OSTYPE --version; then
+ args=(
+ '(: * -)--help[display help information]'
+ '(: * -)--version[display version information]'
+ '(-m --mode)'{-m+,--mode=}'[specify file mode]: :_file_modes'
+ '1:special file:_files'
+ '2:special file type:((
+ b\:"block (buffered) special file"
+ {c,u}\:"character (unbuffered) special file"
+ p\:FIFO
+ ))'
+ '3:major device number'
+ '4:minor device number'
+ )
+ [[ $OSTYPE == linux* ]] && args+=(
+ '(--context)-Z[set SELinux security context to default]'
+ '(-Z)--context=-[like -Z, or specify SELinux security context]:SELinux security context'
+ )
+else
+ aopts=( -A '-*' )
+ args=(
+ '-F+[specify device-number format]:device-number format:(
+ native 386bsd 4bsd bsdos freebsd hpux isc linux netbsd osf1 sco solaris
+ sunos svr3 svr4 ultrix
+ )'
+ '1:special file:_files'
+ '2:special file type:((
+ b\:"block-type device"
+ c\:"character-type device"
+ w\:"whiteout node"
+ ))'
+ '3:major device number'
+ '4:minor device number'
+ )
+fi
+
+_arguments -s -S $aopts : $args
diff --git a/Completion/Unix/Command/_shred b/Completion/Unix/Command/_shred
new file mode 100644
index 000000000..ce583bee4
--- /dev/null
+++ b/Completion/Unix/Command/_shred
@@ -0,0 +1,19 @@
+#compdef shred gshred
+
+_arguments -s -S : \
+ '(: * -)--help[display help information]' \
+ '(: * -)--version[display version information]' \
+ '(-f --force)'{-f,--force}'[bypass lack of write permissions]' \
+ '(-n --iterations)'{-n+,--iterations=}'[specify number of overwrites]:overwrites [3]' \
+ '--random-source=[get random bytes from specified file]:random source file:_files' \
+ '(-s --size)'{-s+,--size=}'[shred specified number of bytes]:bytes' \
+ '(--remove)-u[deallocate and remove file after overwriting]' \
+ '(-u)--remove=-[like -u, or specify how to remove]::how to remove [wipesync]:((
+ unlink\:"use standard unlink call"
+ wipe\:"like unlink, but obfuscate bytes in name first"
+ wipesync\:"like wipe, but sync each obfuscated byte to disk"
+ ))' \
+ '(-v --verbose)'{-v,--verbose}'[display progress]' \
+ '(-x --exact)'{-x,--exact}'[do not round file sizes up to nearest block]' \
+ '(-z --zero)'{-z,--zero}'[add final overwrite with zeros]' \
+ '*: :_files'
diff --git a/Completion/Unix/Command/_tail b/Completion/Unix/Command/_tail
index 599503ab5..3bfbe37ca 100644
--- a/Completion/Unix/Command/_tail
+++ b/Completion/Unix/Command/_tail
@@ -38,10 +38,13 @@ else
)
;|
(freebsd*|darwin*|dragonfly*|netbsd*)
- args+=( '(-f -r)-F[implies -f, but also detect file rename]' )
+ args+=(
+ '(-f -r)-F[implies -f, but also detect file rename]'
+ '(-v)-q[never output headers giving file names]'
+ )
;|
- (freebsd*|darwin*|dragonfly*)
- args+=( '-q[suppress the headers when displaying multiple files]' )
+ (netbsd*)
+ args+=( '(-q)-v[always output headers giving file names]' )
;;
esac
fi
diff --git a/Completion/Unix/Command/_tty b/Completion/Unix/Command/_tty
new file mode 100644
index 000000000..838975098
--- /dev/null
+++ b/Completion/Unix/Command/_tty
@@ -0,0 +1,18 @@
+#compdef tty gtty
+
+local -a args
+
+if _pick_variant gnu='Free Soft' unix --version; then
+ args=(
+ '(-)--help[display help information]'
+ '(-)--version[display version information]'
+ '(-s --quiet --silent)'{-s,--quiet,--silent}'[suppress normal output]'
+ )
+else
+ args=( '-s[suppress normal output]' )
+ [[ $OSTYPE == solaris* ]] && args+=(
+ "-l[display terminal's synchronous line number]"
+ )
+fi
+
+_arguments -s -S : $args
diff --git a/Completion/Unix/Command/_visudo b/Completion/Unix/Command/_visudo
new file mode 100644
index 000000000..2cb6d85a5
--- /dev/null
+++ b/Completion/Unix/Command/_visudo
@@ -0,0 +1,12 @@
+#compdef visudo
+
+_arguments -s -S : \
+ '(: * -)'{-h,--help}'[display help information]' \
+ '(: * -)'{-V,--version}'[display version information]' \
+ '(-f --file)'{-f+,--file=}'[specify sudoers file]:sudoers file:_files' \
+ + c \
+ '(x -c --check)'{-c,--check}'[check sudoers file for errors only]' \
+ '(-q --quiet)'{-q,--quiet}'[suppress error messages (with -c)]' \
+ '(x -s --strict)'{-s,--strict}'[enable strict checking]' \
+ + '(x)' \
+ '(c)'{-x+,--export=}'[export sudoers file to specified JSON output file]:JSON output file:_files'
diff --git a/Completion/Unix/Type/_hosts b/Completion/Unix/Type/_hosts
index d9e1090a4..4057fee10 100644
--- a/Completion/Unix/Type/_hosts
+++ b/Completion/Unix/Type/_hosts
@@ -1,4 +1,4 @@
-#compdef ftp rwho rup xping traceroute host aaaa zone mx ns soa txt
+#compdef ftp rwho rup xping traceroute aaaa zone mx ns soa txt
# avoid calling variable "hosts", it's an obvious candidate for use in
# zstyle -e '*' hosts 'reply=($hosts)'
Messages sorted by:
Reverse Date,
Date,
Thread,
Author