diff options
author | Dylan Araps <dylan.araps@gmail.com> | 2019-01-13 13:08:33 +0200 |
---|---|---|
committer | Dylan Araps <dylan.araps@gmail.com> | 2019-01-13 13:08:33 +0200 |
commit | b6cfad97c22887e9897ff492baeda2de61d468c8 (patch) | |
tree | ebadedd4de160e30b58de21fec3ea05e6b24dca9 | |
parent | da7c0a71cc13e338941fb036d382b92abe5bbcf8 (diff) |
support for LS_COLORS
-rwxr-xr-x | fff | 53 |
1 files changed, 49 insertions, 4 deletions
@@ -127,10 +127,55 @@ read_dir() { print_line() { # Format the list item and print it. - [[ -d ${list[$1]} ]] && { - local format+="\\e[1;3${FFF_COL1:-2}m" - local suffix+='/' - } + if [[ ${FFF_LS_COLORS:=on} == on ]]; then + local file_name="${list[$1]##*/}" + local file_ext="${file_name##*.}" + + if [[ -d ${list[$1]} ]]; then + local ls_color="${LS_COLORS/*':di='}" + local format+="\\e[${ls_color/':'*}m" + local suffix+='/' + + elif [[ -b ${list[$1]} ]]; then + local ls_color="${LS_COLORS/*':bd='}" + local format+="\\e[${LS_COLORS/*':'}m" + + elif [[ -c ${list[$1]} ]]; then + local ls_color="${LS_COLORS/*':cd='}" + local format+="\\e[${LS_COLORS/*':'}m" + + elif [[ -x ${list[$1]} ]]; then + local ls_color="${LS_COLORS/*':ex='}" + local format+="\\e[${LS_COLORS/*':'}m" + + elif [[ -h ${list[$1]} ]]; then + local ls_color="${LS_COLORS/*':ln='}" + local format+="\\e[${LS_COLORS/*':'}m" + + elif [[ -p ${list[$1]} ]]; then + local ls_color="${LS_COLORS/*':pi='}" + local format+="\\e[${LS_COLORS/*':'}m" + + elif [[ -S ${list[$1]} ]]; then + local ls_color="${LS_COLORS/*':so='}" + local format+="\\e[${LS_COLORS/*':'}m" + + elif [[ $file_ext != "$file_name" && + $LS_COLORS == *."$file_ext"=* ]]; then + local ls_color="${LS_COLORS/*.${file_ext}=}" + local format+="\\e[${ls_color/:*}m" + + else + local ls_color="${LS_COLORS/*':fi='}" + local format+="\\e[${LS_COLORS/*':'}m" + fi + else + + [[ -d ${list[$1]} ]] && { + local format+="\\e[1;3${FFF_COL1:-2}m" + local suffix+='/' + } + fi # If the list item is under the cursor. (($1 == scroll)) && |