diff options
author | Bob Williams <bobwilliams.ii@gmail.com> | 2014-03-14 10:32:03 -0400 |
---|---|---|
committer | Bob Williams <bobwilliams.ii@gmail.com> | 2014-03-14 10:32:03 -0400 |
commit | 223fd60ba597b8c23569c65878d766c3c933fa70 (patch) | |
tree | 33c5c6a150293e6cf81f26f0f1b9c733dcf8aab7 /plugins/wd/wd.sh | |
parent | 185cb6e37352cc0d92042e35d259b0de3f5f3886 (diff) | |
parent | ee21fe94473404b58cbaea5b2c279f7a07c34ce1 (diff) | |
download | zsh-223fd60ba597b8c23569c65878d766c3c933fa70.tar.gz zsh-223fd60ba597b8c23569c65878d766c3c933fa70.tar.bz2 zsh-223fd60ba597b8c23569c65878d766c3c933fa70.zip |
Merge remote-tracking branch 'upstream/master'
Diffstat (limited to 'plugins/wd/wd.sh')
-rwxr-xr-x | plugins/wd/wd.sh | 75 |
1 files changed, 34 insertions, 41 deletions
diff --git a/plugins/wd/wd.sh b/plugins/wd/wd.sh index 744f58bc2..96a3426fc 100755 --- a/plugins/wd/wd.sh +++ b/plugins/wd/wd.sh @@ -50,12 +50,12 @@ wd_warp() wd_print_msg $YELLOW "Warping to current directory?" else (( n = $#1 - 1 )) - wd_print_msg $BLUE "Warping..." + #wd_print_msg $BLUE "Warping..." cd -$n > /dev/null fi elif [[ ${points[$1]} != "" ]] then - wd_print_msg $BLUE "Warping..." + #wd_print_msg $BLUE "Warping..." cd ${points[$1]} else wd_print_msg $RED "Unkown warp point '$1'" @@ -64,16 +64,16 @@ wd_warp() wd_add() { - if [[ $1 =~ "^\.+$" ]] + if [[ $2 =~ "^\.+$" || $2 =~ "^\s*$" ]] then - wd_print_msg $RED "Illeagal warp point (see README)." - elif [[ ${points[$1]} == "" ]] || $2 + wd_print_msg $RED "Illegal warp point (see README)." + elif [[ ${points[$2]} == "" ]] || $1 then - wd_remove $1 > /dev/null - print "$1:$PWD" >> $CONFIG + wd_remove $2 > /dev/null + print "$2:$PWD" >> $CONFIG wd_print_msg $GREEN "Warp point added" else - wd_print_msg $YELLOW "Warp point '$1' alredy exists. Use 'add!' to overwrite." + wd_print_msg $YELLOW "Warp point '$2' already exists. Use 'add!' to overwrite." fi } @@ -83,7 +83,9 @@ wd_remove() then if wd_tmp=`sed "/^$1:/d" $CONFIG` then - echo $wd_tmp > $CONFIG + # `>!` forces overwrite + # we need this if people use `setopt NO_CLOBBER` + echo $wd_tmp >! $CONFIG wd_print_msg $GREEN "Warp point removed" else wd_print_msg $RED "Warp point unsuccessfully removed. Sorry!" @@ -131,9 +133,9 @@ wd_print_usage() print "\nCommands:" print "\t add \t Adds the current working directory to your warp points" print "\t add! \t Overwrites existing warp point" - print "\t remove Removes the given warp point" + print "\t rm \t Removes the given warp point" print "\t show \t Outputs warp points to current directory" - print "\t list \t Outputs all stored warp points" + print "\t ls \t Outputs all stored warp points" print "\t help \t Show this extremely helpful text" } @@ -141,7 +143,7 @@ wd_print_usage() ## run # get opts -args=`getopt -o a:r:lhs -l add:,remove:,list,help,show -- $*` +args=`getopt -o a:r:lhs -l add:,rm:,ls,help,show -- $*` # check if no arguments were given if [[ $? -ne 0 || $#* -eq 0 ]] @@ -161,49 +163,40 @@ else for i do - case "$i" - in - -a|--add|add) - wd_add $2 false - shift - shift + case "$i" + in + -a|--add|add) + wd_add false $2 break ;; -a!|--add!|add!) - wd_add $2 true - shift - shift + wd_add true $2 break ;; - -r|--remove|rm) - wd_remove $2 - shift - shift + -r|--remove|rm) + wd_remove $2 break ;; - -l|--list|ls) - wd_list_all - shift + -l|--list|ls) + wd_list_all break ;; - -h|--help|help) - wd_print_usage - shift + -h|--help|help) + wd_print_usage break ;; - -s|--show|show) - wd_show - shift + -s|--show|show) + wd_show break ;; *) wd_warp $i - shift break ;; - --) - shift; break;; - esac + --) + break + ;; + esac done fi @@ -211,6 +204,6 @@ fi ## garbage collection # if not, next time warp will pick up variables from this run # remember, there's no sub shell -points="" -args="" -unhash -d val &> /dev/null # fixes issue #1 +unset points +unset args +unset val &> /dev/null # fixes issue #1 |