From 4a4f7e1eef960881661276ab382f1bc5a5bb46a3 Mon Sep 17 00:00:00 2001 From: romkatv Date: Tue, 24 Sep 2019 10:17:54 +0200 Subject: [PATCH] new prompt segment: dotnet_version To enable this segment: 1. Run `p10k configure`. 2. Open `~/.p10k.zsh` and search for `dotnet_version`. 3. Uncomment the first occurrence. Fixes #233. --- config/p10k-classic.zsh | 9 +++++++++ config/p10k-lean.zsh | 9 +++++++++ internal/icons.zsh | 5 +++++ internal/p10k.zsh | 21 +++++++++++++++++++-- 4 files changed, 42 insertions(+), 2 deletions(-) diff --git a/config/p10k-classic.zsh b/config/p10k-classic.zsh index 376879d9..da478513 100644 --- a/config/p10k-classic.zsh +++ b/config/p10k-classic.zsh @@ -53,6 +53,7 @@ # node_version # node.js version # go_version # go version (https://golang.org) # rust_version # rustc version (https://www.rust-lang.org) + # dotnet_version # .NET version (https://dotnet.microsoft.com) rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) rvm # ruby version from rvm (https://rvm.io) kubecontext # current kubernetes context (https://kubernetes.io/) @@ -575,6 +576,14 @@ # Custom icon. # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################ + # .NET version color. + typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134 + # Show .NET version only when in a .NET project subdirectory. + typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## # Rbenv color. typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168 diff --git a/config/p10k-lean.zsh b/config/p10k-lean.zsh index d6a7af92..fa69892d 100644 --- a/config/p10k-lean.zsh +++ b/config/p10k-lean.zsh @@ -53,6 +53,7 @@ # node_version # node.js version # go_version # go version (https://golang.org) # rust_version # rustc version (https://www.rust-lang.org) + # dotnet_version # .NET version (https://dotnet.microsoft.com) rbenv # ruby version from rbenv (https://github.com/rbenv/rbenv) rvm # ruby version from rvm (https://rvm.io) kubecontext # current kubernetes context (https://kubernetes.io/) @@ -554,6 +555,14 @@ # Custom icon. # typeset -g POWERLEVEL9K_RUST_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + ###############[ dotnet_version: .NET version (https://dotnet.microsoft.com) ]################ + # .NET version color. + typeset -g POWERLEVEL9K_DOTNET_VERSION_FOREGROUND=134 + # Show .NET version only when in a .NET project subdirectory. + typeset -g POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY=true + # Custom icon. + # typeset -g POWERLEVEL9K_DOTNET_VERSION_VISUAL_IDENTIFIER_EXPANSION='⭐' + #############[ rbenv: ruby version from rbenv (https://github.com/rbenv/rbenv) ]############## # Rbenv color. typeset -g POWERLEVEL9K_RBENV_FOREGROUND=168 diff --git a/internal/icons.zsh b/internal/icons.zsh index 918b0565..36e76fac 100755 --- a/internal/icons.zsh +++ b/internal/icons.zsh @@ -113,6 +113,7 @@ function _p9k_init_icons() { RANGER_ICON '\u2B50' # ⭐ TERRAFORM_ICON '\U1F6E0\u00A0' # 🛠️ PROXY_ICON '\u2B82' # ⮂ + DOTNET_ICON '.NET' ) ;; 'awesome-fontconfig') @@ -213,6 +214,7 @@ function _p9k_init_icons() { RANGER_ICON '\u2B50' # ⭐ TERRAFORM_ICON '\U1F6E0\u00A0' # 🛠️ PROXY_ICON '\u2B82' # ⮂ + DOTNET_ICON '.NET' ) ;; 'awesome-mapped-fontconfig') @@ -317,6 +319,7 @@ function _p9k_init_icons() { RANGER_ICON '\u2B50' # ⭐ TERRAFORM_ICON '\U1F6E0\u00A0' # 🛠️ PROXY_ICON '\u2B82' # ⮂ + DOTNET_ICON '.NET' ) ;; 'nerdfont-complete'|'nerdfont-fontconfig') @@ -418,6 +421,7 @@ function _p9k_init_icons() { RANGER_ICON '\u2B50' # ⭐ TERRAFORM_ICON '\U1F6E0\u00A0' # 🛠️ PROXY_ICON '\u2B82' # ⮂ + DOTNET_ICON '\uE77F' #  ) ;; *) @@ -518,6 +522,7 @@ function _p9k_init_icons() { RANGER_ICON '\u2B50' # ⭐ TERRAFORM_ICON '\U1F6E0\u00A0' # 🛠️ PROXY_ICON '\u2B82' # ⮂ + DOTNET_ICON '.NET' ) ;; esac diff --git a/internal/p10k.zsh b/internal/p10k.zsh index bf016b1e..e6a75c15 100755 --- a/internal/p10k.zsh +++ b/internal/p10k.zsh @@ -1627,7 +1627,7 @@ prompt_load() { } function _p9k_cached_cmd_stdout() { - local cmd=$commands[$1] + local cmd=${commands[$1]:A} [[ -n $cmd ]] || return shift local -H stat @@ -1642,7 +1642,7 @@ function _p9k_cached_cmd_stdout() { } function _p9k_cached_cmd_stdout_stderr() { - local cmd=$commands[$1] + local cmd=${commands[$1]:A} [[ -n $cmd ]] || return shift local -H stat @@ -1844,6 +1844,22 @@ prompt_nodenv() { _p9k_prompt_segment "$0" "black" "green" 'NODE_ICON' 0 '' "${v//\%/%%}" } +prompt_dotnet_version() { + (( $+commands[dotnet] )) || return + + if (( _POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY )); then + local dir=$_p9k_pwd + while true; do + [[ $dir == / ]] && return + [[ -n $dir/(project.json|global.json|packet.dependencies|*.csproj|*.fsproj|*.xproj|*.sln)(#qN^/) ]] && break + dir=${dir:h} + done + fi + + _p9k_cached_cmd_stdout dotnet --version || return + _p9k_prompt_segment "$0" "magenta" "white" 'DOTNET_ICON' 0 '' "$_p9k_ret" +} + ################################################################ # Segment to print a little OS icon prompt_os_icon() { @@ -3821,6 +3837,7 @@ _p9k_init_params() { _p9k_declare -i POWERLEVEL9K_LOAD_WHICH 5 _p9k_declare -b POWERLEVEL9K_NODENV_PROMPT_ALWAYS_SHOW 0 _p9k_declare -b POWERLEVEL9K_NODE_VERSION_PROJECT_ONLY 0 + _p9k_declare -b POWERLEVEL9K_DOTNET_VERSION_PROJECT_ONLY 1 _p9k_declare -b POWERLEVEL9K_GO_VERSION_PROJECT_ONLY 1 _p9k_declare -b POWERLEVEL9K_RUST_VERSION_PROJECT_ONLY 1 _p9k_declare -b POWERLEVEL9K_RBENV_PROMPT_ALWAYS_SHOW 0