diff options
| -rw-r--r-- | plugins/pip/_pip | 4 | ||||
| -rw-r--r-- | plugins/pip/pip.plugin.zsh | 78 | ||||
| -rwxr-xr-x | plugins/wd2/wd2/wd.plugin.zsh | 9 | ||||
| -rwxr-xr-x | plugins/wd2/wd2/wd.sh | 201 | 
4 files changed, 290 insertions, 2 deletions
diff --git a/plugins/pip/_pip b/plugins/pip/_pip index fb8765c7e..967da48ca 100644 --- a/plugins/pip/_pip +++ b/plugins/pip/_pip @@ -6,8 +6,8 @@  _pip_all() {    # we cache the list of packages (originally from the macports plugin)    if (( ! $+piplist )); then -      echo -n " (caching package index...)" -      piplist=($(pip search * | cut -d ' ' -f 1 | tr '[A-Z]' '[a-z]')) +      zsh-pip-cache-packages +      piplist=($(cat $ZSH_PIP_CACHE_FILE))    fi  } diff --git a/plugins/pip/pip.plugin.zsh b/plugins/pip/pip.plugin.zsh new file mode 100644 index 000000000..71f977bbf --- /dev/null +++ b/plugins/pip/pip.plugin.zsh @@ -0,0 +1,78 @@ +# Usage: +# Just add pip to your installed plugins. + +# If you would like to change the cheeseshops used for autocomplete set +# ZSH_PIP_INDEXES in your zshrc. If one of your indexes are bogus you won't get +# any kind of error message, pip will just not autocomplete from them. Double +# check! +# +# If you would like to clear your cache, go ahead and do a +# "zsh-pip-clear-cache". + +ZSH_PIP_CACHE_FILE=~/.pip/zsh-cache +ZSH_PIP_INDEXES=(https://pypi.python.org/simple/) + +zsh-pip-clear-cache() { +  rm $ZSH_PIP_CACHE_FILE +  unset piplist +} + +zsh-pip-clean-packages() { +    sed -nr '/<a href/ s/.*>([^<]+).*/\1/p' +} + +zsh-pip-cache-packages() { +  if [[ ! -d ${PIP_CACHE_FILE:h} ]]; then +      mkdir -p ${PIP_CACHE_FILE:h} +  fi + +  if [[ ! -f $ZSH_PIP_CACHE_FILE ]]; then +      echo -n "(...caching package index...)" +      tmp_cache=/tmp/zsh_tmp_cache +      for index in $ZSH_PIP_INDEXES ; do +          # well... I've already got two problems +          curl $index 2>/dev/null | \ +              zsh-pip-clean-packages \ +               >> $tmp_cache +      done +      sort $tmp_cache | uniq | tr '\n' ' ' > $ZSH_PIP_CACHE_FILE +      rm $tmp_cache +  fi +} + +# A test function that validates the regex against known forms of the simple +# index. If you modify the regex to make it work for you, you should add a test +# case in here and make sure that your changes don't break things for someone +# else. +zsh-pip-test-clean-packages() { +    local expected +    local actual +    expected="0x10c-asm +1009558_nester" + +    actual=$(echo -n "<html><head><title>Simple Index</title><meta name=\"api-version\" value=\"2\" /></head><body> +<a href='0x10c-asm'>0x10c-asm</a><br/> +<a href='1009558_nester'>1009558_nester</a><br/> +</body></html>" | zsh-pip-clean-packages) + +    if [[ $actual != $expected ]] ; then +        echo -e "python's simple index is broken:\n$actual\n  !=\n$expected" +    else +        echo "python's simple index is fine" +    fi + +    actual=$(echo -n '<html> +  <head> +    <title>Simple Package Index</title> +  </head> +  <body> +    <a href="0x10c-asm">0x10c-asm</a><br/> +    <a href="1009558_nester">1009558_nester</a><br/> +</body></html>' | zsh-pip-clean-packages) + +    if [[ $actual != $expected ]] ; then +        echo -e "the djangopypi2 index is broken:\n$actual\n  !=\n$expected" +    else +        echo "the djangopypi2 index is fine" +    fi +} diff --git a/plugins/wd2/wd2/wd.plugin.zsh b/plugins/wd2/wd2/wd.plugin.zsh new file mode 100755 index 000000000..e0846ffd9 --- /dev/null +++ b/plugins/wd2/wd2/wd.plugin.zsh @@ -0,0 +1,9 @@ +#!/bin/zsh + +# WARP +# ==== +# oh-my-zsh plugin +# +# @github.com/mfaerevaag/wd + +alias wd='. ~/.oh-my-zsh/plugins/wd/wd.sh' diff --git a/plugins/wd2/wd2/wd.sh b/plugins/wd2/wd2/wd.sh new file mode 100755 index 000000000..7852028c0 --- /dev/null +++ b/plugins/wd2/wd2/wd.sh @@ -0,0 +1,201 @@ +#!/bin/zsh + +# WARP +# ==== +# Jump to custom directories in terminal +# because `cd` takes too long... +# +# @github.com/mfaerevaag/wd + + +## variables +CONFIG=$HOME/.warprc + +## colors +BLUE="\033[96m" +GREEN="\033[92m" +YELLOW="\033[93m" +RED="\033[91m" +NOC="\033[m" + + +## load warp points +typeset -A points +while read line +do +    arr=(${(s,:,)line}) +    key=${arr[1]} +    val=${arr[2]} + +    points[$key]=$val +done < $CONFIG + + +## functions +# prepended wd_ to not conflict with your environment (no sub shell) + +wd_warp() +{ +    if [[ $1 =~ "^\.+$" ]] +    then +        if [[ $#1 < 2 ]] +        then +            wd_print_msg $YELLOW "Warping to current directory?" +        else +            (( n = $#1 - 1 )) +            wd_print_msg $BLUE "Warping..." +            cd -$n > /dev/null +        fi +    elif [[ ${points[$1]} != "" ]] +    then +        wd_print_msg $BLUE "Warping..." +        cd ${points[$1]} +    else +        wd_print_msg $RED "Unkown warp point '$1'" +    fi +} + +wd_add() +{ +    if [[ $1 =~ "^\.+$" ]] +    then +        wd_print_msg $RED "Illeagal warp point (see README)." +    elif [[ ${points[$1]} == "" ]] || $2 +    then +        wd_remove $1 > /dev/null +        print "$1:$PWD" >> $CONFIG +        wd_print_msg $GREEN "Warp point added" +    else +        wd_print_msg $YELLOW "Warp point '$1' alredy exists. Use 'add!' to overwrite." +    fi +} + +wd_remove() +{ +    if [[ ${points[$1]} != "" ]] +    then +        if wd_tmp=`sed "/^$1:/d" $CONFIG` +        then +            echo $wd_tmp > $CONFIG +            wd_print_msg $GREEN "Warp point removed" +        else +            wd_print_msg $RED "Warp point unsuccessfully removed. Sorry!" +        fi +    else +        wd_print_msg $RED "Warp point was not found" +    fi +} + +wd_show() +{ +    wd_print_msg $BLUE "Warp points to current directory:" +    wd_list_all | grep $PWD$ +} + +wd_list_all() +{ +    wd_print_msg $BLUE "All warp points:" +    while read line +    do +        if [[ $line != "" ]] +        then +            arr=(${(s,:,)line}) +            key=${arr[1]} +            val=${arr[2]} + +            print "\t" $key "\t -> \t" $val +        fi +    done < $CONFIG +} + +wd_print_msg() +{ +    if [[ $1 == "" || $2 == "" ]] +    then +        print " $RED*$NOC Could not print message. Sorry!" +    else +        print " $1*$NOC $2" +    fi +} + +wd_print_usage() +{ +		print "Usage: wd [add|-a|--add] [rm|-r|--remove] [ls|-l|--list] <point>" +    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 list \t Outputs all stored warp points" +    print "\t help \t Show this extremely helpful text" +} + + +## run + +# get opts +args=`getopt -o a:r:lhs -l add:,remove:,list,help,show -- $*` + +if [[ $? -ne 0 || $#* -eq 0 ]] +then +    wd_print_usage +else +    # can't exit, as this would exit the excecuting shell +    # e.i. your terminal + +    #set -- $args # WTF + +    for i +    do +		    case "$i" +		        in +			      -a|--add|add) +                wd_add $2 false +				        shift +                shift +                break +                ;; +            -a!|--add!|add!) +                wd_add $2 true +				        shift +                shift +                break +                ;; +			      -r|--remove|rm) +				        wd_remove $2 +                shift +				        shift +                break +                ;; +			      -l|--list|ls) +				        wd_list_all +				        shift +                break +                ;; +			      -h|--help|help) +				        wd_print_usage +				        shift +                break +                ;; +			      -s|--show|show) +				        wd_show +				        shift +                break +                ;; +            *) +                wd_warp $i +                shift +                break +                ;; +			      --) +				        shift; break;; +		    esac +    done +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  | 
