You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.1 KiB
48 lines
1.1 KiB
#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 "$@"
|
|
|