zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: completion examples
@ 1999-06-16  8:24 Sven Wischnowsky
  0 siblings, 0 replies; 2+ messages in thread
From: Sven Wischnowsky @ 1999-06-16  8:24 UTC (permalink / raw)
  To: zsh-workers


Here is a bit of cleanup for the completion functions. Most of the
patch just replaces uses of `compgen -[sk]' with calls to compadd
(which is almost always possible and often faster).
It also tries to improve `_make' and it adds `_gdb' (so remember to
use `-p0') -- which isn't perfect yet.

I've also added two configuration keys `ps_args' and `ps_listargs'
that are used by `_{wait,kill,gdb}' and give to `ps'. This is not in
the manual yet because I didn't know where to put it (we would need
a section for misc. configuaration keys, I think).

Bye
 Sven

diff -u -r oc/Base/_subscript Completion/Base/_subscript
--- oc/Base/_subscript	Wed Jun 16 08:22:10 1999
+++ Completion/Base/_subscript	Wed Jun 16 08:42:44 1999
@@ -1,7 +1,7 @@
 #compdef -subscript-
 
 if [[ ${(Pt)${compstate[parameter]}} = assoc* ]]; then
-  compgen -S ']' -k "( ${(kP)${compstate[parameter]}} )"
+  compadd -S ']' - "${(@kP)${compstate[parameter]}}"
 else
   _compalso -math-
 fi
diff -u -r oc/Builtins/_autoload Completion/Builtins/_autoload
--- oc/Builtins/_autoload	Wed Jun 16 08:22:12 1999
+++ Completion/Builtins/_autoload	Wed Jun 16 08:42:44 1999
@@ -1,3 +1,3 @@
 #compdef autoload
 
