mirror of
https://github.com/romkatv/powerlevel10k.git
synced 2024-11-29 06:40:08 +00:00
Fix for "truncate_to_unique" strategy
This commit is contained in:
parent
a7b3f310d3
commit
29c85be8d9
1 changed files with 38 additions and 4 deletions
|
@ -744,6 +744,38 @@ prompt_command_execution_time() {
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
################################################################
|
||||||
|
# Determine the home folder unique path - this is needed for
|
||||||
|
# truncate_to_unique to work when P9K_DIR_PATH_ABSOLUTE is not
|
||||||
|
# set the true.
|
||||||
|
#
|
||||||
|
local home_path=""
|
||||||
|
getUniqueHomeFolder() {
|
||||||
|
if [[ "$home_path" == "" ]]; then
|
||||||
|
local trunc_path directory test_dir test_dir_length
|
||||||
|
local -a matching
|
||||||
|
local -a paths
|
||||||
|
local cur_path='/'
|
||||||
|
# the first time we run the script, the working directory *should* be the home folder
|
||||||
|
[[ -z $HOME ]] && paths=${PWD} || paths=$HOME
|
||||||
|
paths=(${(s:/:)paths})
|
||||||
|
for directory in ${paths[@]}; do
|
||||||
|
test_dir=''
|
||||||
|
for (( i=0; i < ${#directory}; i++ )); do
|
||||||
|
test_dir+="${directory:$i:1}"
|
||||||
|
matching=("$cur_path"/"$test_dir"*/)
|
||||||
|
if [[ ${#matching[@]} -eq 1 ]]; then
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
trunc_path+="$test_dir/"
|
||||||
|
cur_path+="$directory/"
|
||||||
|
done
|
||||||
|
home_path="${trunc_path: : -1}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
getUniqueHomeFolder
|
||||||
|
|
||||||
################################################################
|
################################################################
|
||||||
# Dir: current working directory
|
# Dir: current working directory
|
||||||
# Parameters:
|
# Parameters:
|
||||||
|
@ -811,12 +843,13 @@ prompt_dir() {
|
||||||
# for each parent path component find the shortest unique beginning
|
# for each parent path component find the shortest unique beginning
|
||||||
# characters sequence. Source: https://stackoverflow.com/a/45336078
|
# characters sequence. Source: https://stackoverflow.com/a/45336078
|
||||||
if (( ${#current_path} > 1 )); then # root and home are exceptions and won't have paths
|
if (( ${#current_path} > 1 )); then # root and home are exceptions and won't have paths
|
||||||
local matching
|
local -a matching
|
||||||
local cur_path='/'
|
local cur_path='/'
|
||||||
[[ $current_path != "~"* ]] && trunc_path='/' || trunc_path=''
|
# we need to use absolute paths for this strategy to work correctly
|
||||||
|
paths=(${(s:/:)PWD})
|
||||||
for directory in ${paths[@]}; do
|
for directory in ${paths[@]}; do
|
||||||
test_dir=''
|
test_dir=''
|
||||||
for (( i=0; i<${#directory}; i++ )); do
|
for (( i=0; i < ${#directory}; i++ )); do
|
||||||
test_dir+="${directory:$i:1}"
|
test_dir+="${directory:$i:1}"
|
||||||
matching=("$cur_path"/"$test_dir"*/)
|
matching=("$cur_path"/"$test_dir"*/)
|
||||||
if [[ ${#matching[@]} -eq 1 ]]; then
|
if [[ ${#matching[@]} -eq 1 ]]; then
|
||||||
|
@ -826,7 +859,8 @@ prompt_dir() {
|
||||||
trunc_path+="$test_dir/"
|
trunc_path+="$test_dir/"
|
||||||
cur_path+="$directory/"
|
cur_path+="$directory/"
|
||||||
done
|
done
|
||||||
[[ $current_path == "~"* ]] && trunc_path="~/$trunc_path"
|
# cheating here to retain ~ as home folder
|
||||||
|
[[ $current_path == "~"* ]] && trunc_path="~${trunc_path//${home_path}/}" || trunc_path="/${trunc_path}"
|
||||||
current_path="${trunc_path: : -1}"
|
current_path="${trunc_path: : -1}"
|
||||||
fi
|
fi
|
||||||
;;
|
;;
|
||||||
|
|
Loading…
Reference in a new issue