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.
68 lines
1.7 KiB
68 lines
1.7 KiB
#compdef wd |
|
|
|
zstyle ':completion:*:descriptions' format '%B%d%b' |
|
zstyle ':completion::complete:wd:*:commands' group-name commands |
|
zstyle ':completion::complete:wd:*:warp_points' group-name warp_points |
|
zstyle ':completion::complete:wd::' list-grouped |
|
|
|
# Call `_wd()` when when trying to complete the command `wd` |
|
|
|
zmodload zsh/mapfile |
|
function _wd() { |
|
local ret=1 |
|
local CONFIG=$HOME/.warprc |
|
|
|
# Stolen from |
|
# http://stackoverflow.com/questions/9000698/completion-when-program-has-sub-commands |
|
|
|
# local curcontext="$curcontext" state line |
|
# typeset -A opt_args |
|
|
|
local -a commands |
|
local -a warp_points |
|
warp_points=( "${(f)mapfile[$CONFIG]}" ) |
|
# LIST="${mapfile[$FNAME]}" # Not required unless stuff uses it |
|
|
|
commands=( |
|
'add:Adds the current working directory to your warp points' |
|
'add!:Overwrites existing warp point' |
|
'rm:Removes the given warp point' |
|
'ls:Outputs all stored warp points' |
|
'show:Outputs all warp points that point to the current directory' |
|
'help:Show this extremely helpful text' |
|
'..:Go back to last directory' |
|
) |
|
|
|
_arguments -C \ |
|
'1: :->first_arg' \ |
|
'2: :->second_arg' && ret=0 |
|
|
|
case $state in |
|
first_arg) |
|
_describe -t warp_points "Warp points" warp_points && ret=0 |
|
_describe -t commands "Commands" commands && ret=0 |
|
;; |
|
second_arg) |
|
case $words[2] in |
|
add\!|rm) |
|
_describe -t points "Warp points" warp_points && ret=0 |
|
;; |
|
add) |
|
_message 'Write the name of your warp point' && ret=0 |
|
;; |
|
esac |
|
;; |
|
esac |
|
|
|
return $ret |
|
} |
|
|
|
_wd "$@" |
|
|
|
# Local Variables: |
|
# mode: Shell-Script |
|
# sh-indentation: 2 |
|
# indent-tabs-mode: nil |
|
# sh-basic-offset: 2 |
|
# End: |
|
# vim: ft=zsh sw=2 ts=2 et
|
|
|