1#!/bin/zsh 2# Completion for zsh: 3# (based on <http://d.hatena.ne.jp/rubikitch/20071002/zshcomplete>) 4# 5# (1) install this file. 6# mkdir -p ~/.zsh.d 7# cp rb_optparse.zsh ~/.zsh.d/rb_optparse.zsh 8# 9# (2) load the script, and add a directory to fpath before compinit. 10# echo '. ~/.zsh.d/rb_optparse.zsh' >> ~/.zshrc 11# echo 'fpath=(~/.zsh.d/Completion $fpath)' >> ~/.zshrc 12# echo 'autoload -U compinit; compinit' >> ~/.zshrc 13# 14# (3) restart zsh. 15# 16# (4) geneate completion files once. 17# generate-complete-function/ruby/optparse COMMAND1 18# generate-complete-function/ruby/optparse COMMAND2 19# 20 21generate-complete-function/ruby/optparse () 22{ 23 local cmpl="_${1:t}" 24 mkdir -p "${ZSH_COMPLETION_DIR-$HOME/.zsh.d/Completion}" 25 $1 "--*-completion-zsh=${1:t}" >! "${ZSH_COMPLETION_DIR-$HOME/.zsh.d/Completion}/$cmpl" 26 if [[ $(type -w "$cmpl") == "${cmpl}: function" ]]; then 27 unfunction "$cmpl" 28 autoload -U "$cmpl" 29 else 30 compinit "$cmpl" 31 fi 32} 33 34compdef _command generate-complete-function/ruby/optparse 35 36for cmd in "$@"; do 37 generate-complete-function/ruby/optparse "$cmd" 38done 39