about summary refs log tree commit diff
diff options
context:
space:
mode:
authorTanaka Akira <akr@users.sourceforge.net>2000-02-28 10:00:25 +0000
committerTanaka Akira <akr@users.sourceforge.net>2000-02-28 10:00:25 +0000
commitd726746c3d16f7606d984c94ca1cc6b59d192d30 (patch)
treed17ac391752eeebf923b789bb9dbe5684df125c0
parent8fb50dcf4ff1897d792e488f4d6dfeab2d9a5e19 (diff)
downloadzsh-d726746c3d16f7606d984c94ca1cc6b59d192d30.tar.gz
zsh-d726746c3d16f7606d984c94ca1cc6b59d192d30.tar.xz
zsh-d726746c3d16f7606d984c94ca1cc6b59d192d30.zip
manual/9897
-rw-r--r--Completion/Base/_arguments2
-rw-r--r--Completion/Builtins/_pids10
-rw-r--r--Completion/Linux/_rpm4
-rw-r--r--Completion/User/_a2ps2
-rw-r--r--Completion/User/_archie2
-rw-r--r--Completion/User/_diff_options2
-rw-r--r--Completion/User/_finger2
-rw-r--r--Completion/User/_groups2
-rw-r--r--Completion/User/_gs2
-rw-r--r--Completion/User/_killall2
-rw-r--r--Completion/User/_lp2
-rw-r--r--Completion/User/_telnet2
-rw-r--r--Completion/User/_users_on2
-rw-r--r--Completion/User/_yp4
-rw-r--r--Completion/X/_x_font2
-rw-r--r--Completion/X/_x_window2
-rw-r--r--Doc/Zsh/compsys.yo54
17 files changed, 65 insertions, 33 deletions
diff --git a/Completion/Base/_arguments b/Completion/Base/_arguments
index 50c368b11..472f085d5 100644
--- a/Completion/Base/_arguments
+++ b/Completion/Base/_arguments
@@ -67,7 +67,7 @@ if (( long )); then
     # those hyphens and anything from the space or comma after the
     # option up to the end. 
 
-    lopts=("--${(@)^${(@)${(@)${(@M)${(@ps:\n:j:\n:)${(@)${(@M)${(@f)$(${~words[1]} --help 2>&1)//\[--/
+    lopts=("--${(@)^${(@)${(@)${(@M)${(@ps:\n:j:\n:)${(@)${(@M)${(@f)$(_call options ${~words[1]} --help 2>&1)//\[--/
 --}:#[ 	]#-*}//,/
 }}:#[ 	]#--*}#*--}%%[], ]*}:#}")
     lopts=( "${(@)lopts:#--}" )
diff --git a/Completion/Builtins/_pids b/Completion/Builtins/_pids
index d74cd9a56..92fc9bac7 100644
--- a/Completion/Builtins/_pids
+++ b/Completion/Builtins/_pids
@@ -12,17 +12,17 @@ if [[ "$1" = -m ]]; then
   shift 2
 fi
 
-zstyle -a ":completion:${curcontext}:ps" arguments args
+zstyle -s ":completion:${curcontext}:pids" command args
 
-out="$(command ps $args 2>/dev/null)"
+out="$(_call pids ps 2>/dev/null)"
 
 if zstyle -T ":completion:${curcontext}:processes" verbose; then
