diff --git a/README.md b/README.md index 85a6550..ddd26f1 100644 --- a/README.md +++ b/README.md @@ -124,7 +124,7 @@ set -g theme_newline_prompt '$ ' **Prompt options** - `theme_display_ruby`. Use `no` to completely hide all information about Ruby version. By default Ruby version displayed if there is the difference from default settings. -- `theme_display_node`. If set to `yes`, will display current NVM or FNM node version. +- `theme_display_node`. If set to `always`, will display current NPM, NVM or FNM node version. If set to `yes`, will display the version if an `.nvmrc`, `.node-version` or `package.json` file is found in the parent directories. - `theme_display_vagrant`. This feature is disabled by default, use `yes` to display Vagrant status in your prompt. Please note that only the VirtualBox and VMWare providers are supported. - `theme_display_vi`. By default the vi mode indicator will be shown if vi or hybrid key bindings are enabled. Use `no` to hide the indicator, or `yes` to show the indicator. - `theme_display_k8s_context`. This feature is disabled by default. Use `yes` to show the current kubernetes context (`> kubectl config current-context`). diff --git a/functions/fish_prompt.fish b/functions/fish_prompt.fish index 6b441b5..4549b63 100644 --- a/functions/fish_prompt.fish +++ b/functions/fish_prompt.fish @@ -895,9 +895,42 @@ function __bobthefish_prompt_desk -S -d 'Display current desk environment' set_color normal end +function __bobthefish_prompt_find_file_up -S -d 'Find file(s), going up the parent directories' + set -l dir "$argv[1]" + set -l files $argv[2..] + + if test -z "$dir" + or test -z "$files" + return 1 + end + + while [ "$dir" ] + for f in $files + if [ -e "$dir/$f" ] + return + end + end + + [ "$dir" = '/' ] + and return 1 + + set dir (__bobthefish_dirname "$dir") + end + return 1 +end + function __bobthefish_prompt_node -S -d 'Display current node version' - [ "$theme_display_node" = 'yes' -o "$theme_display_nvm" = 'yes' ] - or return + set -l should_show + + if [ "$theme_display_node" = 'always' -o "$theme_display_nvm" = 'yes' ] + set should_show 1 + else if [ "$theme_display_node" = 'yes' ] + __bobthefish_prompt_find_file_up "$PWD" package.json .nvmrc .node-version + and set should_show 1 + end + + [ -z "$should_show" ] + and return set -l node_manager set -l node_manager_dir