summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDylan Araps <dylan.araps@gmail.com>2019-01-13 13:08:33 +0200
committerDylan Araps <dylan.araps@gmail.com>2019-01-13 13:08:33 +0200
commitb6cfad97c22887e9897ff492baeda2de61d468c8 (patch)
treeebadedd4de160e30b58de21fec3ea05e6b24dca9
parentda7c0a71cc13e338941fb036d382b92abe5bbcf8 (diff)
support for LS_COLORS
-rwxr-xr-xfff53
1 files changed, 49 insertions, 4 deletions
diff --git a/fff b/fff
index c4497db..e139784 100755
--- a/fff
+++ b/fff
@@ -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)) &&