* 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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
M12?]JNC:-.2TOG(GU*7T1"R/56K`GY,(0M(9<AQ*G:9XW7@TR@.]#'_U8
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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).