summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/nvm.zsh9
-rw-r--r--plugins/nvm/nvm.plugin.zsh62
2 files changed, 46 insertions, 25 deletions
diff --git a/lib/nvm.zsh b/lib/nvm.zsh
index 4a8b6811e..c4f70c849 100644
--- a/lib/nvm.zsh
+++ b/lib/nvm.zsh
@@ -1,9 +1,8 @@
-# get the node.js version
+# get the nvm-controlled node.js version
function nvm_prompt_info() {
- [[ -f "$NVM_DIR/nvm.sh" ]] || return
local nvm_prompt
- nvm_prompt=$(node -v 2>/dev/null)
- [[ "${nvm_prompt}x" == "x" ]] && return
- nvm_prompt=${nvm_prompt:1}
+ which nvm &>/dev/null || return
+ nvm_prompt=$(nvm current)
+ nvm_prompt=${nvm_prompt#v}
echo "${ZSH_THEME_NVM_PROMPT_PREFIX}${nvm_prompt}${ZSH_THEME_NVM_PROMPT_SUFFIX}"
}
diff --git a/plugins/nvm/nvm.plugin.zsh b/plugins/nvm/nvm.plugin.zsh
index 2264a2420..ee8d2324b 100644
--- a/plugins/nvm/nvm.plugin.zsh
+++ b/plugins/nvm/nvm.plugin.zsh
@@ -1,23 +1,45 @@
-# Set NVM_DIR if it isn't already defined
-[[ -z "$NVM_DIR" ]] && export NVM_DIR="$HOME/.nvm"
+# nvm
+#
+# This plugin locates and loads nvm, looking for it in well-known locations.
-# Don't try to load nvm if command already available
-type "nvm" &> /dev/null && return
+() {
+ emulate -L zsh
+ local nvm_install_dir="" dir install_locations
+ if [[ -n $NVM_INSTALL_DIR ]]; then
+ # User-specified path
+ nvm_install_dir=$NVM_INSTALL_DIR
+ else
+ # Well-known common installation locations for NVM
+ install_locations=( ~/.nvm )
+ [[ -n $NVM_DIR ]] && install_locations=($NVM_DIR $install_locations)
+ # Mac Homebrew sticks
+ which brew &>/dev/null && install_locations+=$(brew --prefix nvm)
+ for dir ($install_locations); do
+ if [[ -s $dir/nvm.sh ]]; then
+ nvm_install_dir=$dir
+ break
+ fi
+ done
+ fi
-# Load nvm if it exists in $NVM_DIR
-if [[ -f "$NVM_DIR/nvm.sh" ]]; then
- source "$NVM_DIR/nvm.sh"
- return
-fi
+ if [[ -n $nvm_install_dir ]]; then
+ source $nvm_install_dir/nvm.sh
+ else
+ # No NVM installation found
+ return 0
+ fi
-# Otherwise try to load nvm installed via Homebrew
-
-# User can set this if they have an unusual Homebrew setup
-NVM_HOMEBREW="${NVM_HOMEBREW:-/usr/local/opt/nvm}"
-# Load nvm from Homebrew location if it exists
-[[ -f "$NVM_HOMEBREW/nvm.sh" ]] && source "$NVM_HOMEBREW/nvm.sh"
-# Load nvm bash completion from Homebrew if it exists
-if [[ -f "$NVM_HOMEBREW/etc/bash_completion.d/nvm" ]]; then
- autoload -U +X bashcompinit && bashcompinit
- source "$NVM_HOMEBREW/etc/bash_completion.d/nvm"
-fi
+ # Locate and use the completion file shipped with NVM, instead of this
+ # plugin's completion
+ # (Their bash completion file has zsh portability support)
+ if [[ $ZSH_NVM_BUNDLED_COMPLETION == true ]]; then
+ local bash_comp_file
+ # Homebrew relocates the bash completion file, so look multiple places
+ for bash_comp_file ( bash_completion etc/bash_completion.d/nvm ); do
+ if [[ -s $nvm_install_dir/$bash_comp_file ]]; then
+ source $nvm_install_dir/$bash_comp_file
+ break;
+ fi
+ done
+ fi
+}