1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #!/usr/bin/env bash
- # Source a .rvmrc file in a directory after changing to it, if it exists. To
- # disable this feature, set rvm_project_rvmrc=0 in /etc/rvmrc or $HOME/.rvmrc
- case "${rvm_project_rvmrc:-1}" in
- 1|cd)
- # cloned from git@github.com:mpapis/bash_zsh_support.git
- source "$rvm_scripts_path/extras/bash_zsh_support/chpwd/function.sh"
- # not using default loading to support older Zsh
- [[ -n "${ZSH_VERSION:-}" ]] &&
- __rvm_version_compare "$ZSH_VERSION" -gt 4.3.4 ||
- {
- function cd() { __zsh_like_cd cd "$@" ; }
- function popd() { __zsh_like_cd popd "$@" ; }
- function pushd() { __zsh_like_cd pushd "$@" ; }
- }
- __rvm_after_cd()
- {
- \typeset rvm_hook
- rvm_hook="after_cd"
- if [[ -n "${rvm_scripts_path:-}" || -n "${rvm_path:-}" ]]
- then source "${rvm_scripts_path:-$rvm_path/scripts}/hook"
- fi
- }
- __rvm_cd_functions_set()
- {
- __rvm_do_with_env_before
- if [[ -n "${rvm_current_rvmrc:-""}" && "$OLDPWD" == "$PWD" ]]
- then rvm_current_rvmrc=""
- fi
- __rvm_project_rvmrc >&2 || true
- __rvm_after_cd || true
- __rvm_do_with_env_after
- return 0
- }
- [[ " ${chpwd_functions[*]} " == *" __rvm_cd_functions_set "* ]] ||
- chpwd_functions=( "${chpwd_functions[@]}" __rvm_cd_functions_set )
- # 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 ()
- {
- \typeset directory current matches item index sep
- sep="${IFS}"
- export IFS
- 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 \command \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 "%b" "$CDPATH" | \command \tr -s ':' '\n') ; do
- for item in $( compgen -d "$directory/$current" ) ; do
- COMPREPLY[index++]=${item#$directory/}
- done
- done
- else
- COMPREPLY=( $(compgen -d ${current}) )
- fi
- IFS="${sep}";
- }
- complete -o bashdefault -o default -o filenames -o dirnames -o nospace -F _rvm_cd_complete cd
- fi
- ;;
- 2|prompt)
- if
- [[ -n "${ZSH_VERSION:-}" ]]
- then
- precmd_functions+=(__rvm_do_with_env_before __rvm_project_rvmrc __rvm_do_with_env_after)
- else
- PROMPT_COMMAND="${PROMPT_COMMAND%% }"
- PROMPT_COMMAND="${PROMPT_COMMAND%%;}"
- PROMPT_COMMAND="${PROMPT_COMMAND:-}${PROMPT_COMMAND:+; }__rvm_do_with_env_before; __rvm_project_rvmrc; __rvm_do_with_env_after"
- fi
- ;;
- esac
|