❦ 22 février 2018 17:54 -0500, Scott Frazer <frazer.scott@xxxxxxxxx> :
zsh_directory_name ()
{
emulate -L zsh
setopt extendedglob
local -a seg;
seg=(${(s:/:)PWD%/*})
if [[ $1 = n ]]; then
typeset -ga reply
reply=( /${(j:/:)seg[1,(I)$2]} )
elif [[ $1 = c ]]; then
local expl
_wanted values expl 'parent dirs' compadd -S\] -a seg
else
return 1
fi
return 0
}
Suppose I am in directory /aaa/bbb/ccc/ddd/eee and want to go up to directory
ccc and then down into another directory. If I do:
cd ~[c<TAB>
it correctly completes to:
cd ~[ccc]
If I hit enter at this point I go to /aaa/bbb/ccc. So far so good. If I
try to start completion, like so:
cd ~[ccc]/<TAB>
zsh doesn't give me options for directories under ccc, it thinks '/' is
the command I'm trying to complete. Is there a way to make this work?
I don't see anything wrong in your code and for me, it works as you
expect (zsh 5.4.2). Does "echo ~[ccc]" returns the right value?