浏览代码

fix(nvm): disable lazy-loading if autoload is set

Closes #11748
Carlo Sala 1 年之前
父节点
当前提交
b5be2d39e2
共有 2 个文件被更改,包括 16 次插入5 次删除
  1. 3 0
      plugins/nvm/README.md
  2. 13 5
      plugins/nvm/nvm.plugin.zsh

+ 3 - 0
plugins/nvm/README.md

@@ -43,6 +43,9 @@ zstyle ':omz:plugins:nvm' lazy-cmd eslint prettier typescript ...
 
 
 #### `.nvmrc` autoload
 #### `.nvmrc` autoload
 
 
+Note: _this option cannot be used at the same time as `lazy`. `autoload` will override it and load `nvm` at
+startup._
+
 If set, the plugin will automatically load a node version when if finds a
 If set, the plugin will automatically load a node version when if finds a
 [`.nvmrc` file](https://github.com/nvm-sh/nvm#nvmrc) in the current working directory indicating which node
 [`.nvmrc` file](https://github.com/nvm-sh/nvm#nvmrc) in the current working directory indicating which node
 version to load. This can be done, similar as previous options, adding:
 version to load. This can be done, similar as previous options, adding:

+ 13 - 5
plugins/nvm/nvm.plugin.zsh

@@ -16,7 +16,18 @@ fi
 # Note: nvm is a function so we need to use `which`
 # Note: nvm is a function so we need to use `which`
 which nvm &>/dev/null && return
 which nvm &>/dev/null && return
 
 
-if zstyle -t ':omz:plugins:nvm' lazy; then
+if [[ -z "$NVM_DIR" ]]; then 
+  echo "[oh-my-zsh] nvm installation cannot be found"
+  echo "[oh-my-zsh] set NVM_DIR to your installation"
+  return
+fi
+if [[ ! -f "$NVM_DIR/nvm.sh" ]]; then 
+  echo "[oh-my-zsh] nvm.sh does not exist in $NVM_DIR"
+  return
+fi
+
+if zstyle -t ':omz:plugins:nvm' lazy && \
+  ! zstyle -t ':omz:plugins:nvm' autoload; then
   # Call nvm when first using nvm, node, npm, pnpm, yarn or other commands in lazy-cmd
   # Call nvm when first using nvm, node, npm, pnpm, yarn or other commands in lazy-cmd
   zstyle -a ':omz:plugins:nvm' lazy-cmd nvm_lazy_cmd
   zstyle -a ':omz:plugins:nvm' lazy-cmd nvm_lazy_cmd
   eval "
   eval "
@@ -28,11 +39,8 @@ if zstyle -t ':omz:plugins:nvm' lazy; then
     }
     }
   "
   "
   unset nvm_lazy_cmd
   unset nvm_lazy_cmd
-elif [[ -f "$NVM_DIR/nvm.sh" ]]; then
-  # Load nvm if it exists in $NVM_DIR
-  source "$NVM_DIR/nvm.sh"
 else
 else
-  return
+  source "$NVM_DIR/nvm.sh"
 fi
 fi
 
 
 # Autoload nvm when finding a .nvmrc file in the current directory
 # Autoload nvm when finding a .nvmrc file in the current directory