spectrum.zsh
1280 bytes
1# A script to make using 256 colors in zsh less painful.
2# P.C. Shyamshankar <sykora@lucentbeing.com>
3# Copied from https://github.com/sykora/etc/blob/master/zsh/functions/spectrum/
4
5typeset -AHg FX FG BG
6
7FX=(
8 reset "%{[00m%}"
9 bold "%{[01m%}" no-bold "%{[22m%}"
10 dim "%{[02m%}" no-dim "%{[22m%}"
11 italic "%{[03m%}" no-italic "%{[23m%}"
12 underline "%{[04m%}" no-underline "%{[24m%}"
13 blink "%{[05m%}" no-blink "%{[25m%}"
14 reverse "%{[07m%}" no-reverse "%{[27m%}"
15)
16
17for color in {000..255}; do
18 FG[$color]="%{[38;5;${color}m%}"
19 BG[$color]="%{[48;5;${color}m%}"
20done
21
22# Show all 256 colors with color number
23function spectrum_ls() {
24 setopt localoptions nopromptsubst
25 local ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris}
26 for code in {000..255}; do
27 print -P -- "$code: ${FG[$code]}${ZSH_SPECTRUM_TEXT}%{$reset_color%}"
28 done
29}
30
31# Show all 256 colors where the background is set to specific color
32function spectrum_bls() {
33 setopt localoptions nopromptsubst
34 local ZSH_SPECTRUM_TEXT=${ZSH_SPECTRUM_TEXT:-Arma virumque cano Troiae qui primus ab oris}
35 for code in {000..255}; do
36 print -P -- "$code: ${BG[$code]}${ZSH_SPECTRUM_TEXT}%{$reset_color%}"
37 done
38}