49 lines
1.1 KiB
Bash
49 lines
1.1 KiB
Bash
#compdef wd.sh
|
|
|
|
zstyle ":completion:*:descriptions" format "%B%d%b"
|
|
|
|
CONFIG=$HOME/.warprc
|
|
|
|
local -a main_commands
|
|
main_commands=(
|
|
add:'Adds the current working directory to your warp points'
|
|
#add'\!':'Overwrites existing warp point' # TODO: Fix
|
|
rm:'Removes the given warp point'
|
|
ls:'Outputs all stored warp points'
|
|
show:'Outputs warp points to current directory'
|
|
)
|
|
|
|
local -a points
|
|
while read line
|
|
do
|
|
points+=$(awk "{ gsub(/\/Users\/$USER|\/home\/$USER/,\"~\"); print }" <<< $line)
|
|
done < $CONFIG
|
|
|
|
_wd()
|
|
{
|
|
# init variables
|
|
local curcontext="$curcontext" state line
|
|
typeset -A opt_args
|
|
|
|
# init state
|
|
_arguments \
|
|
'1: :->command' \
|
|
'2: :->argument'
|
|
|
|
case $state in
|
|
command)
|
|
compadd "$@" add rm ls show
|
|
_describe -t warp-points 'Warp points:' points && ret=0
|
|
;;
|
|
argument)
|
|
case $words[2] in
|
|
rm|add!)
|
|
_describe -t warp-points 'warp points' points && ret=0
|
|
;;
|
|
*)
|
|
esac
|
|
esac
|
|
}
|
|
|
|
_wd "$@"
|