summaryrefslogtreecommitdiff
path: root/plugins/wd/_wd.sh
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/wd/_wd.sh')
-rw-r--r--plugins/wd/_wd.sh48
1 files changed, 48 insertions, 0 deletions
diff --git a/plugins/wd/_wd.sh b/plugins/wd/_wd.sh
new file mode 100644
index 000000000..950564435
--- /dev/null
+++ b/plugins/wd/_wd.sh
@@ -0,0 +1,48 @@
+#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 "$@"