Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
95 lines (65 sloc) 2.29 KB
#!/usr/bin/env bash
# Source a .rvmrc file in a directory after changing to it, if it exists.
# To disable this fature, set export rvm_project_rvmrc=0 in $HOME/.rvmrc
if [[ ${rvm_project_rvmrc:-1} -ne 0 ]] ; then
if [[ -n "${ZSH_VERSION:-""}" ]] ; then
__rvm_after_cd() {
rvm_hook="after_cd"
source "$rvm_path/scripts/hook"
}
autoload is-at-least
if is-at-least 4.3.4 >/dev/null 2>&1; then
# On zsh, use chpwd_functions
chpwd_functions=( "${chpwd_functions[@]}" __rvm_project_rvmrc __rvm_after_cd )
else
cd()
{
builtin cd "$@"
local result=$?
__rvm_project_rvmrc
__rvm_after_cd
return $result
}
fi
else
cd()
{
builtin cd "$@"
local result=$?
__rvm_project_rvmrc
rvm_hook="after_cd" ; source "$rvm_path/scripts/hook"
return $result
}
# This functionality is opt-in by setting rvm_cd_complete_flag=1 in ~/.rvmrc
# Generic bash cd completion seems to work great for most, so this is only
# for those that have some issues with that.
if [[ ${rvm_cd_complete_flag:-0} = 1 ]] ; then
# If $CDPATH is set, bash should tab-complete based on directories in those paths,
# but with the cd function above, the built-in tab-complete ignores $CDPATH. This
# function returns that functionality.
_rvm_cd_complete ()
{
local directory current matches item index sep
sep="${IFS}"
declare -x IFS=$'\n'
COMPREPLY=()
current="${COMP_WORDS[COMP_CWORD]}"
if [[ -n "$CDPATH" && ${current:0:1} != "/" ]] ; then
index=0
# The change to IFS above means that the tr below should replace ':'
# with a newline rather than a space. A space would be ignored, breaking
# TAB completion based on CDPATH again
for directory in $(printf "%s" "$CDPATH" | tr -s ':' '\n') ; do
for item in $( compgen -d "$directory/$current" ) ; do
COMPREPLY[index++]=${item#$directory/}
done
done
else
COMPREPLY=( $(compgen -d ${current}) )
fi
declare -x IFS="${sep}";
}
complete -o bashdefault -o default -o filenames -o dirnames -o nospace -F _rvm_cd_complete cd
fi
fi
fi
Jump to Line
Something went wrong with that request. Please try again.