summaryrefslogtreecommitdiff
path: root/dotfiles/system/.zsh/lib/-ftb-colorize
blob: 3b1909bdb46e8f6cf1b38647fd0cf00776f43fdb (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
26
27
28
29
30
31
32
33
34
#!/hint/zsh
emulate -L zsh -o cbases -o octalzeroes

local REPLY
local -a reply stat lstat

# fzf-tab-lscolors::match-by $1 lstat follow
zstat -A lstat -L -- $1
# follow symlink
(( lstat[3] & 0170000 )) && zstat -A stat -- $1 2>/dev/null

fzf-tab-lscolors::from-mode "$1" "$lstat[3]" $stat[3]
# fall back to name
[[ -z $REPLY ]] && fzf-tab-lscolors::from-name $1

# If this is a symlink
if [[ -n $lstat[14] ]]; then
  local sym_color=$REPLY
  local rsv_color=$REPLY
  local rsv=$lstat[14]
  # If this is not a broken symlink
  if [[ -e $rsv ]]; then
    # fzf-tab-lscolors::match-by $rsv stat
    zstat -A stat -- $rsv
    fzf-tab-lscolors::from-mode $rsv $stat[3]
    # fall back to name
    [[ -z $REPLY ]] && fzf-tab-lscolors::from-name $rsv
    rsv_color=$REPLY
  fi
  dpre=$'\033[0m\033['$sym_color'm'
  dsuf+=$'\033[0m -> \033['$rsv_color'm'$rsv
else
  dpre=$'\033[0m\033['$REPLY'm'
fi