gopher.vim から GoCoverage を切り出したプラグインを作った

1 min読了の目安(約1400字TECH技術記事

概要

gopher.vimとかvim-goとかあるけど、LSPが台頭してきた今、単機能を提供するプラグインの方が好ましい。
https://github.com/kyoh86/vim-go-coverage を作った。

背景

昨今、LSP: Language Server Protocol が台頭してきて、
エディタでの言語サポートはフルセットの機能モリモリのプラグインでやるより、
LSでサポートしきれない部分を小さく切り出して提供していく方が好ましいと考えています。

たとえば、Vim × Goで言えば、フルセットの機能モリモリプラグインとして、

などがありますが、これらは

  • LS同等の機能を独自提供することもできる
  • LSPのクライアントプラグイン(ALEやvim-lspなど)と協調して動作することもできる
  • 自らLSPでLSと会話することもできる

という形で八方美人的に動作している部分があります。
ただ正直、

  • あんまりそのために初期の読み込み量増やしたくない
  • いろんなプラグインが共通の目的(例: autocomplete)を持って動くと機能衝突が怖い

ゆえに その手の動きは全部LSPクライアントプラグインに任せたい という欲が出てきます。

Coverageがほしいので切り出した

ですが、LSPは万能ではないので、そのProtocolに定義されていない機能はありますし、
LS側が機能提供に乗り気でなかったり、提供が遅れるケースもあります。
GoにおけるCoverageはその一つで、上記のフルセットプラグイン群は独自に提供している機能ですが、
LSにはこの機能は現時点ではありません。

そこで、gopher.vimから;GoCoverage に関する部分だけ切り出して、プラグイン化してみました。

https://github.com/kyoh86/vim-go-coverage

Plug kyoh86/vim-go-coverage (vim-plugの場合) とかすれば、一応 :GoCoverage が使えるようになります。

妄想

ところで、vim-goやgopher.vimみたいなフルセットプラグインも悪くないです。
これ入れるだけでGoの開発環境は安心、というパワーがあります。

だので、どうせならVim8の Package 機能を使って、次のような構成でGoプラグインができたりしないかな、と思っています

  • pack/vim-pack-go/
    • start/
      • (common go utils)
    • opt/
      • go-imports/
      • go-coverage/
      • ...

フルセットで使いたい人は、全部 packadd go-imports packadd go-coverage ... というように packadd すればいいですし、
僕のように一部の機能だけ使いたければ、該当のパッケージを packadd すればいいですよね。

誰か作ってくれないかな…