aboutsummaryrefslogtreecommitdiffstats
path: root/zsh/.zsh/functions/spwd
blob: 15aef1be1074a1f3d54e880ddb9fe07ac2d4eced (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# From https://stackoverflow.com/a/45336078
paths=(${(s:/:)PWD})

cur_path='/'
cur_short_path='/'
for directory in ${paths[@]}
do
    cur_dir=''
    for (( i=0; i<${#directory}; i++ )); do
        cur_dir+="${directory:$i:1}"
        matching=("$cur_path"/"$cur_dir"*/)
        if [[ ${#matching[@]} -eq 1 ]]; then
            break
        fi
    done
    cur_short_path+="$cur_dir/"
    cur_path+="$directory/"

    if [[ $cur_path == $HOME/ ]];
    then cur_short_path='~/'
    fi
done

printf %b "${cur_short_path: : -1}"
echo