Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
possibly useful zsh_directory_name implementation
- X-seq: zsh-users 15858
- From: Mikael Magnusson <mikachu@xxxxxxxxx>
- To: Zsh Users <zsh-users@xxxxxxx>
- Subject: possibly useful zsh_directory_name implementation
- Date: Fri, 11 Mar 2011 02:06:45 +0100
- Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:date:message-id:subject:from:to :content-type; bh=c5XQRQ0uV3w8Ngs9OHqCyrh5EZbxurO+8xCoCwMA/mI=; b=CnWtMUvrccXSfKricHN6SGf41+cDlA+adOhw2EM6NpdzBqS7nwUlTCzOpI2kOc9AN/ JT0fK5a7A+pS5s43U/VfyxGir0sJGESdxpUD2YHVzuaLZfBuT/sSa96W9QHAsmvyhMpD xlvsNul5QtqsYAinLCRoIuw5wYDKi9PYiq7CI=
- Domainkey-signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:date:message-id:subject:from:to:content-type; b=advi9aFawU+BLpB7K0Z3zluSzw4io8fgZOhSZtHGxXxAo2zoAA3brK+SI414C7LT7U AG8tOFYk+NkLUBRd66F1LfdIQYtKaNg5Uj/t4EtpoT7qjUFNVrqb10Nn8b5SbXWt0v56 BNEgiA0mbl5fY113TEBitqXjyNAtykUUmzKYw=
- List-help: <mailto:zsh-users-help@zsh.org>
- List-id: Zsh Users List <zsh-users.zsh.org>
- List-post: <mailto:zsh-users@zsh.org>
- Mailing-list: contact zsh-users-help@xxxxxxx; run by ezmlm
function zsh_directory_name () {
case $1 in
n)
case $2 in
/*)
reply=( /${(j:/:)${(s:/:)PWD}[1,(er)${2[2,-1]}]} )
;;
.*)
reply=( (../)##${2[2,-1]}([1]) )
;;
esac
;;
c)
local types vals description
types=( '.:children of parent directories' '/:pwd segment' )
case $PREFIX in
'')
vals=( $types )
_describe 'dynamic dir type' vals -V dynamic-dirs -o -S ''
;;
.*)
vals=( (../)##*~(../)##$PWD:t(/:t) )
;|
/*)
vals=( "${(@)${(s:/:)PWD}[1,-2]}" )
;|
*)
_wanted -V dynamic-dirs expl
${${types[(r)$PREFIX[1]*]}[3,-1]} compadd -P $PREFIX[1] -qQS / -d vals
${(q)^vals}\]
esac
;;
esac
}
With this, /home/mikachu/some/directory/somewhere% cd ~[/some], will
take you to /home/mikachu/some/, and cd ~[.foo] will take you to foo/
in whatever parent directory has a subdirectory foo, for example it
could be /home/foo/.
--
Mikael Magnusson
footnotes:
reply=( $PWD[1,(r)$2] ) of course is the more obvious solution, but it
doesn't work on directories called "[foo] something".
the fiddling with (q)^\] and -Q is because i want only / to be a
removable suffix, not the ].
Messages sorted by:
Reverse Date,
Date,
Thread,
Author