aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog9
-rw-r--r--Completion/Unix/Type/_email_addresses20
-rw-r--r--Doc/Zsh/compsys.yo24
3 files changed, 43 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index e3375dd7f..722135d94 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,12 @@
+2003-01-29 Oliver Kiddle <opk@zsh.org>
+
+ * 18156: Completion/Unix/Type/_email_addresses, Doc/Zsh/compsys.yo:
+ use more conventional reply array for plugins, document new styles
+ used in _email_addresses and document bashcompinit
+
+ * 18149, 18153: Completion/bashcompinit: new function for
+ emulating bash's programmable completion system
+
2003-01-27 Bart Schaefer <schaefer@zsh.org>
* 18144: Src/init.c: no SIGHUP handler if parent was ignoring
diff --git a/Completion/Unix/Type/_email_addresses b/Completion/Unix/Type/_email_addresses
index fe4f252c8..3d2ce2911 100644
--- a/Completion/Unix/Type/_email_addresses
+++ b/Completion/Unix/Type/_email_addresses
@@ -7,14 +7,14 @@
#
# Plugins are written as separate functions with names starting `_email-'.
# They should either do their own completion or return the addresses in the
-# ali array in the form 'alias:address' and return 300. The -c option is
+# reply array in the form 'alias:address' and return 300. The -c option is
# passed on to plugins (and -n could be if needed ever). New plugins will be
# picked up and run automatically.
# plugins
(( $+functions[_email-mail] )) ||
_email-mail() {
- ali=( ${${${(M)${(f)"$(<$files[$plugin])"}:#alias*}##alias[[:blank:]]##}/[[:blank:]]##/:} )
+ reply=( ${${${(M)${(f)"$(<$files[$plugin])"}:#alias*}##alias[[:blank:]]##}/[[:blank:]]##/:} )
return 300
}
(( $+functions[_email-mutt] )) || _email-mutt() { _email-mail }
@@ -22,13 +22,13 @@ _email-mail() {
(( $+functions[_email-MH] )) ||
_email-MH() {
- ali=( ${${(f)"$(_call_program aliases ali)"}/: /:} )
+ reply=( ${${(f)"$(_call_program aliases ali)"}/: /:} )
return 300
}
(( $+functions[_email-pine] )) ||
_email-pine() {
- ali=( ${${${${${(f)"$(<~/.addressbook)"}:#*DELETED*}:#\ *}/ [^ ]# /:}%% *} )
+ reply=( ${${${${${(f)"$(<~/.addressbook)"}:#*DELETED*}:#\ *}/ [^ ]# /:}%% *} )
return 300
}
@@ -77,7 +77,7 @@ _email-local() {
}
_email_addresses() {
- local -a plugins ali list args
+ local -a plugins reply list args
local -A opts files
local plugin rcfile expl ret fret
@@ -147,17 +147,17 @@ _email_addresses() {
if (( fret == 300 )); then
if (( ! $+opts[-c] )) && [[ $opts[-n] = $plugin ]]; then
- zformat -a list ' -- ' "${ali[@]}"
+ zformat -a list ' -- ' "${reply[@]}"
_wanted mail-aliases expl 'alias' compadd "$@" \
- -d list - ${ali%%:*} && ret=0
+ -d list - ${reply%%:*} && ret=0
else
if (( $#args )); then
- ali=( ${(SM)${ali#*:}##$~__addrspec} )
+ reply=( ${(SM)${reply#*:}##$~__addrspec} )
else
# remove lines not containing `@' as they probably aren't addresses
- ali=( "${(@)${(M@)ali:#*@*}#*:}" )
+ reply=( "${(@)${(M@)reply:#*@*}#*:}" )
fi
- compadd -a "$@" "$expl[@]" ali && ret=0
+ compadd -a "$@" "$expl[@]" reply && ret=0
fi
fi
done
diff --git a/Doc/Zsh/compsys.yo b/Doc/Zsh/compsys.yo
index e589533cf..a8a1bbe42 100644
--- a/Doc/Zsh/compsys.yo
+++ b/Doc/Zsh/compsys.yo
@@ -1244,6 +1244,15 @@ time. If the style is set to any other value, or is unset, files will be
sorted alphabetically by name. If the value contains the string
`tt(reverse)', sorting is done in decreasing order.
)
+kindex(filter, completion style)
+item(tt(filter))(
+This is used by the LDAP plugin for e-mail address completion to specify
+the attributes to match against when filtering entries. So for example, if
+the style is set to `tt(sn)', matching is done against surnames. Standard
+LDAP filtering is used so normal completion matching is bypassed. If this
+style is not set, the LDAP plugin is skipped. You may also need to set the
+tt(command) style before it can connect to your LDAP server though.
+)
kindex(force-list, completion style)
item(tt(force-list))(
This forces a list of completions to be shown at any point where listing is
@@ -2091,6 +2100,13 @@ the opposite end of the history. If this style is set to `false' (the
default), tt(_history_complete_word) will loop immediately as in a
menu completion.
)
+kindex(strip-comments, completion style)
+item(tt(strip-comments))(
+If set to `true', this style causes non-essential comment text to be
+removed from the completion matches. Currently it is only used when
+completing e-mail addresses where it removes any display name from the
+addresses, cutting them down to plain var(user@host) form.
+)
kindex(subst-globs-only, completion style)
item(tt(subst-globs-only))(
This is used by the tt(_expand) completer. If it is set to `true',
@@ -2856,6 +2872,14 @@ tt(COMPLETE_IN_WORD) option is set; otherwise, the cursor will
be moved to the end of the current word before the completion code is
called and hence there will be no suffix.
)
+findex(bashcompinit)
+item(tt(bashcompinit))(
+This function provides compatibility with bash's programmable completion
+system. When run it will define the functions, tt(compgen) and
+tt(complete) which correspond to the bash builtins with the same names. It
+will then be possible to use completion specifications and functions
+written for bash.
+)
enditem()
texinode(Bindable Commands)(Completion Functions)(Control Functions)(Completion System)