mirror of
				https://github.com/ohmyzsh/ohmyzsh.git
				synced 2024-05-11 05:55:17 +00:00 
			
		
		
		
	fix(theme-and-appearance): test color ls with $ZSH directory
Fixes #11500
This commit is contained in:
		@@ -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}"
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user