diff options
| -rw-r--r-- | provides/zsh/completions/_envstore | 25 | 
1 files changed, 20 insertions, 5 deletions
| diff --git a/provides/zsh/completions/_envstore b/provides/zsh/completions/_envstore index f75a223..1b8a862 100644 --- a/provides/zsh/completions/_envstore +++ b/provides/zsh/completions/_envstore @@ -5,8 +5,9 @@  ## https://derf.homelinux.org/~derf/dotfiles/completion/_envstore  ## see also: http://git.cloudconnected.org/?p=envstore.git;a=summary -local arguments_action arguments_action_nofile -local arguments_save arguments_rm arguments_eval +local -a arguments_action arguments_action_nofile +local -a arguments_save arguments_rm arguments_eval +local lstate  arguments_action=(  	'1:action:(clear eval rm save show)' @@ -19,16 +20,16 @@ arguments_action_nofile=(  # Also, don't complete parameters marked 'special', since they're usually  # specific to the current shell  arguments_save=( -	'2:parameter:_parameters -g "(scalar|integer)*export"' +	'2:parameter:->param'  )  arguments_rm=( -	'2:parameter:($(envstore eval -e | cut -d " " -f 2 | cut -d "=" -f 1))' +	'2:saved parameter:->saved_param'  )  arguments_eval=(  	'2::option:(-e)'  ) -if [[ $CURRENT -ge 3 ]] { +if (( CURRENT >= 3 )) {  	case ${words[2]} in   		eval)  _arguments -s $arguments_eval ;;  		rm)    _arguments -s $arguments_rm ;; @@ -39,3 +40,17 @@ if [[ $CURRENT -ge 3 ]] {  } else {  	_arguments -s $arguments_action_nofile  } + +while [[ -n $state ]]; do +	lstate=$state +	state='' +	case $lstate in +		param) +			_parameters -g '(scalar|integer)*export' +		;; +		saved_param) +			_wanted parameter expl 'saved parameter' \ +			compadd $(envstore eval -e | cut -d ' ' -f 2 | cut -d '=' -f 1) +		;; +	esac +done | 
