summaryrefslogtreecommitdiff
path: root/app-shells/zsh/files/zsh-5.3-init.d-gentoo.diff
diff options
context:
space:
mode:
Diffstat (limited to 'app-shells/zsh/files/zsh-5.3-init.d-gentoo.diff')
-rw-r--r--app-shells/zsh/files/zsh-5.3-init.d-gentoo.diff31
1 files changed, 31 insertions, 0 deletions
diff --git a/app-shells/zsh/files/zsh-5.3-init.d-gentoo.diff b/app-shells/zsh/files/zsh-5.3-init.d-gentoo.diff
new file mode 100644
index 000000000000..9deafd0d981c
--- /dev/null
+++ b/app-shells/zsh/files/zsh-5.3-init.d-gentoo.diff
@@ -0,0 +1,31 @@
+--- zsh-5.3/Completion/Unix/Command/_init_d
++++ zsh-5.3/Completion/Unix/Command/_init_d
+@@ -1,6 +1,6 @@
+ #compdef -p */(init|rc[0-9S]#).d/*
+
+-local cmds script
++local cmds script opts
+ local -a flags
+
+ _compskip=all
+@@ -102,10 +102,18 @@
+
+ script=$words[1]
+ [[ $script = */* ]] || script="$(_init_d_fullpath "$script")"
++[[ ! -f $script ]] &&
++ { _message "${words[1]:t} is not an init script" && return }
++
+
+ cmds=( $(_init_d_get_cmds) ) || return 1
+
+-(( $#cmds )) || zstyle -a ":completion:${curcontext}:commands" commands cmds ||
+- cmds=(start stop)
++(( $#cmds )) || zstyle -a ":completion:${curcontext}:commands" commands cmds
++opts=(start stop restart pause zap status ineed iuse needsme usesme broken)
++
++# If we didn't get $cmds from a zstyle, then read init script for opts.
++# If script doesn't specify opts, then default to the standard opts.
++(( $#cmds )) || cmds=( ${(eQz)${(M)${(f)"$( <$script)"}:#[[:blank:]]#opts=*}#*=} )
++(( $#cmds )) || cmds=($opts)
+
+ _arguments -s -A "-*" $flags ':init.d command:_sub_commands $cmds'