Compare commits

...

2 Commits

Author SHA1 Message Date
Fabricio Silva d12d182264
Merge 8924759b12 into 6e7ac0544e 2025-02-19 12:37:31 +01:00
Fabricio Silva 8924759b12
feat(fnm): add autostart option to setup fnm env
Add new setting `ZSH_FNM_AUTOSTART` to be able to automatic setup the `fnm env`.
Default set to `false` to avoid breaking existing setup.
2025-02-13 12:11:51 +00:00
2 changed files with 34 additions and 1 deletions

View File

@ -2,8 +2,30 @@
This plugin adds autocompletion for [fnm](https://github.com/Schniz/fnm) - a Node.js version manager. This plugin adds autocompletion for [fnm](https://github.com/Schniz/fnm) - a Node.js version manager.
To use it, add `fnm` to the plugins array in your zshrc file: To use it, add `fnm` to the plugins array in your `.zshrc` file:
```zsh ```zsh
plugins=(... fnm) plugins=(... fnm)
``` ```
## Configuration Variables
These settings should go in your `.zshrc` file, before Oh My Zsh is sourced.
For example:
```sh
ZSH_FNM_AUTOSTART=true
...
plugins=(... fnm)
source "$ZSH/oh-my-zsh.sh"
```
The following variables are available to this plugin customization:
| Variable | Default | Meaning |
| :------- | :-----: | ------- |
| `ZSH_FNM_AUTOSTART` | `false` | Automatically starts fnm for the session, running the `fnm env` |
| `ZSH_FNM_USE_ON_CD` | `true` | Switch the Node.js version based on the requirements of the current directory (recommended) |
Check out the [official documentation](https://github.com/Schniz/fnm/blob/master/docs/commands.md) for the available fnm variables.

View File

@ -2,6 +2,11 @@ if (( ! $+commands[fnm] )); then
return return
fi fi
# CONFIGURATION VARIABLES
# Automatically start the fnm multishell
: ${ZSH_FNM_AUTOSTART:=false} # opt-in to avoid duplicated sessions
: ${ZSH_FNM_USE_ON_CD:=true} # upstream recommendation
# If the completion file doesn't exist yet, we need to autoload it and # If the completion file doesn't exist yet, we need to autoload it and
# bind it to `fnm`. Otherwise, compinit will have already done that. # bind it to `fnm`. Otherwise, compinit will have already done that.
if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then
@ -11,3 +16,9 @@ if [[ ! -f "$ZSH_CACHE_DIR/completions/_fnm" ]]; then
fi fi
fnm completions --shell=zsh >| "$ZSH_CACHE_DIR/completions/_fnm" &| fnm completions --shell=zsh >| "$ZSH_CACHE_DIR/completions/_fnm" &|
if [[ "$ZSH_FNM_AUTOSTART" == "true" ]]; then
local -a fnm_env_cmd
[[ "$ZSH_FNM_USE_ON_CD" == "true" ]] && fnm_env_cmd+=("--use-on-cd")
eval "$(fnm env --shell=zsh $fnm_env_cmd)"
fi