Ruby 2.0 のキーワード引数を補完する neocomplcache ソースを書いた

neco-ruby-keyword-args というプラグインを作りました.

neco-ruby-keyword-args

Ruby 2.0 では,引数を名前で指定するキーワード引数が追加されました. 今まではハッシュを引数にすることで擬似的に名前渡しを実現していましたが,もうそんなことをする必要はありません.

# ハッシュのような書き方で引数の名前とデフォルト値を指定
def test(tsura: 'poyo', yaba: 'poyo')
  puts tsura+yaba
end

# 指定しないとデフォルト値が使われる
test #=> poyopoyo
# 名前で指定するので順番は意識しなくて良い
test yaba: 'dameda', tsura: 'mou' #=> moudameda

これにより,引数の順序を守らないといけないなどの煩わしさから開放され,どの引数が何の値を示しているのか呼び出し側で明示できます. しかし,当然ですが代わりに引数に付けられた名前を覚えておかなければなりません. そこで,ソース内の引数名を収集し,自動で補完してくれるプラグインを作りました. neocomplcache のソースとして実装しているので,neocomplcache を使っていることが前提です.

使用中のスクリーンショットはこんな感じです. スクリーンショット

少し分かりにくいですが,一番下の行で test メソッドの tsura 引数を補完しようとしているところです. 補完候補の [K] というのがキーワード引数補完のマークで,その次にデフォルト値が 'poyo' であることが表示されています.

なお,現在このソースが補完できるのは,Vim 内で開いている Ruby ソースに定義が書かれたメソッドのみです.require 先やメソッド 呼び出しからも候補収集できそうですが,そういうのは追々やっていきます.