summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorCarlo Sala <carlosalag@protonmail.com>2023-02-16 12:54:23 +0100
committerCarlo Sala <carlosalag@protonmail.com>2023-02-16 12:54:23 +0100
commit8a68bf67720a6a5442ae947d10d74b1dd3558d91 (patch)
treeab82e5bda514435833839df3f25b30be64e5f9bd /lib
parent574669da6b71462c1f92c75ad75f66476b92974c (diff)
downloadzsh-8a68bf67720a6a5442ae947d10d74b1dd3558d91.tar.gz
zsh-8a68bf67720a6a5442ae947d10d74b1dd3558d91.tar.bz2
zsh-8a68bf67720a6a5442ae947d10d74b1dd3558d91.zip
fix(theme-and-appearance): test color ls with $ZSH directory
Fixes #11500
Diffstat (limited to 'lib')
-rw-r--r--lib/theme-and-appearance.zsh17
1 files changed, 11 insertions, 6 deletions
diff --git a/lib/theme-and-appearance.zsh b/lib/theme-and-appearance.zsh
index 9b908bef0..c83f58c7b 100644
--- a/lib/theme-and-appearance.zsh
+++ b/lib/theme-and-appearance.zsh
@@ -7,32 +7,37 @@ export LSCOLORS="Gxfxcxdxbxegedabagacad"
# TODO organise this chaotic logic
if [[ "$DISABLE_LS_COLORS" != "true" ]]; then
+ if [[ -d "$ZSH" ]]; then
+ _test_dir="$ZSH"
+ else
+ _test_dir="."
+ fi
# Find the option for using colors in ls, depending on the version
if [[ "$OSTYPE" == netbsd* ]]; then
# On NetBSD, test if "gls" (GNU ls) is installed (this one supports colors);
# otherwise, leave ls as is, because NetBSD's ls doesn't support -G
- gls --color -d . &>/dev/null && alias ls='gls --color=tty'
+ gls --color -d "$_test_dir" &>/dev/null && alias ls='gls --color=tty'
elif [[ "$OSTYPE" == openbsd* ]]; then
# On OpenBSD, "gls" (ls from GNU coreutils) and "colorls" (ls from base,
# with color and multibyte support) are available from ports. "colorls"
# will be installed on purpose and can't be pulled in by installing
# coreutils, so prefer it to "gls".
- gls --color -d . &>/dev/null && alias ls='gls --color=tty'
- colorls -G -d . &>/dev/null && alias ls='colorls -G'
+ gls --color -d "$_test_dir" &>/dev/null && alias ls='gls --color=tty'
+ colorls -G -d "$_test_dir" &>/dev/null && alias ls='colorls -G'
elif [[ "$OSTYPE" == (darwin|freebsd)* ]]; then
# this is a good alias, it works by default just using $LSCOLORS
- ls -G . &>/dev/null && alias ls='ls -G'
+ ls -G "$_test_dir" &>/dev/null && alias ls='ls -G'
# only use coreutils ls if there is a dircolors customization present ($LS_COLORS or .dircolors file)
# otherwise, gls will use the default color scheme which is ugly af
- [[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] && gls --color -d . &>/dev/null && alias ls='gls --color=tty'
+ [[ -n "$LS_COLORS" || -f "$HOME/.dircolors" ]] && gls --color -d "$_test_dir" &>/dev/null && alias ls='gls --color=tty'
else
# For GNU ls, we use the default ls color theme. They can later be overwritten by themes.
if [[ -z "$LS_COLORS" ]]; then
(( $+commands[dircolors] )) && eval "$(dircolors -b)"
fi
- ls --color -d . &>/dev/null && alias ls='ls --color=tty' || { ls -G . &>/dev/null && alias ls='ls -G' }
+ ls --color -d "$_test_dir" &>/dev/null && alias ls='ls --color=tty' || { ls -G "$_test_dir" &>/dev/null && alias ls='ls -G' }
# Take advantage of $LS_COLORS for completion as well.
zstyle ':completion:*' list-colors "${(s.:.)LS_COLORS}"