diff options
author | Tanaka Akira <akr@users.sourceforge.net> | 1999-11-09 13:14:59 +0000 |
---|---|---|
committer | Tanaka Akira <akr@users.sourceforge.net> | 1999-11-09 13:14:59 +0000 |
commit | c615397157e5efd7a81c8ce11b3f77fd7ccb5a19 (patch) | |
tree | 9f6e9081024370574ae18b5808ebedf6d653d672 /Completion/Core/_style | |
parent | 95af0ef9c4639763c8094d6e8cd5d8ec01a32f96 (diff) | |
download | zsh-c615397157e5efd7a81c8ce11b3f77fd7ccb5a19.tar.gz zsh-c615397157e5efd7a81c8ce11b3f77fd7ccb5a19.tar.xz zsh-c615397157e5efd7a81c8ce11b3f77fd7ccb5a19.zip |
zsh-workers/8603
Diffstat (limited to 'Completion/Core/_style')
-rw-r--r-- | Completion/Core/_style | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/Completion/Core/_style b/Completion/Core/_style new file mode 100644 index 000000000..b0cbd7b00 --- /dev/null +++ b/Completion/Core/_style @@ -0,0 +1,45 @@ +#autoload + +local tags get i + +if [[ "$1" = -g ]]; then + get=yes + shift +fi + +if (( ${+_cur_tags[${funcstack[2,-1]}]} )); then + tags="${_cur_tags[${funcstack[2,-1]}]}" +else + tags="${_cur_tags[${funcstack[3,-1]}]}" +fi + +if [[ "$tags" = *:${1}\[*\]:* ]]; then + + tags="${${tags#*:${1}\[}%%\]*}" + + if [[ $# -eq 2 ]]; then + if [[ -n "$get" ]]; then + eval "${2}=\"$tags\"" + return 0 + fi + + [[ "$tags" = (|*,)${2}(|,*) ]] + return + fi + + [[ "$tags" = (|*,)${2}(|(\=|,)*) ]] || return 1 + + if [[ -n "$get" ]]; then + if [[ "$tags" = (|*,)${2}\=* ]]; then + eval "${3}=\"${${tags#(|*,)${2}\=}%%,*}\"" + else + eval "${3}=''" + fi + return 0 + fi + + [[ "$tags" = (|*,)${2}\=(|[^,]#,)${3}(|,*) ]] + return +fi + +return 1 |