about summary refs log tree commit diff
path: root/Completion
diff options
context:
space:
mode:
Diffstat (limited to 'Completion')
-rw-r--r--Completion/Base/Widget/_complete_debug5
-rw-r--r--Completion/Unix/Command/_pine12
-rw-r--r--Completion/Zsh/Command/_zle60
-rw-r--r--Completion/Zsh/Command/_zstyle5
4 files changed, 40 insertions, 42 deletions
diff --git a/Completion/Base/Widget/_complete_debug b/Completion/Base/Widget/_complete_debug
index 1f12e8b9f..4948426f9 100644
--- a/Completion/Base/Widget/_complete_debug
+++ b/Completion/Base/Widget/_complete_debug
@@ -4,7 +4,7 @@ eval "$_comp_setup"
 
 (( $+_debug_count )) || integer -g _debug_count
 local tmp=${TMPPREFIX}${$}${words[1]:t}$[++_debug_count]
-local w="${(qq)words}"
+local pager w="${(qq)words}"
 
 exec 3>&-	# Too bad if somebody else is using it ...
 [[ -t 2 ]] && { exec 3>&2 2>| $tmp ; trap 'exec 2>&3 3>&-' EXIT INT }
@@ -15,7 +15,8 @@ integer ret=$?
 unsetopt xtrace
 
 [[ -t 3 ]] && {
-    print -sR "${VISUAL:-${EDITOR:-${PAGER:-more}}} ${(q)tmp} ;: $w"
+    zstyle -s ':completion:complete-debug::::' pager pager
+    print -sR "${pager:-${PAGER:-${VISUAL:-${EDITOR:-more}}}} ${(q)tmp} ;: $w"
     _message -r "Trace output left in $tmp (up-history to view)"
     [[ $compstate[nmatches] -le 1 && $compstate[list] != *force* ]] &&
         compstate[list]='list force messages'
diff --git a/Completion/Unix/Command/_pine b/Completion/Unix/Command/_pine
index 7c64d8fe1..5c94c7bd7 100644
--- a/Completion/Unix/Command/_pine
+++ b/Completion/Unix/Command/_pine
@@ -42,12 +42,12 @@ _arguments -C -s \
   "($opts $send)-o[open first folder read-only]" \
   "(-F -h -v)-r[restricted - can only send mail to oneself]" \
   "(-h -v)-d[set debug level]:debug:(0 1 2 3 4 5 6 7 8 9 flush timestamp imap= numfiles= verbose=)" \
-  "(${opts#-F})-k[force use of function keys]" \
-  "(${opts#-F})-z[allow use of ^Z suspension]" \
-  "(${opts#-F})-p+[use alternate .pinerc file]:alternate pinerc:_files" \
-  "(${opts#-F})-P+[use alternate pine.conf file]:alternate pine.conf:_files" \
-  "(${opts#-F})-x[use configuration exceptions file]:configuration exceptions file:_files" \
-  "(${opts#-F})-bail[exit if pinerc file doesn't already exist]" \
+  \(${(j. .)opts:#-F}')-k[force use of function keys]' \
+  \(${(j. .)opts:#-F}')-z[allow use of ^Z suspension]' \
+  \(${(j. .)opts:#-F}')-p+[use alternate .pinerc file]:alternate pinerc:_files' \
+  \(${(j. .)opts:#-F}')-P+[use alternate pine.conf file]:alternate pine.conf:_files' \
+  \(${(j. .)opts:#-F}')-x[use configuration exceptions file]:configuration exceptions file:_files' \
+  \(${(j. .)opts:#-F}")-bail[exit if pinerc file doesn't already exist]" \
   '*::recipient:->userhost' \
   ${^_cache_pine_options}':option value' && return 0
 
diff --git a/Completion/Zsh/Command/_zle b/Completion/Zsh/Command/_zle
index 2d707a22c..1e787e54f 100644
--- a/Completion/Zsh/Command/_zle
+++ b/Completion/Zsh/Command/_zle
@@ -1,7 +1,7 @@
 #compdef zle
 
-local expl ret=1 st
-local -a opts compwids state
+local expl ret=1
+local -a opts compwids state line context
 
 compwids=(accept-and-menu-complete
 	  complete-word
@@ -19,59 +19,55 @@ _arguments -s -S \
     "($opts)-A[define widget alias]:old widget:->widget :new widget:->widget" \
     "($opts)-C[define completion widget]:new widget name:->comp-widget :completion widget:->builtin-comp-widget :widget shell function:->function" \
     "($opts)-D[delete widget]:*:widget:->widget" \
-    "(${opts#-l})-L+[with -l, list as commands]:*:-:->listing" \
-    "(${opts#-[La]})-l+[list user-defined widgets]:*:-:->listing" \
-    "(${opts#-l})-a+[with -l, list all widgets]:*:-:->listing" \
+    \(${(j. .)opts:#-l}')-L[with -l, list as commands]' \
+    \(${(j. .)opts:#-[La]}')-l+[list user-defined widgets]:*:-:->listing' \
+    \(${(j. .)opts:#-l}')-a[with -l, list all widgets]' \
     "($opts)-M[display message]:message: " \
     "($opts)-N[define new widget]:widget name:->widget-or-function ::widget shell function:->function" \
-    "(${opts#-c})-R+[redisplay]:*:-:->redisplay" \
-    "(${opts#-R})-c+[with -R, clear listing]:*:-:->redisplay" \
+    \(${(j. .)opts:#-c}')-R+[redisplay]:*:-:->redisplay' \
+    \(${(j. .)opts:#-R}')-c[with -R, clear listing]' \
     "($opts)-U[unget to input stack]:string: " \
-    '(-)::widget name:->call'
+    '(-):widget:->widget' \
+    '(-)*::widget args:->args' && ret=0
 
 [[ $state == listing ]] &&
-  _arguments -s -S \
-    "-l[list user-defined widgets]" \
+  _arguments -s -S '!-l' \
     "(-a)-L[list as commands]" \
     "(-L)-a[list all widgets]" \
-    '(-)*:widget name:->widget'
+    '*:widget name:->widget' && ret=0
 
-for st in $state; do
-  case $st in
-    (call)
-      if ((CURRENT > 2)); then
-	_arguments \
-          '(-N)-n[numeric prefix]:number: ' \
-	  '(-n)-N[reset numeric prefix]' \
-	  ':widget::' '(-)*:widget arguments: ' && ret=0
-	  # :widget:: is a placeholder so we needn't shift words
-	continue
-      fi
-      ;&
+while (( $#state )); do
+  case "$state[1]" in
+    (args)
+      _arguments \
+        '(-N)-n[numeric prefix]:number:' \
+	'(-n)-N[reset numeric prefix]' \
+	'(-)*:widget arguments: ' && ret=0
+      ;;
     (widget*)
-      _wanted widgets expl widget compadd -k widgets && ret=0
+      _wanted -C "$context[1]" widgets expl widget compadd -k widgets && ret=0
       [[ $st != *function ]] && continue
       ;&
     (function)
-      _wanted functions expl 'widget shell function' \
+      _wanted -C "$context[1]" functions expl 'widget shell function' \
 	compadd -k functions && ret=0
       ;;
     (comp-widget)
-      _wanted widgets expl 'completion widget' \
+      _wanted -C "$context[1]" widgets expl 'completion widget' \
 	compadd -k "widgets[(R)(*:|)(.|)(${(j(|))compwids})(|:*)]" && ret=0
       ;&
     (builtin-comp-widget)
-      _wanted widgets expl 'builtin completion widget' \
+      _wanted -C "$context[1]" widgets expl 'builtin completion widget' \
 	compadd -k "widgets[(I)(.|)(${(j(|))compwids})]" && ret=0
       ;;
     (redisplay)
-      _arguments -s \
-        "-R[redisplay]" \
-	"(*)-c[clear listing]" \
-	"(-)::status line: " "*:strings to list: " && ret=0
+      _arguments -s -S '!-R' \
+	"-c[clear listing]" \
+	":status line" "*:strings to list" && ret=0
       ;;
-    (*) ret=$?;;
   esac
+  shift 1 state
+  shift 1 context
 done
 
 return ret
diff --git a/Completion/Zsh/Command/_zstyle b/Completion/Zsh/Command/_zstyle
index 48a39deed..bec258e1f 100644
--- a/Completion/Zsh/Command/_zstyle
+++ b/Completion/Zsh/Command/_zstyle
@@ -89,6 +89,7 @@ styles=(
   original		 c:bool
   packageset		 c:packageset
   path			 c:_directories
+  pager			 c:_command_names
   pine-directory         c:_directories
   ports			 c:_ports
   prefix-hidden		 c:bool
@@ -233,8 +234,8 @@ while (( $#state )); do
 
     functions)
       _wanted comp-widget expl 'completion widget' \
-          compadd $suf - all-matches complete-tag correct-word expand-word \
-	  expand-alias-word history-words
+          compadd $suf - all-matches complete-debug complete-tag \
+	  correct-word expand-word expand-alias-word history-words
       ;;
 
     user-host-port)