mirror of git://git.code.sf.net/p/zsh/code
51758: Make dynamic dir completion easier to implement
parent
a95198e268
commit
bb441f77a7
@ -1,15 +1,29 @@
|
||||
#autoload
|
||||
local -a dirfuncs=(
|
||||
${(k)functions[zsh_directory_name]}
|
||||
$zsh_directory_name_functions
|
||||
)
|
||||
local descr='dynamically named directory'
|
||||
|
||||
local func
|
||||
integer ret=1
|
||||
if (( $#dirfuncs )); then
|
||||
local -a expl
|
||||
local -i ret
|
||||
local func suf tag=dynamically-named-directories
|
||||
|
||||
if [[ -n $functions[zsh_directory_name] || \
|
||||
${+zsh_directory_name_functions} -ne 0 ]] ; then
|
||||
[[ -n $functions[zsh_directory_name] ]] && zsh_directory_name c && ret=0
|
||||
for func in $zsh_directory_name_functions; do
|
||||
$func c && ret=0
|
||||
[[ $ISUFFIX != \]* ]] &&
|
||||
suf=-S]
|
||||
|
||||
_tags "$tag"
|
||||
while _tags; do
|
||||
while _next_label "$tag" expl "$descr" $suf; do
|
||||
for func in $dirfuncs; do
|
||||
$func c && ret=0
|
||||
done
|
||||
done
|
||||
(( ret )) || break
|
||||
done
|
||||
return ret
|
||||
|
||||
else
|
||||
_message 'dynamic directory name: implemented as zsh_directory_name c'
|
||||
_message "${descr}: implement as zsh_directory_name c"
|
||||
fi
|
||||
|
Loading…
Reference in New Issue