This page looks best with JavaScript enabled

YARDでSolargraphの補完を強化する

 ·  ☕ 2 min read

YARDとは

Rubyのドキュメントツールです。メソッドやクラスの上にこんな感じのコメントをつけるといい感じにhtmlで出力してくれるやつです

1
2
3
4
5
6
class Foo
  # @param a [String]
  # @param b [String]
  # @return [Integer]
  def bar(a, b); end
end

Solargraphとは

RubyのLanguage serverです。定義ジャンプや、補完等を提供してくれるものです。

Solargraphの不満

Pure Rubyだとそんなことはないんですが、Railsでの環境だと補完が貧弱になってしまいます。
Railsは黒魔術満載なのでしょうがないんですが、せめて自分の定義したメソッドの補完ぐらいはいい感じに出てほしいです。

YARDとSolargraph

Solargraphの公式サイトにありますが、SolargraphはいくつかのYARDタグとSolargraph自体が用意しているカスタムのタグを記述すると補完をいい感じに出してくれるようになります。
RBSとSteepを使えばもっと強力な補完をしてくれますが、古いプロジェクトやそこまでコストを掛けられない状況のときにコメントを書くだけでよいのでこれからも使いどころはあると思います。

ということで書くと補完を強化してくれるYARDのタグ + Solargraphの用意しているタグを画像つきで紹介したいと思います。

環境

  • Vim
  • coc.nvim
  • Solargraph

タグの紹介

@return

メソッドや attr_ の戻り値の型を指定できます。

before

return-before

after

return-after

@param

メソッドの引数の型を指定できます。

before

param-before

after

param-after

@yieldparam

ブロック引数の型を指定できます

before

yieldparam-before

after

yieldparam-after

@overload

引数の型や個数によって戻り値が変わるケースの型を指定できます

before

overload1-before
overload2-before

after

overload1-after
overload2-after

@!attribute

attr_ 系の型を指定できます

before

attribute-before

after

attribute-after

@!method

実際に定義のないメソッドの型を指定できます

before

method-before

after

method-after

@!parse

任意のRubyコードの型を指定できます

before

parse-before

after

parse-after

@type

変数の方を指定できます

before

type-before

after

type-after

@yieldself

ブロック内のselfの型を指定できます

before

yieldself-before

after

yieldself-after

@!override

事前に定義されているメソッドの型を指定できます、がこれだけは補完がうまくいかなかったです

まとめ

こういった型に応じた補完が効くのはやはり、コードが書きやすくなるのである程度書いていきたいですね。
別の記事で更に強力な補完を出すことが可能なSteep + RBSでのcoc.nvim + Vimでの設定の方法を紹介したいと思います。

Share on

ippachi
WRITTEN BY
ippachi
Software Developer