-  zstyle -a ":completion:${curcontext}:ps" list-arguments listargs
+  zstyle -s ":completion:${curcontext}:pids-list" command listargs
   (( $#listargs )) || listargs=( "$args[@]" )
   if [[ "$listargs" = "$args" ]]; then
     list=("${(@Mr:COLUMNS-1:)${(f@)out}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*${~match}}")
   else
-    list=("${(@Mr:COLUMNS-1:)${(f@)$(command ps $listargs 2>/dev/null)}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*${~match}}")
+    list=("${(@Mr:COLUMNS-1:)${(f@)$(_call pids-list ps 2>/dev/null)}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*${~match}}")
   fi
   desc=(-ld list)
 else
@@ -30,4 +30,4 @@ else
 fi
 
 compadd "$expl[@]" "$@" "$desc[@]" - \
-    ${${${(M)${(f)"$(command ps $args 2>/dev/null)"}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]#*${~match}}## #}%% *}
+    ${${${(M)${(f)"${out}"}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]#*${~match}}## #}%% *}
diff --git a/Completion/Linux/_rpm b/Completion/Linux/_rpm
index a1bd5281b..d5978eb0b 100644
--- a/Completion/Linux/_rpm
+++ b/Completion/Linux/_rpm
@@ -190,7 +190,7 @@ while [[ -n "$state" ]]; do
     ;&
   package)
     _wanted packages expl 'RPM package' &&
-        compadd "$expl[@]" -M 'r:|-=* r:|=*' - $(rpm -qa) && ret=0
+        compadd "$expl[@]" -M 'r:|-=* r:|=*' - $(_call packages rpm -qa) && ret=0
     ;;
   package_file)
     if compset -P ftp://; then
@@ -205,7 +205,7 @@ while [[ -n "$state" ]]; do
     if compset -P '*\{'; then
       _wanted tags expl 'RPM tag' &&
           compadd "$expl[@]" -M 'm:{a-z}={A-Z}' -S '\}' - \
-                  "${(@)${(@f)$(rpm --querytags)}#RPMTAG_}" && ret=0
+                  "${(@)${(@f)$(_call tags rpm --querytags)}#RPMTAG_}" && ret=0
     else
       _message 'RPM format'
     fi
diff --git a/Completion/User/_a2ps b/Completion/User/_a2ps
index 5fbe1990b..d7c9b68e9 100644
--- a/Completion/User/_a2ps
+++ b/Completion/User/_a2ps
@@ -7,7 +7,7 @@ if [[ "$words[1]" != "$_a2ps_cache_cmd" ]]; then
 
   _a2ps_cache_cmd="$words[1]"
 
-  descr=( "${(@)${(f@)$(LC_ALL=C $words[1] --list=features)//
+  descr=( "${(@)${(f@)$(_call features LC_ALL=C $words[1] --list=features)//
  /	}:#}" )
 
   _a2ps_cache_values=(
diff --git a/Completion/User/_archie b/Completion/User/_archie
index e1c9156fa..57a5db494 100644
--- a/Completion/User/_archie
+++ b/Completion/User/_archie
@@ -24,7 +24,7 @@ _arguments -C -s \
 
 case "$state" in
 serverhost)
-  : ${(A)archie_servers:=${(M)$(archie -L):#archie.*}}
+  : ${(A)archie_servers:=${(M)$(_call hosts archie -L):#archie.*}}
 
   _wanted hosts expl 'archie servers' && compadd "$expl[@]" -  $archie_servers
   ;;
diff --git a/Completion/User/_diff_options b/Completion/User/_diff_options
index 5cae712d3..4d994acb6 100644
--- a/Completion/User/_diff_options
+++ b/Completion/User/_diff_options
@@ -4,7 +4,7 @@ local of ofwuc ouc oss ofwy ofwg ofwl
 
 (( $+_diff_is_gnu )) || {
 	_diff_is_gnu=0;
-        [[ $(command diff -v </dev/null 2>/dev/null) == *GNU* ]] && _diff_is_gnu=1
+        [[ $(_call version diff -v </dev/null 2>/dev/null) == *GNU* ]] && _diff_is_gnu=1
 }
 
 if (( _diff_is_gnu ))
diff --git a/Completion/User/_finger b/Completion/User/_finger
index 9b5760be7..0846acf4e 100644
--- a/Completion/User/_finger
+++ b/Completion/User/_finger
@@ -4,7 +4,7 @@ local curcontext="$curcontext" state line
 typeset -A opt_args
 
 if (( ! $+_finger_args )); then
-  local help="$(finger -\? 2>&1)"
+  local help="$(_call options finger -\? 2>&1)"
   local -A optionmap
 
 ## `finger -\?':
diff --git a/Completion/User/_groups b/Completion/User/_groups
index 74efe179b..b4ecab38c 100644
--- a/Completion/User/_groups
+++ b/Completion/User/_groups
@@ -7,7 +7,7 @@ _wanted groups expl group || return 1
 if ! zstyle -a ":completion:${curcontext}:" groups groups; then
   (( $+_cache_groups )) ||
       if (( ${+commands[ypcat]} )); then
-        : ${(A)_cache_groups:=${${(s: :)$(ypcat group.byname)}%%:*}} # If you use YP
+        : ${(A)_cache_groups:=${${(s: :)$(_call groups ypcat group.byname)}%%:*}} # If you use YP
       else
         : ${(A)_cache_groups:=${${(s: :)$(</etc/group)}%%:*}}
       fi
diff --git a/Completion/User/_gs b/Completion/User/_gs
index e81611ef9..8ae5a65f9 100644
--- a/Completion/User/_gs
+++ b/Completion/User/_gs
@@ -36,7 +36,7 @@ else
       case "$IPREFIX" in
       *DEVICE\=)
         _wanted devices expl 'ghostscript device' &&
-            compadd "$expl[@]" - "${(@)${=${$(gs -h)##* devices:}%%Search path:*}:#}" && ret=0
+            compadd "$expl[@]" - "${(@)${=${$(_call devices gs -h)##* devices:}%%Search path:*}:#}" && ret=0
         ;;
       *OutputFile\=)
         _description files expl 'output file'
diff --git a/Completion/User/_killall b/Completion/User/_killall
index 05bc8e709..f305e2ef4 100644
--- a/Completion/User/_killall
+++ b/Completion/User/_killall
@@ -3,7 +3,7 @@
 if [[ "$OSTYPE" = linux* ]]; then
   _alternative \
       'signals:: _signals -p' \
-      'processes:process:{ compadd "$expl[@]" ${$(ps ho comm 2> /dev/null):#(ps|COMMAND)} }'
+      'processes:process:{ compadd "$expl[@]" ${$(_call pids ps ho comm 2> /dev/null):#(ps|COMMAND)} }'
 else
   _signals -p
 fi
diff --git a/Completion/User/_lp b/Completion/User/_lp
index d1c110b1c..51fbb1616 100644
--- a/Completion/User/_lp
+++ b/Completion/User/_lp
@@ -64,7 +64,7 @@ else
     else
       printer=()
     fi
-    list=( ${(M)"${(f@)$(lpq $printer 2> /dev/null)}":#[0-9]*} )
+    list=( ${(M)"${(f@)$(_call jobs lpq $printer 2> /dev/null)}":#[0-9]*} )
 
     if (( $#list )); then
       _tags users jobs
diff --git a/Completion/User/_telnet b/Completion/User/_telnet
index 9df23b87c..2542ff34d 100644
--- a/Completion/User/_telnet
+++ b/Completion/User/_telnet
@@ -9,7 +9,7 @@ local curcontext="$curcontext" state line expl
 typeset -A opt_args
 
 if (( ! $+_telnet_args )); then
-  local help="$(telnet -\? < /dev/null 2>&1)"
+  local help="$(_call options telnet -\? < /dev/null 2>&1)"
   local -A optionmap
   optionmap=(
     '*\[-8\]*' '-8[allow 8-Bit data]'
diff --git a/Completion/User/_users_on b/Completion/User/_users_on
index 0589e7059..f620f83c7 100644
--- a/Completion/User/_users_on
+++ b/Completion/User/_users_on
@@ -6,7 +6,7 @@ _tags users || return 1
 
 if which users >/dev/null; then
   _description users expl 'users logged on'
-  compadd "$@" "$expl[@]" - $(users) && return 0
+  compadd "$@" "$expl[@]" - $(_call users users) && return 0
 else
   # Other methods of finding out users logged on should be added here
   return 1
diff --git a/Completion/User/_yp b/Completion/User/_yp
index 1e86bf278..fe3c0a482 100644
--- a/Completion/User/_yp
+++ b/Completion/User/_yp
@@ -4,8 +4,8 @@ local curcontext="$curcontext" line state ret=1
 typeset -A opt_args
 
 if (( ! $+_yp_cache_maps )); then
-  _yp_cache_maps=( "${(@)${(@f)$(ypwhich -m)}%% *}" )
-  _yp_cache_nicks=( "${(@)${(@)${(@f)$(ypwhich -x)}#*\"}%%\"*}" )
+  _yp_cache_maps=( "${(@)${(@f)$(_call maps ypwhich -m)}%% *}" )
+  _yp_cache_nicks=( "${(@)${(@)${(@f)$(_call names ypwhich -x)}#*\"}%%\"*}" )
   _yp_args=(
     '(-x)-d[specify domain]:domain name:' \
     '(-x)-k[display keys]' \
diff --git a/Completion/X/_x_font b/Completion/X/_x_font
index 59c628d6d..1be2d3312 100644
--- a/Completion/X/_x_font
+++ b/Completion/X/_x_font
@@ -9,7 +9,7 @@ _wanted fonts expl font || return 1
 if (( ! $+_font_cache )); then
   typeset -gU _font_cache
 
- _font_cache=( "${(@)^${(@f)$(xlsfonts)}%%--*}--" )
+ _font_cache=( "${(@)^${(@f)$(_call fonts xlsfonts)}%%--*}--" )
 fi
 
 compadd -M 'r:|-=* r:|=*' "$expl[@]" "$@" -S '' - "$_font_cache[@]"
diff --git a/Completion/X/_x_window b/Completion/X/_x_window
index 139210f32..a79f7fd62 100644
--- a/Completion/X/_x_window
+++ b/Completion/X/_x_window
@@ -4,7 +4,7 @@ local list expl
 
 _tags windows || return 1
 
-list=( "${(@)${(M@)${(@f)$(xwininfo -root -tree)}:#[ 	]#0x[0-9a-f]# \"*}##[ 	]#}" )
+list=( "${(@)${(M@)${(@f)$(_call windows xwininfo -root -tree)}:#[ 	]#0x[0-9a-f]# \"*}##[ 	]#}" )
 
 if [[ "$1" = -n ]]; then
   shift
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index 27e52c8b2..bc5c70ef4 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -587,6 +587,13 @@ item(tt(paths))(
 used to look up the values of the tt(expand), tt(cursor) and
 tt(special-dirs) styles
 )
+item(tt(pids))(
+for process identifiers
+)
+item(tt(pids-list))(
+used to look up the tt(command) style when generating the list to
+display for process identifiers
+)
 item(tt(pods))(
 for perl pods
 )
@@ -602,9 +609,6 @@ for printer names
 item(tt(processes))(
 for process identifiers
 )
-item(tt(ps))(
-used to look up the tt(arguments) and tt(list-arguments) styles
-)
 item(tt(sequences))(
 for sequences (e.g. tt(mh) sequences)
 )
@@ -674,10 +678,6 @@ item(tt(add-space))(
 This style is used by the tt(_prefix) completer to decide if a space
 should be inserted before the suffix.
 )
-item(tt(arguments))(
-The value of this style is given to the tt(ps) command by functions
-that call it when generating process identifiers as matches.
-)
 item(tt(auto-description))(
 If set, this style's value will be used as the description for options which
 are not described by the completion functions, but that have exactly
@@ -693,6 +693,25 @@ should be a pattern and all keys matching this pattern will cause the
 widget to stop incremental completion without the key having any
 further effect.
 )
+item(tt(command))(
+This style can be used to override the defaults in several completion
+functions for how commands are called to generate information about
+possible matches. The strings in the value are joined with spaces
+between them to build the command line to execute. If the value starts 
+with a hyphen the string built will be prepended to the default
+supplied by the completion function. This allows one to easily stick a 
+tt(builtin) or tt(command) in front of the default in case one has,
+for example, a shell function with the same name as the command
+called, but for completion purposes one needs to ensure that the real
+command is called.
+
+For example, the function generating process IDs as matches uses this
+style with the tt(pids) tag to generate the IDs to complete and iwhen
+the tt(verbose) style is `true', it uses this style with the
+tt(pids-list) tag to generate the strings to display. When using
+different values for these two tags one should ensure that the process
+IDs appear in the same order in both lists.
+)
 item(tt(completer))(
 The strings given as the value of this style give the names of the
 completer functions to use. The available completer functions are
@@ -1005,10 +1024,6 @@ The tt(predict-on) widget uses this style to decide if the completion
 should be shown even if there is only one possible completion. This is 
 done if the value of this style is the string tt(always).
 )
-item(tt(list-arguments))(
-Like the tt(arguments) style, but used when calling the tt(ps) command 
-to generate the list to display.
-)
 item(tt(list-colors))(
 If the tt(zsh/complist) module is used, this style can be used to set
 color specifications as with the tt(ZLS_COLORS) and tt(ZLS_COLOURS)
@@ -1469,6 +1484,10 @@ item(tt(users-hosts-ports))(
 Like tt(users-hosts) but used for commands like tt(telnet) and
 containing strings of the form `var(user)tt(@)var(host)tt(:)var(port)'.
 )
+item(tt(users-hosts-ports))(
+Like tt(users-hosts) but used for commands like tt(telnet) and
+containing strings of the form `var(user)tt(@)var(host)tt(:)var(port)'.
+)
 item(tt(verbose))(
 This is used in several contexts to decide if only a simple or a
 verbose list of matches should be generated. For example some commands 
@@ -1909,6 +1928,19 @@ example, the function completing inside subscripts might use
 `tt(_compalso -math-)' to include the completions generated for
 mathematical environments.
 )
+findex(_call)
+item(tt(_call) var(tag) var(string) ...)(
+This function is used in places where a command is called and the user 
+should have the possibility to override the default for calling this
+command. It looks up the tt(command) style with the supplied
+var(tag). If the style is set, its value is used as the command to
+execute.
+
+In any case, the var(strings) from the call to tt(_call) or from the
+style are concatenated with spaces between them and the resulting
+string is evaluated. The return value is the return value of the
+command called.
+)
 findex(_normal)
 item(tt(_normal))(
 This function is used for normal command completion.  If