zshの補完関数が書きたい

$fpath以下にあるファイルに補完の設定が書いてあるらしい。

補完設定用のファイルに楽に移動したい

移動用にanythingを使った関数を作成する.(rubyも使ってる)

(defmacro tiny-anything-function-maker  (fname name shell-command actions)
  "fname: generated function's name
name: index-name ---- \"current files\"
Shell-command: shell-command ---- \"echo \\\"test\\\"\"
actions: action-list --- find-file or ((\"find-file\" . find-file))
"
  `(defun ,fname () (interactive)
     (let ((source
	    '((name . ,name)
	      (init . 
		    (lambda ()
		      (call-process-shell-command ,shell-command
						  nil
						  (anything-candidate-buffer 'global))))
	      (candidates-in-buffer)
	      (action . ,actions))))
       (anything (list source)))))

(tiny-anything-function-maker find-zsh-completion-function-file
			      "Completion files"
			      "echo $fpath | ruby -ne '$_.split(\" \").each{|d| fs = Dir[d+\"/*\"]; next if fs.empty?; puts fs}'"
			      (lambda (c) 
				(set-buffer (find-file-noselect c))
				(shell-script-mode)
				(switch-to-buffer (current-buffer))
				))

あとでかく。