added projects plugin and completion
parent
6ec761a994
commit
c74378632f
|
|
@ -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
|
||||||
|
|
@ -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"
|
||||||
Loading…
Reference in New Issue