aboutsummaryrefslogtreecommitdiff
path: root/internal/p10k.zsh
diff options
context:
space:
mode:
Diffstat (limited to 'internal/p10k.zsh')
-rw-r--r--internal/p10k.zsh100
1 files changed, 43 insertions, 57 deletions
diff --git a/internal/p10k.zsh b/internal/p10k.zsh
index 62c71ab3..3c784625 100644
--- a/internal/p10k.zsh
+++ b/internal/p10k.zsh
@@ -3714,40 +3714,9 @@ function +vi-hg-bookmarks() {
function +vi-vcs-detect-changes() {
if [[ "${hook_com[vcs]}" == "git" ]]; then
-
local remote="$(git ls-remote --get-url 2> /dev/null)"
- if [[ "$remote" =~ "github" ]] then
- vcs_visual_identifier='VCS_GIT_GITHUB_ICON'
- elif [[ "$remote" =~ "bitbucket" ]] then
- vcs_visual_identifier='VCS_GIT_BITBUCKET_ICON'
- elif [[ "$remote" =~ "stash" ]] then
- vcs_visual_identifier='VCS_GIT_BITBUCKET_ICON'
- elif [[ "$remote" =~ "gitlab" ]] then
- elif [[ "$remote" =~ "archlinux" ]] then
- vcs_visual_identifier='VCS_GIT_ARCH_ICON'
- if [[ "$remote" =~ "freedesktop" ]] then
- vcs_visual_identifier='VCS_GIT_FREEDESKTOP_ICON'
- elif [[ "$remote" =~ "gnome" ]] then
- vcs_visual_identifier='VCS_GIT_GNOME_ICON'
- else
- vcs_visual_identifier='VCS_GITLAB_ICON'
- fi
- elif [[ "$remote" =~ "codeberg" ]] then
- vcs_visual_identifier='VCS_GIT_CODEBERG_ICON'
- elif [[ "$remote" =~ "debian" ]] then
- vcs_visual_identifier='VCS_GIT_DEBIAN_ICON'
- elif [[ "$remote" =~ "freebsd" ]] then
- vcs_visual_identifier='VCS_GIT_FREEBSD_ICON'
- elif [[ "$remote" =~ "gnu" ]] then
- vcs_visual_identifier='VCS_GIT_GNU_ICON'
- elif [[ "$remote" =~ "kde" ]] then
- vcs_visual_identifier='VCS_GIT_KDE_ICON'
- elif [[ "$remote" =~ "kernel" ]] then
- vcs_visual_identifier='VCS_GIT_LINUX_ICON'
- else
- vcs_visual_identifier='VCS_GIT_ICON'
- fi
-
+ _p9k_vcs_icon "$remote"
+ vcs_visual_identifier=$_p9k__ret
elif [[ "${hook_com[vcs]}" == "hg" ]]; then
vcs_visual_identifier='VCS_HG_ICON'
elif [[ "${hook_com[vcs]}" == "svn" ]]; then
@@ -3880,27 +3849,14 @@ function _p9k_vcs_status_purge() {
}
function _p9k_vcs_icon() {
- case "$VCS_STATUS_REMOTE_URL" in
- *github*) _p9k__ret=VCS_GIT_GITHUB_ICON;;
- *bitbucket*) _p9k__ret=VCS_GIT_BITBUCKET_ICON;;
- *stash*) _p9k__ret=VCS_GIT_BITBUCKET_ICON;;
- *archlinux*) _p9k__ret=VCS_GIT_ARCH_ICON;;
- *freedesktop*) _p9k__ret=VCS_GIT_FREEDESKTOP_ICON;;
- *gnome*) _p9k__ret=VCS_GIT_GNOME_ICON;;
- *gitlab*) _p9k__ret=VCS_GIT_GITLAB_ICON;;
- *codeberg*) _p9k__ret=VCS_GIT_CODEBERG_ICON;;
- *debian*) _p9k__ret=VCS_GIT_DEBIAN_ICON;;
- (#i)*freebsd*) _p9k__ret=VCS_GIT_FREEBSD_ICON;;
- *gnu*) _p9k__ret=VCS_GIT_GNU_ICON;;
- *kde*) _p9k__ret=VCS_GIT_KDE_ICON;;
- *kernel*) _p9k__ret=VCS_GIT_LINUX_ICON;;
- # Azure DevOps: visualstudio.com is the old hostname, dev.azure.com is the new one.
- # https://learn.microsoft.com/en-us/azure/devops/repos/git/use-ssh-keys-to-authenticate
- (|*@|*.)(visualstudio.com|dev.azure.com)(|:*|/*))
- _p9k__ret=VCS_GIT_AZURE_ICON
- ;; # old
- *) _p9k__ret=VCS_GIT_ICON;;
- esac
+ local pat icon
+ for pat icon in "${(@)_POWERLEVEL9K_VCS_GIT_REMOTE_ICONS}"; do
+ if [[ $1 == $~pat ]]; then
+ _p9k__ret=$icon
+ return
+ fi
+ done
+ _p9k__ret=
}
function _p9k_vcs_render() {
@@ -3930,7 +3886,7 @@ function _p9k_vcs_render() {
state=CLEAN
fi
fi
- _p9k_vcs_icon
+ _p9k_vcs_icon "$VCS_STATUS_REMOTE_URL"
_p9k_prompt_segment prompt_vcs_$state "${__p9k_vcs_states[$state]}" "$_p9k_color1" "$_p9k__ret" 0 '' ""
return 0
fi
@@ -3984,7 +3940,7 @@ function _p9k_vcs_render() {
# It's weird that removing vcs-detect-changes from POWERLEVEL9K_VCS_GIT_HOOKS gets rid
# of the GIT icon. That's what vcs_info does, so we do the same in the name of compatibility.
- _p9k_vcs_icon
+ _p9k_vcs_icon "$VCS_STATUS_REMOTE_URL"
icon=$_p9k__ret
fi
@@ -7435,6 +7391,36 @@ _p9k_init_params() {
_p9k_declare -b POWERLEVEL9K_VCS_CONFLICTED_STATE 0
_p9k_declare -b POWERLEVEL9K_HIDE_BRANCH_ICON 0
_p9k_declare -b POWERLEVEL9K_VCS_HIDE_TAGS 0
+ _p9k_declare -a POWERLEVEL9K_VCS_GIT_REMOTE_ICONS
+ if (( $+_POWERLEVEL9K_VCS_GIT_REMOTE_ICONS )); then
+ (( $#_POWERLEVEL9K_VCS_GIT_REMOTE_ICONS & 1 )) && _POWERLEVEL9K_VCS_GIT_REMOTE_ICONS+=('')
+ else
+ local domain= icon= domain2icon=(
+ 'archlinux.org' VCS_GIT_ARCHLINUX_ICON
+ 'dev.azure.com|visualstudio.com' VCS_GIT_AZURE_ICON
+ 'bitbucket.org' VCS_GIT_BITBUCKET_ICON
+ 'codeberg.org' VCS_GIT_CODEBERG_ICON
+ 'debian.org' VCS_GIT_DEBIAN_ICON
+ 'freebsd.org' VCS_GIT_FREEBSD_ICON
+ 'freedesktop.org' VCS_GIT_FREEDESKTOP_ICON
+ 'gitea.com|gitea.io' VCS_GIT_GITEA_ICON
+ 'github.com' VCS_GIT_GITHUB_ICON
+ 'gitlab.com' VCS_GIT_GITLAB_ICON
+ 'gnome.org' VCS_GIT_GNOME_ICON
+ 'gnu.org' VCS_GIT_GNU_ICON
+ 'kde.org' VCS_GIT_KDE_ICON
+ 'kernel.org' VCS_GIT_LINUX_ICON
+ 'sourcehut.org' VCS_GIT_SOURCEHUT_ICON
+ )
+ typeset -ga _POWERLEVEL9K_VCS_GIT_REMOTE_ICONS
+ for domain icon in "${domain2icon[@]}"; do
+ _POWERLEVEL9K_VCS_GIT_REMOTE_ICONS+=(
+ '(|[A-Za-z0-9][A-Za-z0-9+.-]#://)(|[^:/?#]#[.@])((#i)'$domain')(|[/:?#]*)'
+ $icon
+ )
+ done
+ _POWERLEVEL9K_VCS_GIT_REMOTE_ICONS+=('*' VCS_GIT_ICON)
+ fi
_p9k_declare -i POWERLEVEL9K_CHANGESET_HASH_LENGTH 8
# Specifies the maximum number of elements in the cache. When the cache grows over this limit,
# it gets cleared. This is meant to avoid memory leaks when a rogue prompt is filling the cache
@@ -9427,7 +9413,7 @@ if [[ $__p9k_dump_file != $__p9k_instant_prompt_dump_file && -n $__p9k_instant_p
zf_rm -f -- $__p9k_instant_prompt_dump_file{,.zwc} 2>/dev/null
fi
-typeset -g P9K_VERSION=1.19.10
+typeset -g P9K_VERSION=1.19.11
unset VSCODE_SHELL_INTEGRATION
_p9k_init_ssh