added projects plugin and completion

pull/579/head
cornfeedhobo 2015-09-26 18:32:01 -05:00
parent 6ec761a994
commit c74378632f
2 changed files with 75 additions and 0 deletions

View File

@ -0,0 +1,44 @@
_pj() {
[ -z "$PROJECT_PATHS" ] && return
shift
[ "$1" == "open" ] && shift
local cur prev words cword
_init_completion || return
local IFS=$'\n' i j k
compopt -o filenames
local -r mark_dirs=$(_rl_enabled mark-directories && echo y)
local -r mark_symdirs=$(_rl_enabled mark-symlinked-directories && echo y)
for i in ${PROJECT_PATHS//:/$'\n'}; do
# create an array of matched subdirs
k="${#COMPREPLY[@]}"
for j in $( compgen -d $i/$cur ); do
if [[ ( $mark_symdirs && -h $j || $mark_dirs && ! -h $j ) && ! -d ${j#$i/} ]]; then
j+="/"
fi
COMPREPLY[k++]=${j#$i/}
done
done
_filedir -d
if [[ ${#COMPREPLY[@]} -eq 1 ]]; then
i=${COMPREPLY[0]}
if [[ "$i" == "$cur" && $i != "*/" ]]; then
COMPREPLY[0]="${i}/"
fi
fi
return 0
}
if shopt -q cdable_vars; then
complete -v -F _pj -o nospace pj
else
complete -F _pj -o nospace pj
fi

View File

@ -0,0 +1,31 @@
cite about-plugin
about-plugin 'add "export PROJECT_PATHS=~/projects:~/intertrode/projects" to navigate quickly to your project directories with `pj` and `pjo`'
function pj {
about 'navigate quickly to your various project directories'
group 'projects'
if [ -n "$PROJECT_PATHS" ]; then
local cmd
if [ "$1" == "open" ]; then
shift
cmd="$EDITOR"
fi
cmd="${cmd:-cd}"
if [ -n "$1" ]; then
for i in ${PROJECT_PATHS//:/$'\n'}; do
if [ -d "$i"/"$1" ]; then
$cmd "$i"/"$1"
return
fi
done
fi
fi
echo "No such project '$1'"
}
alias pjo="pj open"