-compgen -s '${^fpath}/*(N:t)'
+compadd - ${^fpath}/*(N:t)
diff -u -r oc/Builtins/_bindkey Completion/Builtins/_bindkey
--- oc/Builtins/_bindkey	Wed Jun 16 08:22:12 1999
+++ Completion/Builtins/_bindkey	Wed Jun 16 08:42:44 1999
@@ -8,7 +8,7 @@
 # Where appropriate, will complete keymaps instead of widgets.
 
 if [[ "$words[2]" = -*[DAN]* || "$words[CURRENT-1]" = -*M ]]; then
-  compgen -s '$(bindkey -l)'
+  compadd - $(bindkey -l)
 else
   compgen -b -M 'r:|-=* r:|=*'
 fi
diff -u -r oc/Builtins/_echotc Completion/Builtins/_echotc
--- oc/Builtins/_echotc	Wed Jun 16 08:22:12 1999
+++ Completion/Builtins/_echotc	Wed Jun 16 08:42:45 1999
@@ -1,3 +1,3 @@
 #compdef echotc
 
-compgen -k '(al dc dl do le up al bl cd ce cl cr dc dl do ho is le ma nd nl se so up)'
+compadd al dc dl do le up al bl cd ce cl cr dc dl do ho is le ma nd nl se so up
diff -u -r oc/Builtins/_kill Completion/Builtins/_kill
--- oc/Builtins/_kill	Wed Jun 16 08:22:13 1999
+++ Completion/Builtins/_kill	Wed Jun 16 09:07:20 1999
@@ -3,13 +3,13 @@
 local list
 
 if compset -P 1 -; then
-  compgen -k "($signals[1,-3])"
+  compadd $signals[1,-3]
 else
   local ret=1
 
   compgen -P '%' -j && ret=0
-  list=("$(ps 2>/dev/null)")
-  compgen -y '$list' -s '${${${(f)"$(ps 2>/dev/null)"}[2,-1]## #}%% *}' && 
+  list=("${(@Mr:COLUMNS-1:)${(f)$(ps ${compconfig[ps_listargs]:-$compconfig[ps_args]} 2>/dev/null)}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*}")
+  compgen -y '$list' -s '${${${(f)"$(ps $compconfig[ps_args] 2>/dev/null)"}[2,-1]## #}%% *}' &&
     ret=0
 
   return ret
diff -u -r oc/Builtins/_limits Completion/Builtins/_limits
--- oc/Builtins/_limits	Wed Jun 16 08:22:13 1999
+++ Completion/Builtins/_limits	Wed Jun 16 08:42:45 1999
@@ -1,3 +1,3 @@
 #compdef limit unlimit
 
-compgen -s '${${(f)"$(limit)"}%% *}'
+compadd ${${(f)"$(limit)"}%% *}
diff -u -r oc/Builtins/_wait Completion/Builtins/_wait
--- oc/Builtins/_wait	Wed Jun 16 08:22:13 1999
+++ Completion/Builtins/_wait	Wed Jun 16 09:07:27 1999
@@ -1,9 +1,20 @@
 #compdef wait
 
+# This uses two configuration keys:
+#
+#  ps_args
+#    This can be set to options of the ps(1) command that should be
+#    used when invoking it to get the pids to complete.
+#
+#  ps_listargs
+#    This defaults to the value of the `ps_args' key and defines
+#    options for the ps command that are to be used when creating
+#    the list to display during completion.
+
 local list ret=1
 
 compgen -P '%' -j && ret=0
-list=("$(ps 2>/dev/null)")
-compgen -y '$list' -s '${${${(f)"$(ps 2>/dev/null)"}[2,-1]## #}%% *}' && ret=0
+list=("${(@Mr:COLUMNS-1:)${(f)$(ps ${compconfig[ps_listargs]:-$compconfig[ps_args]} 2>/dev/null)}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*}")
+compgen -y '$list' -s '${${${(f)"$(ps $compconfig[ps_args] 2>/dev/null)"}[2,-1]## #}%% *}' && ret=0
 
 return ret
diff -u -r oc/Builtins/_zmodload Completion/Builtins/_zmodload
--- oc/Builtins/_zmodload	Wed Jun 16 08:22:13 1999
+++ Completion/Builtins/_zmodload	Wed Jun 16 08:42:45 1999
@@ -5,7 +5,7 @@
 if [[ "$fl" = -*(a*u|u*a)* || "$fl" = -*a* && CURRENT -ge 4 ]]; then
   compgen -B
 elif [[ "$fl" = -*u* ]]; then
-  compgen -s '$(zmodload)'
+  compadd - $(zmodload)
 else
-  compgen -s '${^module_path}/*(N:t:r)'
+  compadd - ${^module_path}/*(N:t:r)
 fi
diff -u -r oc/User/_dd Completion/User/_dd
--- oc/User/_dd	Wed Jun 16 08:22:17 1999
+++ Completion/User/_dd	Wed Jun 16 08:42:45 1999
@@ -4,10 +4,9 @@
   # If there's a comma present, ignore up to the last one.  The
   # test alone will have that effect.
   compset -p '*,'
-  compgen -S, -q \
-      -k '(ascii ebcdic ibm block unblock lcase ucase swab noerror sync)'
+  compadd -qS, -q ascii ebcdic ibm block unblock lcase ucase swab noerror sync
 elif compset -P 1 '[io]f\='; then
   _files
 else
-  compgen -S '=' -k '(if of ibs obs bs cbs skip files seek count conv)'
+  compadd -S '=' if of ibs obs bs cbs skip files seek count conv
 fi
diff -u -r oc/User/_find Completion/User/_find
--- oc/User/_find	Wed Jun 16 08:22:17 1999
+++ Completion/User/_find	Wed Jun 16 08:42:45 1999
@@ -5,10 +5,10 @@
 if compset -N '-(ok|exec)' '\;'; then
   _normal
 elif compset -P 1 -; then
-  compgen -s 'daystart {max,min,}depth follow noleaf version xdev \
+  compadd daystart {max,min,}depth follow noleaf version xdev \
     {a,c,}newer {a,c,m}{min,time} empty false {fs,x,}type gid inum links \
     {i,}{l,}name {no,}{user,group} path perm regex size true uid used \
-    exec {f,}print{f,0,} ok prune ls'
+    exec {f,}print{f,0,} ok prune ls
 elif [[ CURRENT -eq 2 ]]; then
   local ret=1
 
@@ -19,7 +19,7 @@
 elif [[ "$prev" = -((a|c|)newer|fprint(|0|f)) ]]; then
   _files
 elif [[ "$prev" = -fstype ]]; then
-  compgen -k '(ufs 4.2 4.3 nfs tmp mfs S51K S52K)'
+  compadd ufs 4.2 4.3 nfs tmp mfs S51K S52K
 elif [[ "$prev" = -group ]]; then
   compgen -k groups
 elif [[ "$prev" = -user ]]; then
diff -u -r oc/User/_gdb Completion/User/_gdb
--- oc/User/_gdb	Wed Jun 16 09:29:56 1999
+++ Completion/User/_gdb	Wed Jun 16 09:29:29 1999
@@ -0,0 +1,49 @@
+#compdef gdb
+
+# This uses the configuration keys `ps_args' and `ps_listargs'
+# described in the `_wait' function.
+
+local cur="$words[CURRENT]" prev w list ret=1
+
+_long_options -t '*=(CORE|SYM)FILE'	'_files' \
+		 '*=EXECFILE'   	'_files *(*)' \
+		 '*=TTY'		'compadd /dev/tty*' && return 0
+
+if compset -P '-(cd|directory)='; then
+  _files -/
+elif compset -P '-tty='; then
+  compadd - /dev/tty*
+elif compset -P '-(exec|se)='; then
+  _files -/g '*(*)'
+elif compset -P '-(symbols|core|command)='; then
+  _files
+elif compset -P -; then
+  compadd -QS '' - symbols\= exec\= se\= core\= command\= directory\= \
+	           cd\= tty\=
+  compadd - help h s e c x d nx n quiet q batch fullname f b
+else
+  prev="$words[CURRENT-1]"
+
+  case "$prev" in
+  (-d) _files -/ && return 0 ;;
+  (-e) _files -/g '*(*)' && return 0 ;;
+  (-[csx]) _files && return 0 ;;
+  (-b) compadd -V baud 0 50 75 110 134 150 200 300 600 1200 1800 2400 4800 \
+                       9600 19200 38400 57600 115200 230400 && return 0 ;;
+  esac
+  w=( "${(@)words[2,-1]}" )
+  while [[ "$w[1]" = -* ]]; do
+    [[ "$w[1]" = -[decsxb] ]] && shift 1 w
+    shift 1 w
+  done
+
+  if [[ $#w -gt 1 ]]; then
+    _files && ret=0
+    list=("${(F)${(@Mr:COLUMNS-1:)${(f)$(ps ${compconfig[ps_listargs]:-$compconfig[ps_args]} 2>/dev/null)}[2,-1]:#[ 	]#${PREFIX}[0-9]#${SUFFIX}[ 	]*${w[1]}}}")
+    compgen -y '$list' -s "\${\${\${(M)\${(f)\"\$(ps $compconfig[ps_args] 2>/dev/null)\"}:#*${w[1]:t}*}## #}%% *}" && ret=0
+
+    return ret
+  else
+    _files -/g '*(*)'
+  fi
+fi
diff -u -r oc/User/_make Completion/User/_make
--- oc/User/_make	Wed Jun 16 08:22:17 1999
+++ Completion/User/_make	Wed Jun 16 08:42:46 1999
@@ -1,4 +1,24 @@
 #compdef make gmake pmake
 
-compgen -s "\$(awk '/^[a-zA-Z0-9][^\/ 	]+:/ {print \$1}' FS=: [mM]akefile /dev/null)" ||
-_files
+local prev="$words[CURRENT-1]" file ret=1
+
+if [[ "$prev" = -[CI] ]]; then
+  _files -/
+elif [[ "$prev" = -[foW] ]]; then
+  _files
+else
+  file="$words[(I)-f]"
+  if (( file )); then
+    file="$words[file+1]"
+  elif [[ -e Makefile ]]; then
+    file=Makefile
+  elif [[ -e makefile ]]; then
+    file=makefile
+  else
+    file=''
+  fi
+
+  [[ -n "$file" ]] &&
+    compadd - $(awk '/^[a-zA-Z0-9][^/ 	]+:/ {print $1}' FS=: $file) && ret=0
+  (( ret )) && _files
+fi
diff -u -r oc/User/_mh Completion/User/_mh
--- oc/User/_mh	Wed Jun 16 08:22:17 1999
+++ Completion/User/_mh	Wed Jun 16 08:42:46 1999
@@ -39,7 +39,7 @@
 elif [[ "$prev" = -(editor|(whatnow|rmm|show|more)proc) ]]; then
   compgen -c
 elif [[ "$prev" = -file ]]; then
-  compgen -f
+  _files
 elif [[ "$prev" = -(form|audit|filter) ]]; then
   # Need some MH template file, which may be in our own MH directory
   # or with the standard library.
@@ -69,7 +69,7 @@
     # leaving foldnam empty works here
   fi
 
-  compgen -s '$(mark $foldnam 2>/dev/null | awk -F: '\''{ print $1 }'\'')' &&
+  compadd $(mark $foldnam 2>/dev/null | awk -F: '{ print $1 }') &&
       ret=0
   compadd reply next cur prev first last all unseen && ret=0
   compgen -W folddir -g '<->' && ret=0
diff -u -r oc/User/_rlogin Completion/User/_rlogin
--- oc/User/_rlogin	Wed Jun 16 08:22:18 1999
+++ Completion/User/_rlogin	Wed Jun 16 08:42:46 1999
@@ -3,7 +3,7 @@
 if [[ CURRENT -eq 2 ]]; then
   compgen -k hosts
 elif [[ CURRENT -eq 3 ]]; then
-  compgen -k '(-l)'
+  compadd - -l
 else
   compgen -u
 fi
diff -u -r oc/User/_x_options Completion/User/_x_options
--- oc/User/_x_options	Wed Jun 16 08:22:17 1999
+++ Completion/User/_x_options	Wed Jun 16 08:42:46 1999
@@ -2,4 +2,4 @@
 
 # A simple pattern completion, just as an example.
 
-compgen -J options -k '(-display -name -xrm)'
+compadd -J options - -display -name -xrm

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 2+ messages in thread

* PATCH: completion examples
@ 1999-03-22 12:44 Sven Wischnowsky
  0 siblings, 0 replies; 2+ messages in thread
From: Sven Wischnowsky @ 1999-03-22 12:44 UTC (permalink / raw)
  To: zsh-workers


Here are the changes for the example functions...

The most important change is that I've split `_main_complete' in several 
functions, which I called `completers' for now. The original
completion code is in `_complete', the correcting completion is in
`_approximate' (any suggestions for a better name, anyone?) and then
there is a new one called `_correct' which does only correction, not
completion. `_main_complete' now mainly calls the completer functions
given by `compconf completer=...'. The default value is only
`_complete', but you set this to, e.g.: 

  compconf completer=_complete:_correct:_approximate

which will make _main_complete call them in turn to generate matches
until one returns zero (which means that matches were found).

Along with this goes a bit of cleaning up and enhancing in the
configuration values. What was `correct_orig' is now
`correct_original' and what was `correct' is now `correct_accept',
hopefully making this cleaner and more name-spacish. Also,
`_approximate' now first tries to use the keys `approximate_accept',
`approximate_prompt', and so on. If they are not set, the ones with a
`correct' in front are used. The `_correct' completer only uses the
second ones, which allows you to give different values for correction
only and correcting completion. To make this more fun, the
`..._accept' keys have a new feature: if they contain both an [nN] and
a `!', the correction is only tried if *no* numeric argument is
given. E.g. if you have:

  compconf correct_accept='2n!' approximate_accept=2n

and do `M-2 TAB', you will get correcting completion, not only
correction (for the difference between the two, try `Srt<TAB>' in the
main directory of the distribution, btw).
Note also that there is now a default value for `correct_accept', which
should be acceptable because you'll have to set the `completer' key to 
get correction (but maybe you'll like to suggest a differnt value than 
`2n'?).
There is also a new configuration key `{correct,approximate}_insert'.
If this is set to anything starting with `unambig', the code will
insert an unambiguous string if there is a sensible one instead of
always starting menu-completion (this affects only those of us who
don't always use menu-completion, of course). For now `sensible' means 
just that the unambiguous string is at least as long as the original
one. I'll have to play with this some more to know what one may want
to configure there.

Other smaller changes:

- The documentation for the configuration stuff is now in
  `_main_complete' and the completer functions.
- I've put the `_math' function back which was missing in the
  distribution.
- Then I've changed `_tilde', `_math', and `_brace_parameter' to use the
  `ISUFFIX' parameter to allow in-word completion.

Apart from the question for a bettern name for `approximate' here
is another question: we could make `compinit' be aware of the
completer functions and make it find them automatically (e.g. with a
new tag `#completer'). It could then make the code use all completer
functions found, for which we would need to make them ordered. This
could be done the way Peter suggested it for pattern completions,
naming them `_0_complete', `_1_correct', and so on. Personally I think 
the current way is probably better, but at least I wanted to mention
it -- should we...? Or maybe we should at least put them in a separate 
directory?

Anyway, thanks go to Peter and Bart to make me think about `_correct'.


Bye
 Sven

P.S.: And finally: I forgot to say that the patch I just send for
      tricky.c should also solve the problem Andrej reported in 5864.


begin 600 patch-example.gz
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
4Y-0X:XXI!/DBC_\!5[#XO<YV````
`
end

--
Sven Wischnowsky                         wischnow@informatik.hu-berlin.de


^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~1999-06-16  8:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
1999-06-16  8:24 PATCH: completion examples Sven Wischnowsky
  -- strict thread matches above, loose matches on Subject: below --
1999-03-22 12:44 Sven Wischnowsky

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).