mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			115 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # Put standard ANSI color codes in shell parameters for easy use.
 | |
| # Note that some terminals do not support all combinations.
 | |
| 
 | |
| typeset -Ag color colour
 | |
| 
 | |
| color=(
 | |
| # Codes listed in this array are from ECMA-48, Section 8.3.117, p. 61.
 | |
| # Those that are commented out are not widely supported or aren't closely
 | |
| # enough related to color manipulation, but are included for completeness.
 | |
| 
 | |
| # Attribute codes:
 | |
|   00 none                 # 20 gothic
 | |
|   01 bold                 # 21 double-underline
 | |
|   02 faint                  22 normal
 | |
|   03 standout               23 no-standout
 | |
|   04 underline              24 no-underline
 | |
|   05 blink                  25 no-blink
 | |
| # 06 fast-blink           # 26 proportional
 | |
|   07 reverse                27 no-reverse
 | |
|   08 conceal                28 no-conceal
 | |
| # 09 strikethrough        # 29 no-strikethrough
 | |
| 
 | |
| # Font selection:
 | |
| # 10 font-default
 | |
| # 11 font-first
 | |
| # 12 font-second
 | |
| # 13 font-third
 | |
| # 14 font-fourth
 | |
| # 15 font-fifth
 | |
| # 16 font-sixth
 | |
| # 17 font-seventh
 | |
| # 18 font-eighth
 | |
| # 19 font-ninth
 | |
| 
 | |
| # Text color codes:
 | |
|   30 black                  40 bg-black
 | |
|   31 red                    41 bg-red
 | |
|   32 green                  42 bg-green
 | |
|   33 yellow                 43 bg-yellow
 | |
|   34 blue                   44 bg-blue
 | |
|   35 magenta                45 bg-magenta
 | |
|   36 cyan                   46 bg-cyan
 | |
|   37 white                  47 bg-white
 | |
| # 38 iso-8316-6           # 48 bg-iso-8316-6
 | |
|   39 default                49 bg-default
 | |
| 
 | |
| # Other codes:
 | |
| # 50 no-proportional
 | |
| # 51 border-rectangle
 | |
| # 52 border-circle
 | |
| # 53 overline
 | |
| # 54 no-border
 | |
| # 55 no-overline
 | |
| # 56 through 59 reserved
 | |
| 
 | |
| # Ideogram markings:
 | |
| # 60 underline-or-right
 | |
| # 61 double-underline-or-right
 | |
| # 62 overline-or-left
 | |
| # 63 double-overline-or-left
 | |
| # 64 stress
 | |
| # 65 no-ideogram-marking
 | |
| )
 | |
| 
 | |
| # A word about black and white:  The "normal" shade of white is really a
 | |
| # very pale grey on many terminals; to get truly white text, you have to
 | |
| # use bold white, and to get a truly white background you have to use
 | |
| # bold reverse white bg-xxx where xxx is your desired foreground color
 | |
| # (and which means the foreground is also bold).
 | |
| 
 | |
| # Map in both directions; could do this with e.g. ${(k)colors[(i)normal]},
 | |
| # but it's clearer to include them all both ways.
 | |
| 
 | |
| local k
 | |
| for k in ${(k)color}; do color[${color[$k]}]=$k; done
 | |
| 
 | |
| # Add "fg-" keys for all the text colors, for clarity.
 | |
| 
 | |
| for k in ${color[(I)3?]}; do color[fg-${color[$k]}]=$k; done
 | |
| 
 | |
| # This is inaccurate, but the prompt theme system needs it.
 | |
| 
 | |
| color[grey]=${color[black]}
 | |
| color[fg-grey]=${color[grey]}
 | |
| color[bg-grey]=${color[bg-black]}
 | |
| 
 | |
| # Assistance for the color-blind.
 | |
| 
 | |
| colour=(${(kv)color})	# A case where ksh namerefs would be useful ...
 | |
| 
 | |
| # The following are terminal escape sequences used by colored prompt themes.
 | |
| 
 | |
| local lc=$'\e[' rc=m	# Standard ANSI terminal escape values
 | |
| 
 | |
| typeset -Hg reset_color bold_color
 | |
| reset_color="$lc${color[none]}$rc"
 | |
| bold_color="$lc${color[bold]}$rc"
 | |
| 
 | |
| # Foreground
 | |
| 
 | |
| typeset -AHg fg fg_bold fg_no_bold
 | |
| for k in ${(k)color[(I)fg-*]}; do
 | |
|     fg[${k#fg-}]="$lc${color[$k]}$rc"
 | |
|     fg_bold[${k#fg-}]="$lc${color[bold]};${color[$k]}$rc"
 | |
|     fg_no_bold[${k#fg-}]="$lc${color[normal]};${color[$k]}$rc"
 | |
| done
 | |
| 
 | |
| # Background
 | |
| 
 | |
| typeset -AHg bg bg_bold bg_no_bold
 | |
| for k in ${(k)color[(I)bg-*]}; do
 | |
|     bg[${k#bg-}]="$lc${color[$k]}$rc"
 | |
|     bg_bold[${k#bg-}]="$lc${color[bold]};${color[$k]}$rc"
 | |
|     bg_no_bold[${k#bg-}]="$lc${color[normal]};${color[$k]}$rc"
 | |
| done
 |