Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

Re: [PATCH 0/6] Update coreutils command completions



> 2023/08/07 5:26、Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx>のメール:
> 
>  if someone who is more familiar with the
> implementations he's patching would like to step in, please do.


The second hunks in the patches for _env and _watch below are (possible)
fix for a problem that existed before his patch.
_env and _watch call _normal to complete a command and args, but since
they are passed to execve() or 'sh -c', it would make no sense to complete
zsh bultins or functions etc. I replaced
   _normal
by
   _normal -p env/watch
so that only external commands are offered. Is this a correct use of the
option -p?

Other hunks are just minor fixes.


 Completion/Unix/Command/_date  | 2 +-
 Completion/Unix/Command/_env   | 4 ++--
 Completion/Unix/Command/_watch | 4 ++--
 3 files changed, 5 insertions(+), 5 deletions(-)

diff --git a/Completion/Unix/Command/_date b/Completion/Unix/Command/_date
index 6be34ffcd..9add1a9bc 100644
--- a/Completion/Unix/Command/_date
+++ b/Completion/Unix/Command/_date
@@ -19,7 +19,7 @@ if _pick_variant gnu="Free Software Foundation" unix --version; then
     $f{-R,--rfc-email}'[display in RFC5322 format]'
     $f'--rfc-3339=-[display in RFC 3339 format]:precision:(date seconds ns)'
     '(-u --utc --universal)'{-u,--utc,--universal}'[display or set time in UTC]'
-    '--resolution[output the available resolution of timestamps]'
+    $d'--resolution[output the available resolution of timestamps]'
     '(- :)--help[output help and exit]'
     '(- :)--version[output version info and exit]'
   )
diff --git a/Completion/Unix/Command/_env b/Completion/Unix/Command/_env
index f7283e132..bdab71bbe 100644
--- a/Completion/Unix/Command/_env
+++ b/Completion/Unix/Command/_env
@@ -9,7 +9,7 @@ case $variant in
     (( $#words > 2 )) && ign='!'
     args=(
       '(-)'{-i,--ignore-environment}'[start with empty environment]'
-      '(-0 --null)'{-0,--null}'[end each output line with NUL, not newline]'
+      '(* -0 --null)'{-0,--null}'[end each output line with NUL, not newline]'
       '(--ignore-environment -i --help --version)*'{-u+,--unset=}'[remove variable from the environment]:env var to remove:_parameters -g "*export*"'
       '(-C --chdir)'{-C+,--chdir=}'[change working directory]:directory:_directories'
       '(-S --split-string)'{-S+,--split-string=}'[perform word splitting]:string to split'
@@ -59,7 +59,7 @@ if [[ -n $state ]]; then
         shift words
         (( CURRENT-- ))
       done
-      _normal && ret=0
+      _normal -p env && ret=0
     ;;
     user-class)
       if compset -P 1 '*/'; then
diff --git a/Completion/Unix/Command/_watch b/Completion/Unix/Command/_watch
index 91244abe7..e12add520 100644
--- a/Completion/Unix/Command/_watch
+++ b/Completion/Unix/Command/_watch
@@ -18,7 +18,7 @@ case $variant in
       '(-g --chgexit)'{-g,--chgexit}'[exit on command output change]' \
       '(-n --interval)'{-n+,--interval=}'[specify update interval]:update interval (seconds) [2]' \
       '(-p --precise)'{-p,--precise}'[run command at precise intervals]' \
-      '(-q --equexit)'{-q,--equexit}'[exit when output of command does not change for the given cycles]:cycles' \
+      '(-q --equexit)'{-q+,--equexit=}'[exit when output of command does not change for the given cycles]:cycles' \
       '(-r --no-rerun)'{-r,--no-rerun}'[do not run the program on terminal resize]' \
       '(-t --no-title)'{-t,--no-title}'[disable header]' \
       '(-w --no-wrap)'{-w,--no-wrap}'[disable line wrapping]' \
@@ -34,7 +34,7 @@ case $variant in
     then
       _cmdstring && ret=0
     else
-      _normal && ret=0
+      _normal -p watch && ret=0
     fi
     ;;
   # watch(1) has completely different semantics on freebsd compared to linux, hence:







Messages sorted by: Reverse Date, Date, Thread, Author