Skip to content

Instantly share code, notes, and snippets.

@elanpang
Forked from mattmc3/README.md
Created June 15, 2022 10:05
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save elanpang/34c40ef1e8b98ded4f60450ef784dc9a to your computer and use it in GitHub Desktop.
Save elanpang/34c40ef1e8b98ded4f60450ef784dc9a to your computer and use it in GitHub Desktop.
zsh: zstyle examples
# zstyle-bool
echo "For values that can be missing or default to true, use -T"
function test_bool_zstyle_default_true {
if zstyle -T ':foo:bar' value; then
echo "bar is true or unset"
else
echo "bar is false"
fi
}
test_bool_zstyle_default_true
zstyle ':foo:bar' value yes
test_bool_zstyle_default_true
zstyle ':foo:bar' value no
test_bool_zstyle_default_true
zstyle ':foo:bar' value 1
test_bool_zstyle_default_true
zstyle ':foo:bar' value ''
test_bool_zstyle_default_true
echo "For values that can be missing or default to false, use ! -t"
function test_bool_zstyle_default_false {
if ! zstyle -t ':foo:baz' value; then
echo "baz is false or unset"
else
echo "baz is true"
fi
}
test_bool_zstyle_default_false
zstyle ':foo:baz' value yes
test_bool_zstyle_default_false
zstyle ':foo:baz' value no
test_bool_zstyle_default_false
zstyle ':foo:baz' value 1
test_bool_zstyle_default_false
zstyle ':foo:baz' value ''
test_bool_zstyle_default_false
# reference: http://zsh.sourceforge.net/Doc/Release/Zsh-Modules.html#The-zsh_002fzutil-Module
# https://unix.stackexchange.com/questions/214657/what-does-zstyle-do
# list all zstyle settings
zstyle -L
# store value in zstyle
zstyle :example:favorites fruit apple
# store multiple values in zstyle
zstyle :example:list fruits banana mango pear
# retrieve from zstyle and assign new $fav variable with -g
zstyle -g fav ':example:favorites' fruit && echo $fav
# retrieve from zstyle and be explicit about the assignment data type:
# -a: array, -b: boolean, -s: string
zstyle -a :example:list fruits myfruitlist && echo $myfruitlist
# test that a zstyle value exists with -t
if zstyle -t ':example:favorites' 'fruit' 'apple'; then
echo "an apple a day keeps the dr. away"
fi
if ! zstyle -t ':example:favorites:vegtable' 'broccoli' 'no'; then
echo "Broccoli is the deadliest plant on Earth - why, it tries to warn you itself with its terrible taste"
fi
# delete a value with -d
zstyle -d ':example:favorites' 'fruit'
# list only zstyle settings for a certain pattern
zstyle -L ':example:favorites*'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment