mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-11 20:31:11 +01:00
zstyle+ simplifies definition of styles (10795)
This commit is contained in:
parent
30a98cc4d6
commit
4f1424edb2
2 changed files with 37 additions and 0 deletions
|
@ -7,6 +7,8 @@
|
|||
|
||||
2000-04-17 Sven Wischnowsky <wischnow@informatik.hu-berlin.de>
|
||||
|
||||
* 10795: Functions/Misc/zstyle+: simplify definiton of styles
|
||||
|
||||
* 10790: Doc/Zsh/mod_complist.yo, Src/params.c, Src/Zle/compcore.c,
|
||||
Src/Zle/complete.c, Src/Zle/complist.c, Src/Zle/compresult.c,
|
||||
Src/Zle/zle_tricky.c, Src/Zle/zle_utils.c: scrolling in completion
|
||||
|
|
35
Functions/Misc/zstyle+
Normal file
35
Functions/Misc/zstyle+
Normal file
|
@ -0,0 +1,35 @@
|
|||
# This makes defining styles a bit simpler by using a single `+' as a
|
||||
# special token that allows to append a context name to the previously
|
||||
# used context name. Like this:
|
||||
#
|
||||
# zstyle+ ':foo:bar' style1 value1 \
|
||||
# + ':baz' style2 value2 \
|
||||
# + ':frob' style3 value3
|
||||
#
|
||||
# This defines style1 with value1 for the context :foo:bar as usual.
|
||||
# But it also defines styles2 with value2 for the context :foo:bar:baz
|
||||
# and style3 with value3 for :foo:bar:frob.
|
||||
# Of course, any of the sub-contexts after the plus signs may be
|
||||
# empty strings to re-use the previous context unchanged.
|
||||
#
|
||||
# If you don't want to change all your calls to `zstyle' to use
|
||||
# `zstyle+' you can use an alias `alias zstyle=zstyle+' and make sure
|
||||
# the completion functions are autoloaded without alias expansion (the
|
||||
# -U option to the autoload builtin). The completion system normally
|
||||
# loads its functions with without alias expansion.
|
||||
|
||||
case "$1" in
|
||||
-*) zstyle "$@";;
|
||||
|
||||
*) setopt localoptions noksharrays
|
||||
integer i
|
||||
local context="$1"
|
||||
1=''
|
||||
for ((i=2; $#; ++i)); do
|
||||
if [[ $i -gt $# || "$argv[i]" == '+' ]]; then
|
||||
zstyle "$context${(@)argv[1,i-1]}"
|
||||
shift "i > $# ? $# : i" # Stupid shift error on i > $#
|
||||
i=1
|
||||
fi
|
||||
done;;
|
||||
esac
|
Loading…
Reference in a new issue