aboutsummaryrefslogtreecommitdiff
path: root/powerlevel9k.zsh-theme
diff options
context:
space:
mode:
Diffstat (limited to 'powerlevel9k.zsh-theme')
-rwxr-xr-xpowerlevel9k.zsh-theme42
1 files changed, 39 insertions, 3 deletions
diff --git a/powerlevel9k.zsh-theme b/powerlevel9k.zsh-theme
index bba5a6f6..7da17f99 100755
--- a/powerlevel9k.zsh-theme
+++ b/powerlevel9k.zsh-theme
@@ -444,7 +444,43 @@ prompt_dir() {
current_path=$(pwd | sed -e "s,^$HOME,~," | sed $SED_EXTENDED_REGEX_PARAMETER "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})\//\1$POWERLEVEL9K_SHORTEN_DELIMITER\2\//g")
;;
truncate_from_right)
- current_path=$(pwd | sed -e "s,^$HOME,~," | sed $SED_EXTENDED_REGEX_PARAMETER "s/([^/]{$POWERLEVEL9K_SHORTEN_DIR_LENGTH})[^/]+\//\1$POWERLEVEL9K_SHORTEN_DELIMITER\//g")
+ current_path=$(truncatePathFromRight $(pwd | sed -e "s,^$HOME,~,") )
+ ;;
+ truncate_with_package_name)
+ local name repo_path package_path current_dir zero
+
+ # Get the path of the Git repo, which should have the package.json file
+ if repo_path=$(git rev-parse --git-dir 2>/dev/null); then
+ if [[ "$repo_path" == ".git" ]]; then
+ # If the current path is the root of the project, then the package path is
+ # the current directory and we don't want to append anything to represent
+ # the path to a subdirectory
+ package_path="."
+ subdirectory_path=""
+ else
+ # If the current path is something else, get the path to the package.json
+ # file by finding the repo path and removing the '.git` from the path
+ package_path=${repo_path:0:-4}
+ zero='%([BSUbfksu]|([FB]|){*})'
+ current_dir=$(pwd)
+ # Then, find the length of the package_path string, and save the
+ # subdirectory path as a substring of the current directory's path from 0
+ # to the length of the package path's string
+ subdirectory_path=$(truncatePathFromRight "/${current_dir:${#${(S%%)package_path//$~zero/}}}")
+ fi
+ fi
+
+ # Parse the 'name' from the package.json; if there are any problems, just
+ # print the file path
+ if name=$( cat "$package_path/package.json" 2> /dev/null | grep "\"name\""); then
+ name=$(echo $name | awk -F ':' '{print $2}' | awk -F '"' '{print $2}')
+
+ # Instead of printing out the full path, print out the name of the package
+ # from the package.json and append the current subdirectory
+ current_path="`echo $name | tr -d '"'`$subdirectory_path"
+ else
+ current_path=$(truncatePathFromRight $(pwd | sed -e "s,^$HOME,~,") )
+ fi
;;
*)
current_path="%$((POWERLEVEL9K_SHORTEN_DIR_LENGTH+1))(c:$POWERLEVEL9K_SHORTEN_DELIMITER/:)%${POWERLEVEL9K_SHORTEN_DIR_LENGTH}c"
@@ -778,6 +814,7 @@ prompt_todo() {
# VCS segment: shows the state of your repository, if you are in a folder under
# version control
+set_default POWERLEVEL9K_VCS_ACTIONFORMAT_FOREGROUND "red"
prompt_vcs() {
autoload -Uz vcs_info
@@ -791,7 +828,6 @@ prompt_vcs() {
'clean' 'green'
'modified' 'yellow'
'untracked' 'green'
- 'actionformat' 'red'
)
VCS_CHANGESET_PREFIX=''
@@ -811,7 +847,7 @@ prompt_vcs() {
VCS_DEFAULT_FORMAT="$VCS_CHANGESET_PREFIX%b%c%u%m"
zstyle ':vcs_info:*' formats "$VCS_DEFAULT_FORMAT"
- zstyle ':vcs_info:*' actionformats "%b %F{${vcs_states[actionformat]}}| %a%f"
+ zstyle ':vcs_info:*' actionformats "%b %F{${POWERLEVEL9K_VCS_ACTIONFORMAT_FOREGROUND}}| %a%f"
zstyle ':vcs_info:*' stagedstr " $(print_icon 'VCS_STAGED_ICON')"
zstyle ':vcs_info:*' unstagedstr " $(print_icon 'VCS_UNSTAGED_ICON')"